プロジェクトに新しいメンバーを追加する際は、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 を使用して、プロジェクト チームメンバーに付与されている Cloud Console の以前のロールを管理することもできます。
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 Console 権限
Google Cloud Console を使用して Compute Engine リソースにアクセスするには、プロジェクトに対して次の権限を持つ役割が必要です。
compute.projects.get
instanceAdmin としてのインスタンスへの接続
プロジェクト メンバーに roles/compute.instanceAdmin.v1
のロールを付与すると、そのメンバーは gcloud
ツールやブラウザからの SSH をはじめとする標準の Google Cloud ツールを使用して、仮想マシン(VM)インスタンスに接続できます。
gcloud
ツールまたはブラウザからの SSH を使用すると、公開鍵 / 秘密鍵のペアが自動的に生成され、公開鍵がプロジェクト メタデータに追加されます。メンバーがプロジェクト メタデータを編集する権限を保有していない場合、ツールによって代わりにメンバーの公開鍵がインスタンス メタデータに追加されます。
使用する既存の鍵のペアを持っているメンバーは、自分の公開鍵をインスタンスのメタデータに手動で追加できます。インスタンスに SSH 認証鍵を追加する方法と削除する方法については、こちらをご覧ください。
IAM とサービス アカウント
新しいカスタム サービス アカウントを作成し、IAM のロールをサービス アカウントに付与して、インスタンスのアクセスを制限します。IAM のロールとカスタム サービス アカウントは、以下の目的のために使用します。
- きめ細かい IAM のロールを使用して、Google Cloud APIs に対するインスタンスのアクセスを制限する。
- 各インスタンス、または一連のインスタンスに一意の ID を付与する。
- デフォルトのサービス アカウントのアクセスを制限する。
マネージド インスタンス グループと IAM
マネージド インスタンス グループでは、特に自動スケーリングの対象として構成されていると、ユーザーが直接操作しなくてもリソースによって操作が行われます。マネージド インスタンス グループは、サービス アカウント ID を使用して、インスタンス グループ内のインスタンスを作成、削除、管理します。詳細については、マネージド インスタンス グループと IAM のドキュメントを参照してください。
サポートされていない操作
IAM の役割を使用して、インスタンス グループに対するローリング更新を実行するためのアクセス権を付与することはできません。
このような操作の実行権限を付与するには、より広範囲なオーナー、編集者、または閲覧者のロールを使用します。
事前定義された 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 管理者のロール
名前 | 説明 | 権限 |
---|---|---|
roles/
|
Compute Engine リソースのすべてを管理する権限。 ユーザーがサービス アカウントとして実行するように構成されている仮想マシン インスタンスを管理する場合は、 |
|
Compute イメージ ユーザーのロール
名前 | 説明 | 権限 |
---|---|---|
roles/
|
イメージを一覧表示し、読み取る権限(イメージに対する他の権限はありません)。このロールをプロジェクト レベルで付与すると、ユーザーはプロジェクト内のすべてのイメージを一覧表示し、プロジェクト内のイメージに基づいて、インスタンスや永続ディスクなどのリソースを作成できます。 |
|
Compute インスタンス管理者(ベータ版)のロール
名前 | 説明 | 権限 |
---|---|---|
roles/
|
仮想マシン インスタンスを作成、変更、削除する権限。ディスクの作成、変更、削除を行う権限が含まれます。Shielded VMベータ版の設定を構成する権限も含まれます。 ユーザーがサービス アカウントとして実行するように構成されている仮想マシン インスタンスを管理する場合は、 たとえば、仮想マシン インスタンスのグループは管理しているが、ネットワークやセキュリティの設定の管理や、サービス アカウントとして実行するインスタンスの管理は行っていないというユーザーが社内にいる場合は、このロールをインスタンスが含まれている組織、フォルダ、プロジェクトあるいは個々のインスタンスに付与できます。 |
|
Compute インスタンス管理者(v1)のロール
名前 | 説明 | 権限 |
---|---|---|
roles/
|
Compute Engine インスタンス、インスタンス グループ、ディスク、スナップショット、イメージのすべてを管理する権限。すべての Compute Engine ネットワーキング リソースへの読み取り専用権権限。 このロールをユーザーにインスタンス レベルでのみ付与した場合、そのユーザーは新しいインスタンスを作成できません。 |
|
Compute ロードバランサ管理者のロール
名前 | 説明 | 権限 |
---|---|---|
roles/
ベータ版
|
ロードバランサを作成、変更、削除し、リソースを関連付ける権限。 たとえば、会社にロードバランサ、ロードバランサの SSL 証明書、SSL ポリシー、その他の負荷分散リソースを管理する負荷分散チームと、残りのネットワーク リソースを管理する別のネットワーク チームが存在する場合は、このロールを負荷分散チームのグループに付与します。 |
|
Compute ネットワーク管理者のロール
名前 | 説明 | 権限 |
---|---|---|
roles/
|
ネットワーキング リソース(ファイアウォール ルールと SSL 証明書を除く)を作成、変更、削除する権限。ネットワーク管理者の役割により、ファイアウォール ルール、SSL 証明書、インスタンス(それぞれのエフェメラル IP アドレスの表示用)への読み取り専用アクセスを付与できます。ネットワーク管理者ロールでは、インスタンスの作成、起動、停止、削除はできません。 たとえば、会社にファイアウォールと SSL 証明書を管理するセキュリティチームと、残りのネットワーク リソースを管理するネットワーク チームが存在する場合は、このロールをネットワーク チームのグループに付与します。 |
|
Compute ネットワーク ユーザーのロール
名前 | 説明 | 権限 |
---|---|---|
roles/
|
共有 VPC ネットワークへのアクセス権を付与します。 アクセス権を付与されたサービス オーナーは、ホスト プロジェクトに属する VPC ネットワークとサブネットを使用できます。たとえば、ネットワーク ユーザーは、ホスト プロジェクト ネットワークに属する VM インスタンスを作成できますが、ホスト プロジェクトでネットワークを削除できません。また、新しいネットワークを作成することもできません。 |
|
Compute ネットワーク閲覧者のロール
名前 | 説明 | 権限 |
---|---|---|
roles/
|
すべてのネットワーク リソースへの読み取り専用権限。 たとえば、ネットワーク構成を検査するソフトウェアがある場合は、そのソフトウェアのサービス アカウントにこのロールを付与できます。 |
|
Compute 組織ファイアウォール ポリシー管理者のロール
名前 | 説明 | 権限 |
---|---|---|
roles/
|
Compute Engine 組織のファイアウォール ポリシーのすべてを管理できる権限。 |
|
Compute 組織ファイアウォール ポリシー ユーザーのロール
名前 | 説明 | 権限 |
---|---|---|
roles/
|
Compute Engine ファイアウォール ポリシーを表示または使用して、組織またはフォルダに関連付けます。 |
|
Compute 組織セキュリティ ポリシー管理者のロール
名前 | 説明 | 権限 |
---|---|---|
roles/
|
Compute Engine 組織のセキュリティ ポリシーのすべてを管理できる権限。 |
|
Compute 組織セキュリティ ポリシー ユーザーのロール
名前 | 説明 | 権限 |
---|---|---|
roles/
|
Compute Engine セキュリティ ポリシーを表示または使用して、組織またはフォルダに関連付けます。 |
|
Compute 組織リソース管理者のロール
名前 | 説明 | 権限 |
---|---|---|
roles/
|
組織またはフォルダへの Compute Engine ファイアウォール ポリシーの関連付けのすべてを管理できる権限。 |
|
Compute OS 管理者ログインのロール
名前 | 説明 | 権限 |
---|---|---|
roles/
|
管理者ユーザーとして Compute Engine インスタンスにログインするアクセス権。 |
|
Compute OS Login のロール
名前 | 説明 | 権限 |
---|---|---|
roles/
|
標準ユーザーとして Compute Engine インスタンスにログインするアクセス権。 |
|
Compute OS Login の外部ユーザーのロール
名前 | 説明 | 権限 |
---|---|---|
roles/
|
組織レベルでのみ利用できます。 この組織に関連付けられた OS Login 情報を外部ユーザーが設定するアクセス権。この役割で、インスタンスへのアクセスは許可されません。外部ユーザーが SSH を使用してインスタンスにアクセスできるようにするには、OS Login のロールのいずれかが付与されている必要があります。 |
|
コンピューティング パケット ミラーリング管理者のロール
名前 | 説明 | 権限 |
---|---|---|
roles/
|
ミラーリングするリソースを指定します。 |
|
コンピューティング パケット ミラーリング ユーザーのロール
名前 | 説明 | 権限 |
---|---|---|
roles/
|
Compute Engine パケット ミラーリングを使用します。 |
|
Compute パブリック IP 管理者のロール
名前 | 説明 | 権限 |
---|---|---|
roles/
ベータ版 |
Compute Engine のパブリック IP アドレス管理を完全に制御できる権限。 |
|
Compute セキュリティ管理者のロール
名前 | 説明 | 権限 |
---|---|---|
roles/
|
ファイアウォール ルールと SSL 証明書を作成、変更、削除する権限。Shielded VMベータ版の設定を構成する権限も含まれます。 たとえば、会社にファイアウォールと SSL 証明書を管理するセキュリティチームと、残りのネットワーク リソースを管理するネットワーク チームが存在する場合は、このロールをセキュリティ チームのグループに付与します。 |
|
Compute ストレージ管理者のロール
名前 | 説明 | 権限 |
---|---|---|
roles/
|
ディスク、イメージ、スナップショットを作成、変更、削除する権限。 たとえば、プロジェクトのイメージを管理するユーザーがいて、そのユーザーにはプロジェクトの編集者のロールを与えたくない場合は、プロジェクトで使用するそのユーザーのアカウントにこのロールを付与します。 |
|
Compute 閲覧者のロール
名前 | 説明 | 権限 |
---|---|---|
roles/
|
Compute Engine リソースを取得して表示する読み取りアクセス権。そこに格納されたデータを読み取ることはできません。 たとえば、このロールを持つアカウントはプロジェクトのすべてのディスクの一覧を作成できますが、それらのディスク内のデータを読み取ることはできません。 |
|
Compute Shared VPC 管理者のロール
名前 | 説明 | 権限 |
---|---|---|
roles/
|
共有 VPC ホスト プロジェクトを管理する権限。特にホスト プロジェクトを有効にし、共有 VPC サービス プロジェクトをホスト プロジェクトのネットワークに関連付ける権限。 組織レベルでこのロールを付与できるのは組織管理者のみです。
Google Cloud では、共有 VPC ホスト プロジェクトのオーナーを共有 VPC 管理者にすることを推奨しています。共有 VPC 管理者は Compute ネットワーク ユーザーのロール( |
|
GuestPolicy 管理者のロール
名前 | 説明 | 権限 |
---|---|---|
roles/
ベータ版
|
GuestPolicy に対する完全な管理者アクセス権 |
|
GuestPolicy 編集者のロール
名前 | 説明 | 権限 |
---|---|---|
roles/
ベータ版
|
GuestPolicy リソースの編集者 |
|
GuestPolicy 閲覧者のロール
名前 | 説明 | 権限 |
---|---|---|
roles/
ベータ版
|
GuestPolicy リソースの閲覧者 |
|
PatchDeployment 管理者のロール
名前 | 説明 | 権限 |
---|---|---|
roles/
|
PatchDeployment に対する完全な管理者アクセス権 |
|
PatchDeployment 閲覧者のロール
名前 | 説明 | 権限 |
---|---|---|
roles/
|
PatchDeployment リソースの閲覧者 |
|
パッチジョブ エグゼキュータのロール
名前 | 説明 | 権限 |
---|---|---|
roles/
|
パッチジョブを実行するためのアクセス権。 |
|
パッチジョブ閲覧者のロール
名前 | 説明 | 権限 |
---|---|---|
roles/
|
パッチジョブを取得して一覧表示します。 |
|
DNS 管理者のロール
名前 | 説明 | 権限 |
---|---|---|
roles/
|
すべての Cloud DNS リソースへの読み取り / 書き込みアクセス権を付与します。 |
|
DNS ピアのロール
名前 | 説明 | 権限 |
---|---|---|
roles/
|
DNS ピアリング ゾーンを持つターゲット ネットワークへのアクセス権 |
|
DNS リーダーのロール
名前 | 説明 | 権限 |
---|---|---|
roles/
|
すべての Cloud DNS リソースへの読み取り専用アクセス権を付与します。 |
|
サービス アカウント管理者のロール
名前 | 説明 | 権限 |
---|---|---|
roles/
|
サービス アカウントを作成、管理します。 |
|
サービス アカウント作成のロール
名前 | 説明 | 権限 |
---|---|---|
roles/
|
サービス アカウントを作成するための権限。 |
|
サービス アカウント削除のロール
名前 | 説明 | 権限 |
---|---|---|
roles/
|
サービス アカウントを削除するための権限。 |
|
サービス アカウント キー管理者のロール
名前 | 説明 | 権限 |
---|---|---|
roles/
|
サービス アカウント キーの作成と管理(ローテーション)を行います。 |
|
サービス アカウント トークン作成者のロール
名前 | 説明 | 権限 |
---|---|---|
roles/
|
サービス アカウント権限を使用できます(OAuth2 アクセス トークンを作成し、blob または JWT などに署名します)。 |
|
サービス アカウント ユーザーのロール
名前 | 説明 | 権限 |
---|---|---|
roles/
|
サービス アカウントとして操作を行います。 |
|
Workload Identity ユーザーのロール
名前 | 説明 | 権限 |
---|---|---|
roles/
|
GKE ワークロードのサービス アカウントを使用できます |
|
次のステップ
- IAM の詳細について学習する。
- カスタム IAM ロールの作成および管理方法を学習する。
- IAM のロールをプロジェクト ユーザーに付与する。
- 特定の Compute Engine リソースに対して IAM ロールを付与する。
- IAM の役割をサービス アカウントに付与する。