Identity and Access Management(IAM)の役割

このページでは、Identity and Access Management(IAM)の役割、および Compute Engine IAM の各役割に権限を付与する方法について説明します。IAM の役割をユーザーに割り当てる方法については、IAM のドキュメントのポリシーの管理を参照してください。Compute Engine のサービス アカウントに役割を割り当てる方法については、インスタンスのサービス アカウントの作成と有効化のドキュメントを参照してください。

はじめに

IAM とは

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

IAM では、IAM ポリシーを設定することで、誰(ユーザー)に、どのリソースに対する何(役割)の権限を付与するかを制御できます。IAM ポリシーでは、特定の役割をユーザーに付与して、ユーザーに特定の権限を与えます。たとえば、compute.networkAdmin の役割をユーザーに割り当てた場合、そのユーザーはプロジェクト内のネットワーク関連のリソースは制御できますが、インスタンスやディスクなどの他のリソースは管理できません。IAM を使用して、Cloud Platform Console の以前の役割をプロジェクト チームメンバーに付与することもできます。

使用可能な IAM の役割

IAM では、Compute Engine 内のすべての API メソッドで、API リクエストを行うアカウントがリソースを使用するための適切な権限を保持していることが要求されます。権限は、ユーザー、グループ、またはサービス アカウントに役割を付与するポリシーを設定することで付与されます。以前の役割、オーナー、編集者、閲覧者に加えて、Compute Engine の以下の役割をプロジェクトのユーザーに割り当てることができます。

次の表には、Compute Engine ユーザーに使用可能な IAM の役割が一覧表示されています。表は役割ごとに分割されています。たとえば、表内の最初の 2 つの役割はインスタンスの管理権限を許可し、その次の役割はネットワーク関連リソースの管理権限を許可します。最後に、セキュリティの役割が、ファイアウォールや SSL 証明書などのセキュリティ関連リソースの管理権限を許可します。

役割

役割名

roles/compute.instanceAdmin.v1

役割のタイトル

Compute Engine インスタンス管理者

目的

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

ユーザーがサービス アカウントとして実行するように設定されている仮想マシン インスタンスを管理する場合は、roles/iam.serviceAccountActor の役割も付与する必要があります。

たとえば、社内に Compute Engine リソースの管理を専門とするチームがある場合は、そのチームに roles/compute.instanceAdmin.v1 の役割を付与します。

許可される API メソッド

  • compute.addresses.{get|list|aggregatedList}
  • compute.autoscalers.*
  • compute.backendServices.{get|list}
  • compute.disks.*
  • compute.diskTypes.*
  • compute.firewalls.{get|list}
  • compute.forwardingRules.{get|list|aggregatedList}
  • compute.globalAddresses.{get|list}
  • compute.globalForwardingRules.{get|list}
  • compute.globalOperations.{get|list|aggregatedList}
  • compute.healthChecks.{get|list}
  • compute.httpHealthChecks.{get|list}
  • compute.httpsHealthChecks.{get|list}
  • compute.images.*
  • compute.instances.*
  • compute.instanceGroups.*
  • compute.instanceGroupManagers.*
  • compute.instanceTemplates.*
  • compute.loadBalancers.{get|list}
  • compute.licenses.{get|list}
  • compute.networks.{get|list|aggregatedList}
  • compute.machineTypes.{get|list}
  • compute.projects.{get|moveDisk|setCommonInstanceMetadata}
  • compute.regions.{get|list}
  • compute.regionOperations.{get|list}
  • compute.routes.{get|list}
  • compute.routers.{get|list}
  • compute.snapshots.*
  • compute.sslCertificates.{get|list}
  • compute.subnetworks.{get|list|aggregatedList}
  • compute.targetGlobalPools.{get|list}
  • compute.targetHttpProxies.{get|list}
  • compute.targetHttpsProxies.{get|list}
  • compute.targetInstances.{get|list}
  • compute.targetPools.{get|list}
  • compute.targetSslProxies.{get|list}
  • compute.targetVpnGateways.{get|list}
  • compute.urlMaps.{get|list}
  • compute.vpns.{get|list}
  • compute.vpnTunnels.{get|list}
  • compute.zones.{get|list}
  • compute.zoneOperations.{get|list}

