アクセス制御の概要

デフォルトでは、すべての Google Cloud Platform プロジェクトには、単一のユーザー(オリジナルのプロジェクト作成者)が設定されています。その他のユーザーはプロジェクト メンバーとして追加されるか、特定のリソースにバインディングされるまで、そのプロジェクトにアクセスできず、Compute Engine リソースにもアクセスできません。このページでは、新しいユーザーをプロジェクトに追加するさまざまな方法と、Compute Engine リソースのアクセス制御を設定する方法について説明します。

さらに、仮想マシン(VM)インスタンスでアプリケーションを実行し、そのアプリケーションから Compute Engine やその他の Google Cloud Platform API にアクセスする必要がある場合は、ユーザー認証情報ではなくサービス アカウントを使用して、アプリケーションを認証できます。

ユーザーのアクセス制御オプション

ユーザーが Compute Engine リソースを作成および管理できるようにするには、そのユーザーをプロジェクトまたは特定のリソースのチームメンバーとして追加し、Cloud Identity and Access Management の役割を使用して権限を付与します。

チームメンバーになることができるのは、有効な Google アカウント、Google グループ、サービス アカウント、G Suite ドメインのいずれかを持つ個別のユーザーです。プロジェクトまたはリソースにチームメンバーを追加するときは、そのメンバーに付与する役割を指定します。Cloud IAM には、事前定義された役割基本の役割カスタムの役割の 3 種類の役割があります。

リソースは、GCP リソース階層内の親リソースのポリシーを継承します。リソースで有効なポリシーは、そのリソースに設定されたポリシーとその親リソースから継承されたポリシーを組み合わせたものです。

Compute Engine の事前定義された役割

事前定義された役割は、関連する一連の権限を付与します。Compute Engine には、以下の事前定義された役割が用意されています。

役割のタイトル 機能 ターゲット ユーザー
Compute Engine イメージ ユーザー

別のプロジェクトのイメージを一覧表示して使用する権限。メンバーにこの役割を別の役割と一緒に付与すると、メンバーは別のプロジェクトのイメージを使用して新しいリソースを作成できるようになります。たとえば、この役割とインスタンス管理者の役割を付与すると、メンバーは別のプロジェクトのイメージを使用して VM インスタンスと永続ディスクを作成できるようになります。

マネージド インスタンス グループを作成する場合や、Deployment Manager を使用して VM インスタンスを作成する場合は、他のプロジェクトのイメージを使用できるようにするため、プロジェクトの Google API サービス アカウントにこの役割を付与する必要があることがあります。

  • サービス アカウント
  • システム管理者
  • デベロッパー
Compute Engine インスタンス管理者(v1)

Compute Engine インスタンス、インスタンス グループ、ディスク、スナップショット、イメージのすべてを管理できる権限。すべての Compute Engine ネットワーキング リソースへの読み取り専用アクセス権。

メンバーがサービス アカウントとして実行するように構成されている仮想マシン インスタンスを管理する場合は、サービス アカウントを VM インスタンスに割り当てることができるように、サービス アカウント ユーザーの役割も付与する必要があります。

  • システム管理者
  • デベロッパー
Compute Engine 管理者の役割

Compute Engine リソースのすべてを管理できる権限。ユーザーがサービス アカウントとして実行するように構成されている仮想マシン インスタンスを管理する場合は、roles/iam.serviceAccountUser の役割も付与する必要があります。

  • システム管理者
  • デベロッパー
Compute Engine ネットワーク管理者

ネットワーキング リソース(ファイアウォール ルールと SSL 証明書を除く)を作成、変更、削除するための権限。ネットワーク管理者の役割により、ファイアウォール ルール、SSL 証明書、インスタンス(それぞれのエフェメラル IP アドレスの表示用)への読み取り専用アクセスを付与できます。メンバーは、ネットワーク管理者の役割では、インスタンスの作成、起動、停止、削除はできません。

ネットワーク管理者
Compute Engine セキュリティ管理者

ファイアウォール ルールと SSL 証明書を作成、変更、削除するための権限。

セキュリティ管理者
Compute Engine ロードバランサ管理者ベータ版

ロードバランサと関連リソースを作成、変更、削除する権限。

ロードバランサ管理者
Compute Engine サービス アカウントのユーザー

サービス アカウントを使用するインスタンスの作成権限、およびディスクを接続して、サービス アカウントとして実行するようにすでに構成されているインスタンスにメタデータを設定する権限。

この役割には Compute Engine API にアクセスする権限がないため、この役割を単独では付与しないでください。この役割と別の役割(インスタンス管理者の役割など)をメンバーに付与してください。

  • システム管理者
  • デベロッパー
Compute Engine 閲覧者の役割

