コンテンツまでスキップ
  • 検索フィールドが空なので、候補はありません。

複数サイトで利用する場合の権限設計のベストプラクティスは?

→ 実行できる操作と閲覧範囲を別ロールで定義し、共通化することでロール数を抑えることができます。

microCMSで複数のサイトを管理する際に、サイトAの担当者にはサイトBのコンテンツを表示せず、担当するサイトのコンテンツのみ閲覧・編集できる状態にするには、適切なロール設計が必要です。

こうした複数サイト運用のケースにおいて、ロール数を抑えながら柔軟に権限を管理する方法を紹介します。複数サイトだけでなく、ブランドや部署ごとに閲覧範囲を分ける場合にも応用できます。

想定する運用

本記事では、1つのサービス内にサイトA・B・C用のAPIをそれぞれ作成し、運用するケースを想定します。

各サイトには「入稿者」と「レビュアー」が存在し、次の操作を行います。

  • 入稿者:コンテンツの下書き保存とレビュー申請を行う。公開はしない
  • レビュアー:レビューの承認とコンテンツの公開を行う

また、各担当者が閲覧できるのは、担当サイトのコンテンツのみとします。

サイトごとにロールを作成する場合の課題

まず考えられるのは、サイトと役割の組み合わせごとにロールを作成する方法です。

  • 入稿者(サイトA)
  • 入稿者(サイトB)
  • 入稿者(サイトC)
  • レビュアー(サイトA)
  • レビュアー(サイトB)
  • レビュアー(サイトC)

しかし、入稿者とレビュアーが異なるロールに所属することになるため、コンテンツの閲覧範囲を「このロールのメンバーが作成したコンテンツのみ」に設定すると、レビュアーは入稿者が作成したコンテンツを閲覧できません。その結果、レビューを行えない状態になります。

この問題を解消するには、同じサイトの担当者が共通して所属するロールを追加する必要があります。

  • 共通(サイトA)
  • 共通(サイトB)
  • 共通(サイトC)
  • 入稿者(サイトA)
  • 入稿者(サイトB)
  • 入稿者(サイトC)
  • レビュアー(サイトA)
  • レビュアー(サイトB)
  • レビュアー(サイトC)

この設計では、3サイトの運用に合計9個のロールが必要です。サイトの追加や担当者の異動に伴って管理対象も増えるため、運用が複雑になりやすいという課題があります。

roles-by-site-microcms

閲覧範囲と操作権限を分けて定義する

microCMSでは、1人のメンバーに複数のロールを付与できます。複数のロールで異なる権限が設定されている場合は、より権限の広い設定が優先されます。詳しくは、ロールの仕様をご確認ください。

この仕様を利用し、ロールを次の2種類に分けます。

  • 操作権限を定義するロール:入稿者、レビュアー
  • 閲覧範囲を定義するロール:サイトA担当者、サイトB担当者、サイトC担当者

役割ごとの操作権限をサイト間で共通化することで、必要なロール数を抑えられます。

操作権限を定義する

はじめに、実行できる操作を定義する「入稿者」と「レビュアー」のロールを作成します。これらのロールには閲覧権限を設定せず、操作権限のみを設定します。

入稿者
  • レビューの作成・編集:作成、および「編集・コメントのみ」を許可
  • メディアの作成・編集・削除:作成・編集・削除を許可
  • コンテンツの作成・編集・削除:下書き保存のみを許可
レビュアー
  • レビューの作成・編集:作成、および「承認+編集・コメント」を許可
  • メディアの作成・編集・削除:作成・編集・削除を許可
  • コンテンツの作成・編集・削除:公開を含む操作を許可

閲覧範囲を定義する

次に、サイトごとの閲覧範囲を定義するロールを作成します。

  • サイトA担当者:コンテンツの読み取りを「このロールのメンバーが作成したコンテンツのみ」に設定
  • サイトB担当者:サイトA担当者と同様に設定
  • サイトC担当者:サイトA担当者と同様に設定

ここではコンテンツの閲覧範囲のみを記載しています。メディアやメンバーの閲覧範囲についても、運用要件に応じて設定してください。

メンバーにロールを付与する

各メンバーには、担当サイトを示すロールと、役割を示すロールを組み合わせて付与します。

対象メンバー 付与するロール
サイトAの入稿者 サイトA担当者、入稿者
サイトAのレビュアー サイトA担当者、レビュアー
サイトBの入稿者 サイトB担当者、入稿者
サイトBのレビュアー サイトB担当者、レビュアー
サイトCの入稿者 サイトC担当者、入稿者
サイトCのレビュアー サイトC担当者、レビュアー

操作権限を持つメンバーでも、操作対象の閲覧権限がない場合は、操作はできません。

操作権限と閲覧範囲を分けてロール設計をする場合は、閲覧範囲のロールを設定し、必要な閲覧権限を付与してください。

この設計で必要になるのは、サイトごとの担当者ロール3個と、役割ごとの共通ロール2個の合計5個です。サイトと役割の組み合わせごとに作成する場合の9個から、4個削減できます。

roles-separated-scope-permission-microcms

サイト数が増えるほど、操作権限を共通化する効果も大きくなります。

本記事のケースでは、閲覧範囲の定義は「このロールのメンバーが作成したコンテンツのみ」に加えて、APIに対する個別権限による設定も可能です。

詳しくは、デフォルト権限と個別権限をご覧ください。

一部のメンバーに追加権限を付与する

サイトや役割によって必要な権限が一部異なる場合も、既存の操作権限用ロールを修正する必要はありません。

たとえば、サイトCのレビュアーにのみAPIの作成権限が必要な場合は、「APIの作成権限のみを持つロール」を追加で作成し、対象のメンバーに付与します。

権限の差分を個別のロールとして定義することで、既存のロールを共通化したまま、要件に応じて権限を拡張できます。