この役割は、SSH を使用したインスタンスへの接続をユーザーに許可します。

役割名

roles/iam.serviceAccountActor

役割のタイトル

サービス アカウント アクター

目的

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

この役割は、compute.instanceAdmin の役割と一緒に付与する必要があります。

たとえば、サービス アカウントとして実行するインスタンスを社内で使用している場合は、それらのインスタンスに対する責任を持つインスタンス管理者にこの役割を付与します。

許可される API メソッド

Compute Engine API の権限を直接付与するわけではありませんが、以下の API メソッドには必要です。

  • compute.instances.attachDisk
  • compute.instances.insert
  • compute.instances.setMetadata
  • compute.instances.setServiceAccount
  • compute.instanceGroupManagers.{insert|setInstanceTemplate}

この役割は、サービス アカウントとして実行するように設定されているインスタンスへの SSH を使用した接続もユーザーに許可します。

役割名

roles/compute.imageUser

役割のタイトル

Compute Engine イメージ ユーザー

目的

プロジェクト内のリソースに対する他の権限のない、イメージを一覧表示し、読み取りする権限。compute.imageUser の役割が許可されると、ユーザーは、プロジェクト中でイメージをリストし、プロジェクト中のイメージに基づいて、インスタンスや永続ディスクなどのリソースを作成する能力が付与されます。

許可される API メソッド

  • compute.images.{get|list}

役割名

roles/compute.networkViewerBeta

役割のタイトル

Compute Engine ネットワーク閲覧者

目的

すべてのネットワーク リソースへの読み取り専用アクセス権。

たとえば、ネットワーク構成を検査するソフトウェアがある場合は、そのソフトウェアのサービス アカウントに compute.networkViewer の役割を許可できます。

許可される API メソッド

  • compute.{global}addresses.{get|list|aggregatedList}
  • compute.backendService.{get|list|getHealth}
  • compute.firewalls.{get|list}
  • compute.{global}forwardingRules.{get|list|aggregatedList}
  • compute.httpHealthChecks.{get|list}
  • compute.httpsHealthChecks.{get|list}
  • compute.instances.{get|list|aggregatedList| getSerialPortOutput}
  • compute.instanceGroups.{get|list|aggregatedList|listInstances}
  • compute.machineTypes.{get|list}
  • compute.networks.{get|list}
  • compute.projects.get
  • compute.regions.{get|list}
  • compute.routers.(get|getRouterStatus|list|aggregatedList}
  • compute.routes.{get|list}
  • compute.sslCertificates.{get|list}
  • compute.subnetworks.{get|list|aggregatedList}
  • compute.targetHttpProxies.{get|list}
  • compute.targetHttpsProxies.{get|list}
  • compute.targetInstances.{get|list|aggregatedList}
  • compute.targetPools.{get|list|aggregatedList|getHealth}
  • compute.targetSslProxies.{get|list}
  • compute.targetVpnGateways.{get|list|aggregatedList}
  • compute.urlMaps.get
  • compute.vpnTunnels.{get|list|aggregatedList}
  • compute.zones.{get|list}

役割名

roles/compute.networkAdmin

役割のタイトル

Compute Engine ネットワーク管理者

目的

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

たとえば、社内に、ファイアウォールと SSL 証明書を管理しているセキュリティ チームがあり、残りのネットワーキング リソースを管理するネットワーキング チームがある場合は、ネットワーキング チームのグループに compute.networkAdmin の役割を付与します。

許可される API メソッド

