複数サイトで利用する場合の権限設計のベストプラクティスは?
→ 実行できる操作と閲覧範囲を別ロールで定義し、共通化することでロール数を抑えることができます。
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個のロールが必要です。サイトの追加や担当者の異動に伴って管理対象も増えるため、運用が複雑になりやすいという課題があります。

閲覧範囲と操作権限を分けて定義する
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個削減できます。

サイト数が増えるほど、操作権限を共通化する効果も大きくなります。
本記事のケースでは、閲覧範囲の定義は「このロールのメンバーが作成したコンテンツのみ」に加えて、APIに対する個別権限による設定も可能です。
詳しくは、デフォルト権限と個別権限をご覧ください。
一部のメンバーに追加権限を付与する
サイトや役割によって必要な権限が一部異なる場合も、既存の操作権限用ロールを修正する必要はありません。
たとえば、サイトCのレビュアーにのみAPIの作成権限が必要な場合は、「APIの作成権限のみを持つロール」を追加で作成し、対象のメンバーに付与します。
権限の差分を個別のロールとして定義することで、既存のロールを共通化したまま、要件に応じて権限を拡張できます。