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

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

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

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

権限と役割

IAM で Google Cloud のメソッドを呼び出すには、API リクエストを実行するアカウントに、そのリソースにアクセスするための適切な権限が付与されている必要があります。権限は、Google Cloud リソースに特定の操作を行うことをユーザーに許可します。たとえば、resourcemanager.projects.list 権限を持つユーザーは自身が所有するプロジェクトをリストでき、resourcemanager.projects.delete 権限を持つユーザーはプロジェクトを削除できます。

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

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

メソッド 必要な権限
resourcemanager.projects.create resourcemanager.projects.create
resourcemanager.projects.delete resourcemanager.projects.delete
resourcemanager.projects.get resourcemanager.projects.get
resourcemanager.projects.getIamPolicy resourcemanager.projects.getIamPolicy
resourcemanager.projects.list 権限は不要です。このメソッドは、呼び出し元が resourcemanager.projects.get 権限を持っているプロジェクトを一覧表示します。list() を呼び出すときにフィルタ(たとえば、byParent など)を指定すると、ユーザーが resourcemanager.projects.get 権限を持っていて、かつフィルタ条件を満たすプロジェクトが一覧表示されます。
resourcemanager.projects.setIamPolicy resourcemanager.projects.setIamPolicy
resourcemanager.projects.testIamPermissions 権限は不要です。
resourcemanager.projects.undelete resourcemanager.projects.undelete
resourcemanager.projects.update プロジェクトのメタデータを更新するには、resourcemanager.projects.update 権限が必要です。プロジェクトの親を更新してプロジェクトを組織に移動するには、組織に対する resourcemanager.projects.create 権限が必要です。
projects.move projects.move

基本のロールの使用

次の表に、プロジェクトにアクセスするために付与できる基本のロール、ロールの内容の説明、そのロールに含まれる権限を示します。絶対に必要な場合を除き、基本のロールは使用しないでください。これらの役割は非常に強力であり、Google Cloud 全サービスに適用される多数の権限が含まれています。基本のロールの使用が必要となる状況について詳しくは、Identity and Access Management に関するよくある質問をご覧ください。

IAM の事前定義されたロールはより詳細なもので、ユーザーのアクセス権限セットを慎重に管理できます。プロジェクト レベルで付与できる役割のリストについては、役割についてをご覧ください。カスタム役割を作成すると、ユーザー権限に対する制御を強化できます。

役割 説明 権限
roles/owner 全リソースへの完全アクセス権 すべてのリソースに対する完全な権限
roles/editor 全リソースへの編集アクセス権 すべてのリソースへの作成および更新のアクセス権
roles/viewer 全リソースへの読み取りアクセス権 すべてのリソースの取得と一覧表示のアクセス権
roles/browserベータ版プロジェクト内のリソースを参照するためのアクセス権
  • resourcemanager.organizations.get
  • resourcemanager.projects.get
  • resourcemanager.projects.getIamPolicy
  • resourcemanager.projects.list
  • resourcemanager.projectInvites.get

カスタム役割の作成

このトピックで説明した事前定義の役割を使用するだけでなく、必要に応じて権限を調整してカスタム役割を作成することもできます。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 の併用に関する現在の制限事項については、サポートされているプロダクトと制限事項をご覧ください。