compute.networkViewer のすべての権限と以下の権限:

  • compute.{global}addresses.{insert|delete}
  • compute.backendServices.{insert|delete|update}
  • compute.firewalls.{get|list}
  • compute.{global}forwardingRules.{insert|delete|setTarget}
  • compute.httpHealthChecks.{insert|delete|update}
  • compute.httpsHealthChecks.{insert|delete|update}
  • compute.instanceGroupManagers.{recreateInstance|removeInstances| resize|
    deleteInstance|listManagedInstances|abandonInstance}
  • compute.networks.{insert|delete|switchToCustomMode}
  • compute.operations.get
  • compute.routers.{insert|delete| update}
  • compute.routes.{insert|delete}
  • compute.sslCertificates.{get|list}
  • compute.subnetworks.{insert|delete}
  • compute.targetHttpProxies.{insert|delete|setUrlMap}
  • compute.targetHttpsProxies.{insert|delete|setUrlMap| setSslCertificates}
  • compute.targetInstances.{insert|delete}
  • compute.targetPools.{addHealthcheck|addInstance|delete|insert| removeHealthCheck|removeInstance|setBackup}
  • compute.targetVpnGateways.{delete|insert}
  • compute.urlMaps.{insert|delete|validate|invalidateCache}
  • compute.vpnTunnels.{insert|delete}

役割名

roles/compute.securityAdmin

役割のタイトル

Compute Engine セキュリティ管理者

目的

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

たとえば、社内に、ファイアウォールと SSL 証明書を管理しているセキュリティ チームがあり、残りのネットワーキング リソースを管理するネットワーキング チームがある場合は、セキュリティ チームのグループに compute.securityAdmin の役割を付与します。

許可される API メソッド

  • compute.firewalls.*
  • compute.networks.{get|list}
  • compute.operations.get
  • compute.projects.get
  • compute.regions.*
  • compute.routes.{get|list}
  • compute.sslCertificates.*
  • compute.zones.*

役割名

roles/compute.storageAdminBeta

役割のタイトル

Compute Engine ストレージ管理者

目的

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

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

許可される API メソッド

  • compute.disks.*
  • compute.diskTypes.*
  • compute.images.*
  • compute.operations.get
  • compute.projects.{get|moveDisk}
  • compute.regions.*
  • compute.snapshots.*
  • compute.zones.*
  • compute.licenses.*

役割名

roles/compute.instanceAdminBeta

役割のタイトル

Compute Engine インスタンス管理者

目的

仮想マシン インスタンスを作成、変更、および削除するための権限。 ディスクを作成、変更、および削除するための権限が含まれます。

ユーザーがサービス アカウントとして実行するように設定されている仮想マシン インスタンスを管理する場合は、iam.serviceAccountActor の役割も付与する必要があります。

たとえば、社内に仮想マシン インスタンスのグループを管理しているメンバーがいても、ネットワークやセキュリティ設定の管理や、サービス アカウントとして実行するインスタンスの管理はしていない場合はこの役割を許可します。

許可される API メソッド

  • compute.{global}addresses.{get|list|aggregatedList}
  • compute.autoscalers.*
  • compute.disks.{insert|delete|get|list|aggregatedList}
  • compute.disksTypes.{get|list|aggregatedList}
  • compute.globalOperations.{get|list}
  • compute.licenses.{list}
  • compute.machineTypes.{get|list|aggregatedList}
  • compute.networks.{get|list}
  • compute.images.{get|list}
  • compute.instances.*
  • compute.instanceGroups.*
  • compute.instanceGroupManagers.*
  • compute.instanceTemplates.*
  • compute.projects.get
  • compute.regions.{get|list}
  • compute.regionOperations.{get|list}
  • compute.subnetworks.{get|list|aggregatedList}
  • compute.zones.{get|list}
  • compute.zoneOperations.{get|list}

この役割は、SSH を使用したインスタンスへの接続もユーザーに許可します。

1 人のユーザーに同一プロジェクトにおける複数の役割を付与できます。たとえば、ネットワーキング チームがファイアウォール ルールを管理している場合、その役割を別のセキュリティ チームに委ねる代わりに、compute.networkAdmincompute.securityAdmin の役割をネットワーキング チームの Google グループに付与することができます。