Compute Engine リソースを取得して表示するための読み取り専用アクセス権。そこに格納されたデータを読み取ることはできません。たとえば、この役割を持つアカウントはプロジェクトのすべてのディスクの一覧を作成できますが、それらのディスク内のデータは読み取ることができません。

システム管理者
Compute Engine ネットワーク ユーザー

共有 VPC ネットワークを使用する権限。具体的には、ホスト プロジェクトでリソースを使用する必要があるサービス オーナーにこの役割を付与します。アクセス権を付与されたサービス オーナーは、ホスト プロジェクトに属するサブネットワークとネットワークを使用できます。たとえば、ネットワーク ユーザーは、共有 VPC ホスト ネットワークに属する VM インスタンスを作成できますが、ホスト プロジェクトでネットワークを削除したり、新しいネットワークを追加したりすることはできません。

  • システム管理者
  • デベロッパー
Compute Engine ネットワーク閲覧者

すべてのネットワーク リソースへの読み取り専用アクセス権。たとえば、ネットワーク構成を検査するソフトウェアがある場合は、そのソフトウェアのサービス アカウントにネットワーク閲覧者の役割を付与します。

  • ネットワーク管理者
  • システム管理者
  • デベロッパー
  • サービス アカウント
Compute Engine ストレージ管理者ベータ版

ディスク、イメージ、スナップショットを作成、変更、削除するための権限。

たとえば、イメージを管理しているメンバーが社内にいて、プロジェクトに対する編集者の役割を付与したくない場合は、各メンバーのアカウントにこの役割を付与します。

  • システム管理者
  • デベロッパー
Compute Engine 共有 VPC 管理者

共有 VPC ホスト プロジェクトを管理する権限。特にホスト プロジェクトを有効にし、サービス プロジェクトをホスト プロジェクトのネットワークに関連付ける権限。この役割は、組織レベルでのみ付与することができます。

プロジェクト作成者

特定の役割が権限を付与する API メソッドのリストを確認するには、Compute Engine IAM の役割のドキュメントをご覧ください。

事前定義された役割のマトリックス

次の表に、Compute Engine の役割ごとに可能な操作の比較を示します。

可能な操作 インスタンス管理者(v1) イメージ ユーザー ネットワーク ユーザー ネットワーク閲覧者 ネットワーク管理者 セキュリティ管理者 ストレージ管理者 共有 VPC 管理者 Compute 管理者 Compute 閲覧者 ロードバランサ管理者
VM インスタンスの作成や削除 * × × × × × × × × ×
VM インスタンスへの SSH 接続 * × × × × × × × * × ×
VM インスタンスの一覧表示や取得 × × × × ×
イメージ、ディスク、スナップショットの作成や削除 × × × × × × ×
イメージの一覧表示や取得 × × × × × ×
インスタンス グループの作成や削除 * × × × × × × × ×
インスタンス グループの一覧表示や取得 × × × × ×
ロードバランサの作成と管理 × × × × × × × ×
VPN の作成と管理 × × × × × × × × ×
ネットワーク / サブネットワークのリソースの表示 × × × ×
ファイアウォール ルールの表示 × × × ×
ファイアウォールと SSL 証明書の作成と管理 × × × × × × × × ファイアウォールでは ×、SSL 証明書では 〇
共有 VPC ホスト プロジェクトの作成と管理 × × × × × × × × ×
共有 VPC ホスト プロジェクトでのネットワークとサブネットワークの使用 × × × × × × × × ×
ネットワークとサブネットワークの作成と管理 × × × × × × × × ×

* VM インスタンスがサービス アカウントとして実行できる場合は、サービス アカウント ユーザーの役割も付与してください。

特定の役割が権限を付与する API メソッドのリストを確認するには、Compute Engine IAM の役割のドキュメントをご覧ください。

Cloud IAM の基本の役割

Cloud IAM の基本の役割は、以前のプロジェクト オーナー、編集者、閲覧者の各役割に直接対応付けられています。一般に、可能な限り、事前定義されている役割を使用してください。ただし、Cloud IAM がまだサポートされていない場合は、基本の役割を使用して適切な権限を付与する必要があることがあります。

役割のタイトル 権限
Owner すべての閲覧者権限と編集者権限に加え、課金設定の変更、アクセス制御の管理、プロジェクトの削除が可能。
Editor すべての閲覧者権限に加え、リソースの作成、変更、削除が可能。
Viewer すべてのリソースに対する読み取り専用権限。リソースを変更する権限はありません。

基本の役割について詳しくは、基本の役割のドキュメントをご覧ください。

事前定義された役割や基本の役割がニーズを満たさない場合は、カスタムの役割を作成できます。

Compute Engine リソースの Cloud IAM ポリシー

