IAM を使用したフォルダのアクセス制御

Google Cloud Platform には Identity and Access Management(IAM)機能があり、特定の Google Cloud Platform リソースへのより詳細なアクセスが可能になり、他のリソースへの不要なアクセスを防ぐことができます。IAM を使用すると、セキュリティに関する最小権限の原則を導入できるため、リソースに対する必要なアクセス権のみを付与できます。

IAM では、IAM ポリシーを設定して、誰(どのユーザー)に、どのリソースに対するどのアクセス権(役割)を付与するかを制御することができます。IAM ポリシーは、特定の役割をユーザーに付与することで、そのユーザーに特定の権限を付与します。

このページでは、フォルダレベルで使用可能な Identity and Access Management(IAM)の役割について説明し、さらに Resource Manager API を使用してフォルダの IAM ポリシーを作成して管理する方法についても説明します。Cloud IAM の詳細については、IAM ドキュメントをご覧ください。特に、アクセス権の付与、変更、取り消しをご覧ください。

Folders の IAM 役割の概要

IAM 役割を簡単に設定できるように、以下の表に次の項目を示します。

  • 有効にするアクションのタイプ
  • アクションの実行に必要な役割
  • 役割を適用するリソースレベル
アクションのタイプ 必要な役割 リソースレベル
組織のフォルダを管理する フォルダ管理者 組織
1 つのフォルダと、そのフォルダに含まれるすべてのプロジェクトとフォルダを管理する フォルダ管理者 特定のフォルダ
フォルダの IAM ポリシーにアクセスして管理する フォルダ IAM 管理者 特定のフォルダ
新しいフォルダを作成する フォルダ作成者 新しいフォルダの場所の親リソース
フォルダとプロジェクトを移動する フォルダ移動 元のフォルダと新しいフォルダの両方の場所の親リソース
プロジェクトを新しいフォルダに移動する プロジェクト編集者またはプロジェクト オーナー 元のプロジェクトと新しいプロジェクトの両方の場所の親リソース
フォルダを削除する フォルダ編集者またはフォルダ管理者 特定のフォルダ

フォルダで IAM 役割と権限を使用する場合のベスト プラクティス

フォルダで使用する IAM 役割と権限を割り当てる場合には、次の点に注意してください。

  • 可能な限り、グループでメンバーを管理してください。
  • 基本の役割(オーナー / 編集者 / 閲覧者)の使用は最小限にとどめてください。その代わりに、最小権限の原則に従うために事前定義済みの役割を使用します。
  • フォルダ全体を管理するには、フォルダレベルで権限を割り当て、権限がプロジェクトで自動的に継承されるようにしてください。たとえば、部門の管理者グループには、フォルダに対するフォルダ管理者の役割を割り当てます。部門全体の権限を必要とするネットワーク管理者には、フォルダに対するネットワーク管理者の役割を割り当てます。
  • リソースをフォルダから移動する前に、権限がどのように変更されるかを慎重に確認してください。そうしないと、そのリソースへの権限を必要とする既存のアプリやワークフローが機能しなくなるおそれがあります。
  • フォルダに含まれる本番環境のプロジェクトを移動する前に、慎重に計画を立ててリソース階層をテストしてください。あらかじめ組織リソースの下にテストフォルダを作成し、対象となる階層のプロトタイプを作成する方法があります。

フォルダの役割と権限について

デフォルトの役割

フォルダを作成すると、作成者として完全に制御できるようにするために、フォルダのフォルダ管理者フォルダ編集者の役割が与えられます。これらの役割が提供する権限については、以下をご覧ください。これらのデフォルトの役割は、Cloud IAM ポリシーで通常通り変更できます。

フォルダ管理者の役割

フォルダ管理者の役割を使用すると、使用可能なすべてのフォルダ権限を付与できます。

付与する権限:

orgpolicy.policy.get リソースの組織ポリシーの取得権限
resourcemanager.folders.get フォルダまたは下位にあるフォルダの取得権限
resourcemanager.folders.create フォルダの作成権限
resourcemanager.folders.list リソース内のフォルダのリスト作成権限
resourcemanager.folders.move リソース間でのフォルダの移動権限
resourcemanager.folders.update フォルダ名の更新権限
resourcemanager.folders.delete フォルダの削除権限
resourcemanager.folders.undelete フォルダの削除の取り消し権限
resourcemanager.folders.getIamPolicy フォルダの IAM ポリシーの取得権限
resourcemanager.folders.setIamPolicy フォルダの IAM ポリシーの設定権限
resourcemanager.projects.get フォルダの取得権限
resourcemanager.projects.list リソース内のプロジェクトのリスト作成権限
resourcemanager.projects.move リソース間でのプロジェクトの移動権限
resourcemanager.projects.getIamPolicy プロジェクトの IAM ポリシーの取得権限
resourcemanager.projects.setIamPolicy プロジェクトの IAM ポリシーの設定権限

フォルダ IAM 管理者の役割

フォルダ IAM 管理者の役割が付与されたユーザーは、フォルダの IAM ポリシーを管理できます。

付与する権限:

resourcemanager.folders.get フォルダまたは下位にあるフォルダの取得権限
resourcemanager.folders.getIamPolicy フォルダの IAM ポリシーの取得権限
resourcemanager.folders.setIamPolicy フォルダの IAM ポリシーの設定権限

フォルダ作成者の役割

フォルダ作成者の役割を使用すると、階層の参照とフォルダの作成に必要な権限を付与できます。

付与する権限:

orgpolicy.policy.get リソースの組織ポリシーの取得権限
resourcemanager.folders.get フォルダの取得権限
resourcemanager.folders.list リソース内のフォルダのリスト作成権限
resourcemanager.folders.create フォルダの作成権限
resourcemanager.projects.get フォルダの取得権限
resourcemanager.projects.list リソース内のプロジェクトのリスト作成権限

フォルダ編集者の役割

フォルダ編集者の役割を使用すると、フォルダの IAM ポリシーの表示だけでなく、フォルダの変更に必要な権限を付与できます。

付与する権限:

orgpolicy.policy.get リソースの組織ポリシーの取得権限
resourcemanager.folders.get フォルダの取得権限
resourcemanager.folders.list リソース内のフォルダのリスト作成権限
resourcemanager.folders.update フォルダ名の更新権限
resourcemanager.folders.delete フォルダの削除権限
resourcemanager.folders.undelete フォルダの削除の取り消し権限
resourcemanager.folders.getIamPolicy フォルダに設定された IAM ポリシーの取得権限
resourcemanager.projects.get フォルダの取得権限
resourcemanager.projects.list リソース内のプロジェクトのリスト作成権限

フォルダ移動の役割

フォルダ移動の役割を付与すると、親の組織またはフォルダとの間でフォルダの移動を許可できます。

付与する権限:

resourcemanager.folders.move リソース間でのフォルダの移動権限
resourcemanager.projects.move リソース間でのプロジェクトの移動権限

フォルダ閲覧者の役割

フォルダ閲覧者の役割を付与すると、フォルダの取得、リソース内のフォルダとプロジェクトのリスト作成を許可できます。

付与する権限:

orgpolicy.policy.get リソースの組織ポリシーの取得権限
resourcemanager.folders.get フォルダまたは下位にあるフォルダの取得権限
resourcemanager.folders.list リソース内のフォルダのリスト作成権限
resourcemanager.projects.get フォルダの取得権限
resourcemanager.projects.list リソース内のプロジェクトのリスト作成権限

カスタム役割の作成

このトピックで説明した事前定義の役割を使用するだけでなく、必要に応じて権限を調整してカスタム役割を作成することもできます。Resource Manager で使用するカスタム役割を作成する場合には、次の点に注意してください。
  • resourcemanager.projects.get/list などのリスト権限と取得権限は、ペアで付与する必要があります。
  • カスタム役割に folders.list 権限と folders.get 権限を含める場合には、projects.listprojects.get も含める必要があります。
  • 組織、フォルダ、プロジェクトに setIamPolicy 権限を使用すると、ユーザーに他のすべての権限も付与されます。この権限を割り当てる場合には十分に注意してください。

フォルダの閲覧を許可する役割の付与

リスト権限を使用すると、フォルダの閲覧を許可できます。通常、付与が必要なリスト権限は 2 つあります。1 つは resourcemanager.folders.list で、リソース内のフォルダのリスト作成を許可します。もう 1 つは resourcemanager.projects.list で、組織またはフォルダ内のプロジェクトの閲覧を許可します。組織管理者は、この両方の権限で初期化されます。組織管理者の役割が割り当てられていないユーザーの場合、次のようになります。

  • フォルダ閲覧者およびフォルダ編集者の役割を通して、resourcemanager.folders.list を付与できます。
  • 閲覧者および参照者の役割を通して、resourcemanager.projects.list を付与できます。

組織のメンバーが組織の階層全体を閲覧できるようにするには、組織レベルでリスト権限を付与する必要があります。

フォルダの作成を許可する役割の付与

フォルダの作成を行うユーザーには、フォルダの作成場所より上の階層にあるリソースでフォルダ作成者の役割を付与する必要があります。フォルダ作成権限と一緒に閲覧権限を付与すると、階層内でフォルダを作成する場所に効率的に移動できるようになります。閲覧権限の詳細については、上のセクションをご覧ください。

フォルダ作成者は、ユーザーにフォルダの削除権限を付与しません。ただし、フォルダを作成したユーザーにはフォルダ編集者の役割が自動的に付与されます。フォルダ編集者の役割はフォルダを削除できます。

フォルダの移動を許可する役割の付与

親のリソースから別のリソースにフォルダを移動するには、移動元と移動先の両方の親リソースまたは共通の祖先に対してフォルダ移動の役割が必要です。

プロジェクトの移動を許可する役割の付与

プロジェクトをフォルダに移動するには、プロジェクトに対するプロジェクト編集者またはプロジェクト オーナーの役割が必要です。また、移動元と移動先のプロジェクト リソースに対してプロジェクト移動の役割が必要です。

組織が所有していないプロジェクトを組織に移動する場合には、要件が若干異なります。この場合、プロジェクトに対してプロジェクト編集者またはプロジェクト作成者の役割が必要です。また、組織に対してプロジェクト作成者の役割が必要です。

プロジェクトの作成を許可するフォルダ固有の役割の付与

プロジェクトを作成するには、プロジェクト作成の役割が必要です。ただし、組織全体にプロジェクト作成権限を付与するのではなく、特定のフォルダ内のプロジェクトのみを表示または作成できるように制限したほうが便利です。

フォルダ固有の権限を付与するには:

  1. 組織ノードレベル(たとえば、domain.com)でユーザーに組織閲覧者役割を付与します。
  2. 新しいフォルダを作成します。
  3. フォルダレベルでユーザーを IAM に追加し、フォルダ閲覧者プロジェクト作成者の役割を付与します。

これにより、大規模な組織のすべてのプロジェクトを表示できる権限を付与することなく、特定のフォルダ内のプロジェクトの作成をユーザーに許可できます。

このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

Resource Manager のドキュメント