serviceAccountActor の役割

compute.instanceAdmin の役割とともに付与した場合、iam.serviceAccountActor の役割は、サービス アカウントを使用するインスタンスの作成能力と管理能力をユーザーに付与します。特に、iam.serviceAccountActorcompute.instanceAdmin の役割を一緒に付与することで、ユーザーに以下の権限を付与します。

  • サービス アカウントとして実行するインスタンスの作成。
  • サービス アカウントとして実行するインスタンスへの永続ディスクの接続。
  • サービス アカウントとして実行するインスタンスへのインスタンス メタデータの設定。
  • サービス アカウントとして実行するインスタンスへの SSH を使用した接続。
  • サービス アカウントとして実行するインスタンスの再設定。

iam.serviceAccountActor の役割は、次の 2 つの方法のいずれかで付与できます。

  • [推奨] 特定のサービス アカウントでユーザーに役割を付与する。この場合、ユーザーは、iam.serviceAccountActor であるサービス アカウントにはアクセスできますが、iam.serviceAccountActor ではないその他のサービス アカウントにはアクセスできません。

  • プロジェクト レベルでユーザーに役割を付与する。ユーザーは、プロジェクト内のすべてのサービス アカウント(将来的に作成されるサービス アカウントを含む)にアクセスできます。

サービス アカウントに精通していない場合は、サービス アカウントの詳細を確認してください

instanceAdmin でのインスタンスへの接続

ユーザーに roles/compute.instanceAdmin の役割を付与すると、ユーザーは標準の Google Cloud Platform ツール(gcloudブラウザからの SSH など)を使用して、仮想マシン インスタンスに接続できます。

gcloud コマンドライン ツールまたはブラウザからの SSH を使用すると、公開鍵/ 秘密鍵のペアが自動的に生成されて、公開鍵がプロジェクト メタデータに追加されます。ユーザーがプロジェクト メタデータを編集する権限を保有していない場合、ツールによって代わりにユーザーの公開鍵がインスタンス メタデータに追加されます。

使用する既存の鍵のペアを持っているユーザーは、それぞれの公開鍵をインスタンスのメタデータに手動で追加できます。 インスタンスから SSH キーを追加および削除する方法の詳細を確認する。

IAM とサービス アカウント

新しいカスタム サービス アカウントを作成し、IAM の役割をサービス アカウントに付与して、インスタンスのアクセスを制限します。IAM の役割とカスタム サービス アカウントは、以下の目的のために使用します。

  • 詳細な IAM の役割を使用して、インスタンスから Cloud Platform API へのアクセスを制限する。
  • 各インスタンス、または一連のインスタンスに一意の ID を付与する。
  • デフォルトのサービス アカウントのアクセスを制限する。

サービス アカウントの詳細を確認する

管理対象インスタンス グループと IAM

管理対象インスタンス グループは、特に autoscaled に設定されている場合に、ユーザーが直接操作しなくても、アクションを実行するリソースです。管理対象インスタンス グループは、サービス アカウント ID を使用して、インスタンス グループ内のインスタンスを作成、削除、管理します。詳細については、管理対象インスタンス グループと IAM のドキュメントを参照してください。

サポートされていない操作

IAM の役割を使用して、インスタンス グループに対するローリング更新を実行するためのアクセス権を付与することはできません。

このような操作の実行権限を付与するには、より広範囲なオーナー、編集者、または閲覧者の役割を使用します。

報告されている問題

  • 一部の IAM の役割はまだベータ版なので、IAM はすべての使用可能なクライアントによってサポートされない可能性があります。gcloud コマンドライン ツールまたは Google Cloud Platform API を直接使用して、IAM を使用することをおすすめします。

次のステップ

外出先でもリソースをモニタリング

Google Cloud Console アプリを入手して、プロジェクトの管理にお役立てください。

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

Compute Engine ドキュメント