コラム
2019/12/06

Sitecoreのロール設計について

  • CMS
  • 運用

Sitecoreのロール設計についてCMS(Sitecore)を使ったシステム開発プロジェクトを進めるうえで、特徴的な工程・観点について紹介します。
今回は、Sitecore上のコンテンツに対するセキュリティ制御の要となる、ロール設計について紹介します。

リーフレットダウンロード  「CMS(Sitecore)」をもっと知りたい方はこちらへ

Sitecoreでの権限制御の要 ロールとは

ロールとは、Sitecore上の「役割・役職」のようなイメージで、必要に応じて自由に作成することができます。

Sitecoreでは、基本的にこのロールに対して様々な権限設定を行っていきます。

各ユーザアカウントは複数のロールに所属することができ、所属するロールに応じた操作権限が与えられることになります。

重要なポイントとして、ロールはさらに別のロールに所属することができます。

これを利用して階層的なロール設計を行っておくことで、運用後の変更や追加設定に対応しやすい権限制御の仕組みを実現することができます。

(例)部署別、役職別の権限制御を行いたい場合

以下のようなロールが必要になってきます。

  • 〇〇部課長ロール
  • 〇〇部一般社員ロール
  • ■■部課長ロール
  • ■■部一般社員ロール

上記4つのロールにそれぞれ権限設定を行うことでも制御の要件は実現できますが、例えばすべての一般社員に対し権限を追加したい、ということが起こった場合に〇〇部一般社員ロール、■■部一般社員ロール・・・とそれぞれに同じ変更を行う必要が生じます。

そこで、以下の論理的な分類に基づくロールを設けておきます。

  • 役職別ロール(課長ロール、一般社員ロール)
  • 部署別ロール(〇〇部ロール、■■部ロール)

「〇〇部一般社員ロール」は「一般社員ロール」と「〇〇部ロール」に所属するという形をとることで、 「一般社員ロール」に対する設定変更を行うだけですべての一般社員に対し権限の変更を反映できることになります。

予めこのような設計をおこなっておくことで、設定作業の負荷を減らすことができます。
また、複雑になりがちな権限制御を整理して考えられるようになります。
ロールは職級や部署など、現実の分類に基づくものにとらわれず作成することができます。

  • ※ユーザ別の権限設定
    ロールに対する権限設定ではなく、個々のユーザアカウントに対して個別の権限設定の設定することも可能です。
    ただし、初期の設定作業や運用後の変更作業が煩雑になるため、基本的にはユーザ個別の権限設定は使用せず、ロール設計で実現することがベストプラクティスとなります。

操作メニューとロール

Sitecoreは標準で様々な機能を有していますが、すべてのユーザに全機能を開放することは管理上、望ましくありません。

そのため、ロールに応じて利用可能な操作メニューを制限することが一般的です。

コンテンツツリー構造とロール

Sitecoreの管理画面では、コンテンツツリーとよばれるツリー構造の形式でアイテム(各コンテンツ)を管理します。
重要な点として、各ページのURLは基本的に、このツリー構造に基づいて決まります。

URLを決める以外に、ツリーの構造はコンテンツに対する編集権限制御に関わってきます。
たとえば、ツリーの特定階層配下のコンテンツは「〇〇部ロールのユーザしか編集できない」といったような権限制御を行うことができます。
どのロールのユーザが操作するコンテンツなのかを意識してツリー構造を設計することで、ロールに対する具体的な設定内容の設計をスムーズに進めることができます。

コンテンツツリー構造に対する権限制御は、トップページや各ページのハブとなる重要なページを誤って削除してしまうなどの事故を未然に防ぐうえでも重要となってきます。

ワークフローとロール

Sitecoreでは、電子ワークフロー機能を使用することができます。
公開用のページコンテンツを編集したあと、承認を得たコンテンツだけがWebサイト上に公開される仕組みになります。

ワークフロー自体の設計としては、以下の要素が挙げられます。

  • ワークフローの種類(承認ルート自体の種類)
  • ワークフローの状態(承認ルート内の各段階)
  • ワークフローの実行権限(どのロールが、どの状態のコンテンツに対し承認行為を行えるのか。)

Sitecoreでは、上記に加え、
コンテンツがどのワークフロー状態のときに、どのロールでどのような操作(編集、削除など)が行えるのかというような、コンテンツのワークフロー状態とロールの組み合わせで操作権限の細やかな制御も行うことができます。

WEBSASくん

まとめ

以上のように、ロールは様々な制御に関連する要素となります。

ツリー構造やワークフローとあわせてしっかりとロール設計を行う必要があります。