IAM を使用したプロジェクトのアクセス制御

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

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

このページでは、プロジェクトのアクセス管理に使用できる IAM の権限とロールについて説明します。IAM の詳細については、IAM のドキュメントをご覧ください。特に、アクセス権の付与、変更、取り消しをご覧ください。

権限と役割

リソースへのアクセスを制御するために、Google Cloud では API リクエストを行うアカウントに適切な IAM ロールが必要です。IAM ロールには、ユーザーが Google Cloud リソースで特定のアクションを実行できる権限が含まれています。たとえば、resourcemanager.organizations.list 権限を持つユーザーは自身が所有する組織をリストでき、resourcemanager.projects.delete 権限を持つユーザーはプロジェクトを削除できます。

ユーザーには、直接権限を付与するのではなく、役割を割り当てます。役割には、1 つ以上の権限が組み込まれています。これらのロールは、特定のリソースで付与されますが、リソース階層内にあるそのリソースのすべての子リソースにも適用されます。

権限

プロジェクトを管理するには、呼び出し元に次の権限が含まれるロールが必要です。このロールは、プロジェクトを含む組織またはフォルダに付与されます。

メソッド 必要な権限
resourcemanager.projects.create resourcemanager.projects.create
resourcemanager.projects.delete resourcemanager.projects.delete
resourcemanager.projects.get resourcemanager.projects.get
この権限を付与すると、Billing API メソッド billing.projects.getBillingInfo を介してプロジェクトに関連付けられた請求先アカウントの名前を取得するためのアクセスも許可します。
resourcemanager.projects.getIamPolicy resourcemanager.projects.getIamPolicy
resourcemanager.projects.list resourcemanager.projects.list
resourcemanager.projects.search resourcemanager.projects.search
resourcemanager.projects.setIamPolicy resourcemanager.projects.setIamPolicy
resourcemanager.projects.testIamPermissions 権限は不要です。
resourcemanager.projects.undelete resourcemanager.projects.undelete
resourcemanager.projects.patch プロジェクトのメタデータを更新するには、resourcemanager.projects.update 権限が必要です。プロジェクトの親を更新してプロジェクトを組織に移動するには、組織に対する resourcemanager.projects.create 権限が必要です。
projects.move projects.move

事前定義ロールの使用

IAM の事前定義ロールを使用すると、ユーザーがアクセス権を持つ一連の権限を慎重に管理できます。プロジェクト レベルで付与できるロールの一覧については、ロールについてをご覧ください。

次の表に、プロジェクトへのアクセス権を付与するために使用できる事前定義ロールを示します。各ロールには、ロールが行うことの説明と、そのロールが含む権限を記載します。

役割 役割名 説明 権限
roles/resourcemanager.projectCreator プロジェクト作成者

新しいプロジェクトを作成するためのアクセス権を付与します。プロジェクトを作成したユーザーには、そのプロジェクトのオーナーのロールが自動的に付与されます。

  • resourcemanager.organizations.get
  • resourcemanager.projects.create
roles/resourcemanager.projectDeleter プロジェクト削除

Google Cloud プロジェクトを削除するためのアクセス権を付与します。

  • resourcemanager.projects.delete
roles/resourcemanager.projectMover プロジェクト移動

プロジェクトの更新と移動に必要な権限を付与します。

  • resourcemanager.projects.get
  • resourcemanager.projects.move
  • resourcemanager.projects.update
roles/resourcemanager.projectIamAdmin プロジェクト IAM 管理者

プロジェクトの IAM ポリシーを管理する権限を付与します。

  • resourcemanager.projects.get
  • resourcemanager.projects.getIamPolicy
  • resourcemanager.projects.setIamPolicy
roles/browser ブラウザ

フォルダ、組織、IAM ポリシーなど、プロジェクトの階層を参照するための読み取りアクセス権。このロールには、プロジェクトのリソースを表示する権限は含まれていません。

  • resourcemanager.folders.get
  • resourcemanager.folders.list
  • resourcemanager.organizations.get
  • resourcemanager.projects.get
  • resourcemanager.projects.getIamPolicy
  • resourcemanager.projects.list

基本ロール

絶対に必要な場合を除き、基本のロールは使用しないでください。これらの役割は非常に強力であり、Google Cloud 全サービスに適用される多数の権限が含まれています。基本のロールの使用が必要となる状況について詳しくは、Identity and Access Management に関するよくある質問をご覧ください。

役割 説明 権限
roles/owner 全リソースへの完全アクセス権 すべてのリソースに対する完全な権限
roles/editor 全リソースへの編集アクセス権 すべてのリソースへの作成および更新のアクセス権
roles/viewer 全リソースへの読み取りアクセス権 すべてのリソースの取得と一覧表示のアクセス権

カスタム役割の作成

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

プロジェクト レベルのアクセス制御

Google Cloud Console、Resource Manager API、gcloud コマンドライン ツールを使用して、プロジェクト レベルでユーザーに役割を付与できます。手順については、プロジェクト メンバーに対するアクセス権の付与、変更、取り消しをご覧ください。

デフォルトの役割

プロジェクトを作成すると、作成者として完全に制御できるようにするために、プロジェクトの roles/owner の役割が付与されます。このデフォルトのロールは、IAM ポリシーで通常どおり変更できます。

VPC Service Controls

VPC Service Controls を使用すると、Resource Manager API 使用時のセキュリティをさらに強化できます。VPC Service Controls の詳細については、VPC Service Controls の概要をご覧ください。

VPC Service Controls と Resource Manager の併用に関する現在の制限事項については、サポートされているプロダクトと制限事項をご覧ください。