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.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.get
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

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

このロールを付与できる最下位レベルのリソース:

  • プロジェクト

resourcemanager.projects.get

resourcemanager.projects.getIamPolicy

resourcemanager.projects.setIamPolicy

roles/browser

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

このロールを付与できる最下位レベルのリソース:

  • プロジェクト

resourcemanager.folders.get

resourcemanager.folders.list

resourcemanager.organizations.get

resourcemanager.projects.get

resourcemanager.projects.getIamPolicy

resourcemanager.projects.list

基本ロール

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

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

カスタムロールの作成

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

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

プロジェクト レベルでユーザーにロールを付与するには、Google Cloud コンソール、Cloud Resource Manager API、Google Cloud CLI を使用します。詳しい手順については、アクセス権の付与、変更、取り消しをご覧ください。

デフォルトの役割

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

VPC Service Controls

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

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