プロジェクトに新しいメンバーを追加する際は、Identity and Access Management(IAM)ポリシーを使用して、そのメンバーに 1 つ以上の IAM ロールを付与できます。各 IAM ロールには、メンバーに特定のリソースへのアクセスを許可する権限が含まれています。
Compute Engine には、このページで説明する一連の事前定義された IAM ロールが用意されています。また、ニーズに直接対応する権限のサブセットを含むカスタムロールを作成することもできます。
各メソッドに対して必要な権限については、Compute Engine API のリファレンス ドキュメントをご覧ください。
アクセス権の付与の詳細については、次のページをご覧ください。
- プロジェクト レベルで IAM ポリシーを設定するには、IAM ドキュメントのリソースへのアクセス権の付与、変更、取り消しをご覧ください。
- 特定の Compute Engine リソースにポリシーを設定するには、Compute Engine リソースへのアクセス権の付与をご覧ください。
- Compute Engine サービス アカウントにロールを割り当てる方法については、インスタンスのサービス アカウントの作成と有効化をご覧ください。
始める前に
- IAM のドキュメントをお読みください。
IAM とは
Google Cloud には IAM 機能があります。これにより、特定の Google Cloud リソースに対するアクセス権を詳細に設定できるため、他のリソースへの不正なアクセスを防ぐことができます。IAM を使用すると、セキュリティに関する最小権限の原則を導入できるため、リソースに対する必要なアクセス権のみ付与できます。
IAM では、IAM ポリシーを設定して、誰(どのユーザー)に、どのリソースに対するどのアクセス権(ロール)を付与するかを制御できます。IAM ポリシーは、特定のロールをプロジェクト メンバーに付与することで、その ID に特定の権限を付与します。たとえば、プロジェクトなどの特定のリソースに対し、Google アカウントに roles/compute.networkAdmin
のロールを割り当てた場合、そのアカウントはプロジェクト内のネットワーク関連のリソースは制御できるようになりますが、インスタンスやディスクなどの他のリソースは管理できません。また、IAM を使用して、プロジェクト チームメンバーに付与されている Google Cloud コンソールの以前のロールを管理することもできます。
serviceAccountUser のロール
roles/compute.instanceAdmin.v1
と roles/iam.serviceAccountUser
の両方が付与されたメンバーは、サービス アカウントを使用するインスタンスを作成、管理できます。具体的には、roles/iam.serviceAccountUser
と roles/compute.instanceAdmin.v1
の両方が付与されたメンバーには次の権限が設定されます。
- サービス アカウントとして実行するインスタンスの作成。
- サービス アカウントとして実行するインスタンスへの永続ディスクの接続。
- サービス アカウントとして実行するインスタンスへのインスタンス メタデータの設定。
- サービス アカウントとして実行するインスタンスへの SSH を使用した接続。
- サービス アカウントとして実行するインスタンスの再構成。
roles/iam.serviceAccountUser
は、次の 2 つの方法のいずれかで付与できます。
(推奨)特定のサービス アカウントに基づいてメンバーに役割を付与する。これにより、この役割が付与されたメンバーは自身が
iam.serviceAccountUser
となっているサービス アカウントにはアクセスできますが、iam.serviceAccountUser
となっていない他のサービス アカウントにはアクセスできません。プロジェクト レベルでメンバーにロールを付与する。このメンバーは、プロジェクト内のすべてのサービス アカウントにアクセスできます。今後作成されるサービス アカウントにもアクセスできます。
サービス アカウントに精通していない場合は、サービス アカウントの詳細を確認してください。
Google Cloud コンソールの権限
Google Cloud コンソールを使用して Compute Engine リソースにアクセスするには、プロジェクトに対して次の権限を持つロールが必要です。
compute.projects.get
instanceAdmin としてのインスタンスへの接続
プロジェクト メンバーに roles/compute.instanceAdmin.v1
のロールを付与すると、そのメンバーは gcloud CLI やブラウザからの SSH をはじめとする標準の Google Cloud ツールを使用して、仮想マシン(VM)インスタンスに接続できます。
メンバーが gcloud CLI またはブラウザからの SSH を使用すると、公開鍵 / 秘密鍵のペアが自動的に生成され、公開鍵がプロジェクト メタデータに追加されます。メンバーがプロジェクト メタデータを編集する権限を保有していない場合、ツールによって代わりにメンバーの公開鍵がインスタンス メタデータに追加されます。
使用する既存の鍵のペアを持っているメンバーは、自分の公開鍵をインスタンスのメタデータに手動で追加できます。インスタンスへの SSH 認証鍵の追加の詳細について確認します。
IAM とサービス アカウント
新しいカスタム サービス アカウントを作成し、IAM のロールをサービス アカウントに付与して、インスタンスのアクセスを制限します。IAM のロールとカスタム サービス アカウントは、以下の目的のために使用します。
- きめ細かい IAM のロールを使用して、Google Cloud APIs に対するインスタンスのアクセスを制限する。
- 各インスタンス、または一連のインスタンスに一意の ID を付与する。
- デフォルトのサービス アカウントのアクセスを制限する。
マネージド インスタンス グループと IAM
マネージド インスタンス グループ(MIG)は、ユーザーの直接操作なしでユーザーに代わってアクションを実行するリソースです。たとえば、MIG はグループに対して VM の追加と削除を行うことができます。
MIG の一部として Compute Engine により実行されるオペレーションはすべて、プロジェクトの Google API サービス エージェントによって実行されます。このサービス エージェントは、PROJECT_ID@cloudservices.gserviceaccount.com
のようなメールアドレスを持っています。
デフォルトでは、Google API サービス エージェントにはプロジェクト レベルで編集者のロール(roles/editor
)が付与されています。このロールは、グループの構成に基づいてリソースを作成するのに十分な権限を持っています。Google API サービス エージェントのアクセス権をカスタマイズする場合は、Compute インスタンス管理者(v1)ロール(roles/compute.instanceAdmin.v1
)と、必要に応じてサービス アカウント ユーザーのロール(roles/iam.serviceAccountUser
)を付与します。サービス アカウント ユーザーのロールは、MIG がサービス アカウントとして実行できる VM を作成する場合にのみ必要です。
なお、Google API サービス エージェントは Deployment Manager などの他のプロセスでも使用されます。
MIG の作成やインスタンス テンプレートの更新を行うと、Compute Engine は、Google API サービス エージェントに次のロールと権限が付与されていることを確認します。
- サービス アカウント ユーザーのロール(サービス アカウントとして実行できるインスタンスを作成する場合には重要)。
- イメージ、ディスク、VPC ネットワーク、サブネットなどのインスタンス テンプレートから参照されるすべてのリソースに対する権限。
事前定義された Compute Engine IAM のロール
IAM では、Compute Engine API のすべての API メソッドで、API リクエストを行う ID がリソースの使用に必要な権限を保持していることが要求されます。権限を付与するには、プロジェクトのメンバー(ユーザー、グループ、またはサービス アカウント)にロールを付与するポリシーを設定します。
基本ロール(閲覧者、編集者、オーナー)やカスタムロールに加え、Compute Engine で以下の事前定義ロールもプロジェクトのメンバーに割り当てることができます。
1 人のプロジェクト メンバーに、同一リソースにおける複数のロールを付与できます。たとえば、ネットワーキング チームがファイアウォール ルールも管理している場合、roles/compute.networkAdmin
と roles/compute.securityAdmin
の両方のロールをネットワーキング チームの Google グループに付与できます。
次の表に、事前定義された Compute Engine IAM ロールと、それぞれのロールに含まれる権限を記載します。各ロールには、特定のタスクに適した一連の権限が含まれています。たとえば、インスタンス管理者のロールはインスタンスを管理する権限を付与することができ、ネットワーク関連のロールにはネットワーク関連のリソースを管理する権限が含まれています。また、セキュリティ関連のロールには、セキュリティ関連のリソース(ファイアウォール証明書、SSL 証明書など)を管理する権限が含まれています。
Compute Admin role
Details | Permissions |
---|---|
Compute Admin( Full control of all Compute Engine resources.
If the user will be managing virtual machine instances that are configured
to run as a service account, you must also grant the
Lowest-level resources where you can grant this role:
|
compute.*
|