Cloud IAM ポリシーを Compute Engine リソース(VM インスタンス、イメージ、ディスクなど)に直接接続することで、Compute Engine リソースへのアクセス権を付与できます。Cloud IAM ポリシーを使用すると、プロジェクト レベルで役割を管理する代わりに、あるいはこのレベルでの管理に加えて、リソースの Cloud IAM の役割を管理できます。これにより、最小限の権限の原則を柔軟に適用できます。つまり、作業の実施に必要な特定のリソースのみに限定して、共同編集者にアクセス権を付与できます。

Compute Engine リソースの Cloud IAM ポリシーを使用することで、次のような権限を付与できます。

  • ユーザーにリソースの特定のサブセットへのアクセスを許可します。Alice がプロジェクト内の一部のインスタンスを管理する必要があるとします。この場合、インスタンス レベルの Cloud IAM ポリシーを使用して、対象のインスタンスに限定した compute.instanceAdmin.v1 の役割を Alice に付与します。同じ役割をプロジェクトで Alice に付与した場合は、プロジェクト内のすべてのインスタンスを変更する権限が付与されることになります。
  • 強い権限を持つプロジェクト所有者でなくても、インスタンス、ディスク、イメージの管理者にこれらのリソースに対するアクセスを他のユーザーに付与できるようにします。Bob が特定のイメージに対する compute.storageAdmin の役割を付与されている開発者であるとします。Bob は、そのイメージに対する compute.imageUser の役割をチームメートに付与することにより、そのメンバーとイメージを共有できます。イメージを共有する際にはプロジェクトの Cloud IAM ポリシーを変更するため、通常はプロジェクトの所有者になる必要がありますが、Bob には Compute Engine リソースに対する Cloud IAM ポリシーが付与されているのでその必要はありません。

リソースは親リソースのポリシーも継承します。プロジェクト レベルでポリシーを設定すると、そのすべての子リソースでそのポリシーが継承されます。特定のリソースに対して有効なポリシーは、そのリソースに設定されたポリシーとリソース階層の上位から継承されるポリシーを組み合わせたものです。詳細については、Cloud IAM ポリシー階層をご覧ください。

組織のポリシー

G Suite メンバーの場合は、プロジェクトが組織リソースの一部である可能性があります。組織リソースは、G Suite アカウントに密接に関連付けられている Google Cloud Platform リソース階層のスーパーノードです。G Suite ドメインに組織リソースが作成されると、ドメインのメンバーが作成した Cloud Platform プロジェクトは、すべて組織リソースに属します。

組織では、Cloud リソース階層全体で許可する構成を制限するポリシーである組織ポリシーを実装できます。Compute Engine の場合は、次のポリシーを実装できます。

組織のポリシーを設定するには、組織の orgpolicy.policyAdmin の役割が付与されている必要があります。ポリシーに対する例外がある場合は、プロジェクト固有のオーバーライドを設定することもできます。

組織について詳しくは、組織のドキュメントをご覧ください。

組織のポリシーについて詳しくは、組織のポリシーのドキュメントをご覧ください。

ユーザーに VM インスタンスへの SSH アクセスを許可する

ユーザーに、SSH を使用して仮想マシン インスタンスに接続する機能のみを与え、Compute Engine リソースを管理する機能を付与しない場合は、プロジェクトにユーザーの公開鍵を追加するか、ユーザーの公開鍵を特定のインスタンスに追加します。この方法を使用すると、ユーザーをプロジェクト メンバーとして追加しなくても、特定のインスタンスへのアクセスを許可できるようになります。

SSH および SSH 認証鍵の管理について詳しくは、SSH 認証鍵の概要をご覧ください。

roles/compute.instanceAdmin.v1 役割をプロジェクト メンバーに付与すると、インスタンスがサービス アカウントとして実行されるように設定されていない限り、そのメンバーは SSH を使用してインスタンスに自動的に接続できます。インスタンスがサービス アカウントとして実行されるように設定されている場合、メンバーがインスタンスに接続するためには、roles/iam.serviceAccountUser 役割も付与する必要があります。

メンバーをプロジェクト オーナーまたは編集者として追加すると、メンバーはプロジェクトの仮想マシン インスタンスへの SSH アクセスも自動的にできるようになります。

VM インスタンス上で動作するアプリケーションに対するアクセス制御

インスタンスでアプリケーション コードを実行し、アプリケーションを他の Google Cloud Platform API に対して認証する必要がある場合は、サービス アカウントを作成し、これらのサービス アカウントに特定の Cloud IAM の役割を付与して、ユーザーの代理として他の Cloud Platform API との認証に使用できます。サービス アカウントは、ユーザーの認証情報を備えていない、サーバー間のやり取りに最適な特別アカウントです。

サービス アカウントについて詳しくは、サービス アカウントのドキュメントをご覧ください。

次のステップ

このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

Compute Engine ドキュメント