Compute Engine IAM の役割

このページでは、Identity and Access Management(IAM)の役割、および Compute Engine IAM の各役割に権限を付与する方法について説明します。プロジェクトに新しいプロジェクト メンバーを追加するときに、IAM ポリシーを使用して新しいメンバーに IAM 役割を割り当てることができます。ポリシーの設定方法については、IAM ドキュメントのポリシーの管理をご覧ください。Compute Engine のサービス アカウントに役割を割り当てる方法については、インスタンスのサービス アカウントの作成と有効化のドキュメントをご覧ください。

個々の API メソッドに対する IAM 権限の完全なリストもご覧ください。

始める前に

IAM とは

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

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

Compute Engine IAM の役割

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

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

インスタンス管理者の役割

役割名 説明 権限
roles/compute.instanceAdmin.v1

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

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

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

  • compute.acceleratorTypes.get
  • compute.acceleratorTypes.list
  • compute.addresses.get
  • compute.addresses.list
  • compute.addresses.use
  • compute.autoscalers.*
  • compute.backendBuckets.get
  • compute.backendBuckets.list
  • compute.backendServices.get
  • compute.backendServices.list
  • compute.clientSslPolicies.get
  • compute.clientSslPolicies.list
  • compute.disks.*
  • compute.diskTypes.get
  • compute.diskTypes.list
  • compute.firewalls.get
  • compute.firewalls.list
  • compute.forwardingRules.get
  • compute.forwardingRules.list
  • compute.globalAddresses.get
  • compute.globalAddresses.list
  • compute.globalAddresses.use
  • compute.globalForwardingRules.get
  • compute.globalForwardingRules.list
  • compute.globalOperations.get
  • compute.globalOperations.list
  • compute.healthChecks.get
  • compute.healthChecks.list
  • compute.httpHealthChecks.get
  • compute.httpHealthChecks.list
  • compute.httpsHealthChecks.get
  • compute.httpsHealthChecks.list
  • compute.images.*
  • compute.instanceGroupManagers.*
  • compute.instanceGroups.*
  • compute.instances.*
  • compute.instanceTemplates.*
  • compute.interconnectAttachments.get
  • compute.interconnectAttachments.list
  • compute.interconnectLocations.get
  • compute.interconnectLocations.list
  • compute.interconnects.get
  • compute.interconnects.list
  • compute.licenses.*
  • compute.licenseCodes.*
  • compute.machineTypes.get
  • compute.machineTypes.list
  • compute.networkEndpointGroups.*
  • compute.networks.get
  • compute.networks.list
  • compute.networks.use
  • compute.networks.useExternalIp
  • compute.operations.get
  • compute.operations.list
  • compute.regionOperations.get
  • compute.regionOperations.list
  • compute.regions.get
  • compute.regions.list
  • compute.routers.get
  • compute.routers.list
  • compute.routes.get
  • compute.routes.list
  • compute.snapshots.*
  • compute.sslCertificates.get
  • compute.sslCertificates.list
  • compute.sslPolicies.get
  • compute.sslPolicies.list
  • compute.subnetworks.get
  • compute.subnetworks.list
  • compute.subnetworks.use
  • compute.subnetworks.useExternalIp
  • compute.targetHttpProxies.get
  • compute.targetHttpProxies.list
  • compute.targetHttpsProxies.get
  • compute.targetHttpsProxies.list
  • compute.targetInstances.get
  • compute.targetInstances.list
  • compute.targetPools.get
  • compute.targetPools.list
  • compute.targetSslProxies.get
  • compute.targetSslProxies.list
  • compute.targetTcpProxies.get
  • compute.targetTcpProxies.list
  • compute.targetVpnGateways.get
  • compute.targetVpnGateways.list
  • compute.urlMaps.get
  • compute.urlMaps.list
  • compute.vpnTunnels.get
  • compute.vpnTunnels.list
  • compute.zoneOperations.get
  • compute.zoneOperations.list
  • compute.zones.get
  • compute.zones.list
  • compute.projects.get
  • compute.projects.setCommonInstanceMetadata
  • resourcemanager.projects.get
  • resourcemanager.projects.list
  • servicemanagement.projectSettings.get
  • serviceusage.services.get
  • serviceusage.quotas.get

サービス アカウント アクターの役割

役割名 説明 権限
roles/iam.serviceAccountActor サービス アカウントの認証情報を取得して、サービス アカウントとしてオペレーションを行うためのアクセス権。
  • iam.serviceAccounts.actAs
  • iam.serviceAccounts.signBlob
  • iam.serviceAccounts.signJwt
  • iam.serviceAccounts.getAccessToken
  • iam.serviceAccounts.get
  • iam.serviceAccounts.list
  • resourcemanager.projects.get.
  • iam.serviceAccounts.useAsAuthoritySelector

イメージ ユーザーの役割

役割名 説明 権限
roles/compute.imageUser プロジェクト内のリソースに対する他の権限のない、イメージを一覧表示し、読み取る権限。compute.imageUser の役割が付与されたメンバーは、プロジェクト内のイメージの一覧を取得できます。また、プロジェクト内のイメージに基づいて、インスタンスや永続ディスクなどのリソースを作成することができます。
  • compute.images.get
  • compute.images.getFromFamily
  • compute.images.list
  • compute.images.useReadOnly
  • resourcemanager.projects.get
  • resourcemanager.projects.list
  • servicemanagement.projectSettings.get
  • serviceusage.services.get
  • serviceusage.quotas.get

ネットワーク閲覧者の役割(ベータ版)

役割名 説明 権限
roles/compute.networkViewer (Beta)

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

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

  • compute.addresses.get
  • compute.addresses.list
  • compute.globalAddresses.get
  • compute.globalAddresses.list
  • compute.backendBuckets.get
  • compute.backendBuckets.list
  • compute.backendServices.get
  • compute.backendServices.list
  • compute.firewalls.get
  • compute.firewalls.list
  • compute.forwardingRules.get
  • compute.forwardingRules.list
  • compute.globalForwardingRules.get
  • compute.globalForwardingRules.list
  • compute.healthChecks.get
  • compute.healthChecks.list
  • compute.httpHealthChecks.get
  • compute.httpHealthChecks.list
  • compute.httpsHealthChecks.get
  • compute.httpsHealthChecks.list
  • compute.instanceGroups.get
  • compute.instanceGroups.list
  • compute.instances.get
  • compute.instances.list
  • compute.networks.get
  • compute.networks.list
  • compute.packetMirroringConfigs.get
  • compute.packetMirroringConfigs.list
  • compute.routes.get
  • compute.routes.list
  • compute.routers.get
  • compute.routers.list
  • compute.sslCertificates.get
  • compute.sslCertificates.list
  • compute.subnetworks.get
  • compute.subnetworks.list
  • compute.targetHttpProxies.get
  • compute.targetHttpProxies.list
  • compute.targetHttpsProxies.get
  • compute.targetHttpsProxies.list
  • compute.targetInstances.get
  • compute.targetInstances.list
  • compute.targetPools.get
  • compute.targetPools.list
  • compute.targetSslProxies.get
  • compute.targetSslProxies.list
  • compute.targetVpnGateways.get
  • compute.targetVpnGateways.list
  • compute.urlMaps.get
  • compute.urlMaps.list
  • compute.vpns.get
  • compute.vpns.list
  • compute.vpnTunnels.get
  • compute.vpnTunnels.list
  • compute.scopes.get
  • compute.scopes.list
  • compute.regions.get
  • compute.regions.list
  • compute.zones.get
  • compute.zones.list
  • compute.projects.get
  • resourcemanager.projects.get
  • servicemanagement.projectSettings.get

ネットワーク管理者の役割

役割名 説明 権限
roles/compute.networkAdmin

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

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

  • compute.addresses.*
  • compute.globalAddresses.*
  • compute.backendBuckets.*
  • compute.securityPolicies.get
  • compute.securityPolicies.list
  • compute.securityPolicies.use
  • compute.backendServices.*
  • compute.firewalls.get
  • compute.firewalls.list
  • compute.forwardingRules.*
  • compute.globalForwardingRules.*
  • compute.healthChecks.*
  • compute.httpHealthChecks.*
  • compute.httpsHealthChecks.*
  • compute.interconnectAttachments.*
  • compute.interconnectLocations.*
  • compute.interconnects.*
  • compute.networks.*
  • compute.packetMirrorings.get
  • compute.packetMirrorings.list
  • compute.packetMirrorings.use
  • compute.routes.*
  • compute.routers.*
  • compute.sslCertificates.get
  • compute.sslCertificates.list
  • compute.clientSslPolicies.*
  • compute.sslPolicies.*
  • compute.subnetworks.*
  • compute.targetHttpProxies.*
  • compute.targetHttpsProxies.*
  • compute.targetInstances.*
  • compute.targetPools.*
  • compute.targetSslProxies.*
  • compute.targetTcpProxies.*
  • compute.targetVpnGateways.*
  • compute.urlMaps.*
  • compute.instances.get
  • compute.instances.getGuestAttributes
  • compute.instances.getSerialPortOutput
  • compute.instances.list
  • compute.instances.listReferrers
  • compute.instances.use
  • compute.instanceGroups.get
  • compute.instanceGroups.list
  • compute.instanceGroups.use
  • compute.instanceGroups.update
  • compute.instanceGroupManagers.get
  • compute.instanceGroupManagers.list
  • compute.instanceGroupManagers.use
  • compute.instanceGroupManagers.update
  • compute.vpns.*
  • compute.vpnTunnels.*
  • compute.scopes.get
  • compute.scopes.list
  • compute.regions.get
  • compute.regions.list
  • compute.zones.get
  • compute.zones.list
  • compute.operations.get
  • compute.operations.list
  • compute.globalOperations.get
  • compute.globalOperations.list
  • compute.regionOperations.get
  • compute.regionOperations.list
  • compute.zoneOperations.get
  • compute.zoneOperations.list
  • compute.projects.get
  • resourcemanager.projects.get
  • resourcemanager.projects.list
  • servicemanagement.projectSettings.get
  • serviceusage.services.get
  • serviceusage.quotas.get

セキュリティ管理者の役割

役割名 説明 権限
roles/compute.securityAdmin

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

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

  • compute.firewalls.*
  • compute.packetMirrorings.*
  • compute.sslCertificates.*
  • compute.clientSslPolicies.*
  • compute.securityPolicies.*
  • compute.sslPolicies.*
  • compute.instances.updateSecurity
  • compute.networks.get
  • compute.networks.list
  • compute.networks.updatePolicy
  • compute.routes.get
  • compute.routes.list
  • compute.subnetworks.get
  • compute.subnetworks.list
  • compute.subnetworks.updatePolicy
  • compute.scopes.get
  • compute.scopes.list
  • compute.regions.get
  • compute.regions.list
  • compute.zones.get
  • compute.zones.list
  • compute.operations.get
  • compute.operations.list
  • compute.globalOperations.get
  • compute.globalOperations.list
  • compute.regionOperations.get
  • compute.regionOperations.list
  • compute.zoneOperations.get
  • compute.zoneOperations.list
  • compute.projects.get
  • resourcemanager.projects.get
  • resourcemanager.projects.list
  • servicemanagement.projectSettings.get
  • serviceusage.services.get
  • serviceusage.quotas.get

ストレージ管理者の役割(ベータ版)

役割名 説明 権限
roles/compute.storageAdmin (Beta)

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

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

  • compute.disks.*
  • compute.diskTypes.get
  • compute.diskTypes.list
  • compute.images.*
  • compute.licenses.*
  • compute.licenseCodes.*
  • compute.snapshots.*
  • compute.scopes.get
  • compute.scopes.list
  • compute.regions.get
  • compute.regions.list
  • compute.zones.get
  • compute.zones.list
  • compute.operations.get
  • compute.operations.list
  • compute.globalOperations.get
  • compute.globalOperations.list
  • compute.regionOperations.get
  • compute.regionOperations.list
  • compute.zoneOperations.get
  • compute.zoneOperations.list
  • compute.projects.get
  • resourcemanager.projects.get
  • resourcemanager.projects.list
  • servicemanagement.projectSettings.get
  • serviceusage.services.get
  • serviceusage.quotas.get

XPN 管理者の役割(ベータ版)

役割名 説明 権限
roles/compute.xpnAdmin (Beta)

XPN ホスト プロジェクトを管理する権限。特に XPN ホスト プロジェクトを指定し、XPN サービス プロジェクトを XPN ホスト プロジェクト ネットワークに関連付ける権限。

Google Cloud Platform では、XPN 管理者が XPN ホスト プロジェクトのオーナーであることが推奨されています。XPN 管理者はサービス オーナーに compute.networkUser 役割を付与し、XPN ホスト プロジェクトのオーナーはプロジェクト自体を制御します。単一のプリンシパル(個人やグループ)が両方の役割を果たすことができれば、プロジェクトの管理が容易になります。

  • compute.globalOperations.get
  • compute.globalOperations.list
  • compute.organizations.administerXpn
  • compute.organizations.enableXpnHost
  • compute.organizations.disableXpnHost
  • compute.organizations.enableXpnResource
  • compute.organizations.disableXpnResource
  • compute.projects.get
  • compute.subnetworks.getIamPolicy
  • resourcemanager.organizations.get
  • resourcemanager.projects.get
  • resourcemanager.projects.list
  • resourcemanager.projects.getIamPolicy

ネットワーク ユーザーの役割(ベータ版)

役割名 説明 権限
roles/compute.networkUser (Beta) XPN ネットワークを使用する権限。具体的には、XPN ホスト プロジェクト ネットワークでリソースを使用する必要があるサービス オーナーにこの役割を付与します。
  • compute.addresses.get
  • compute.addresses.list
  • compute.firewalls.get
  • compute.firewalls.list
  • compute.interconnectAttachments.get
  • compute.interconnectAttachments.list
  • compute.interconnectLocations.get
  • compute.interconnectLocations.list
  • compute.interconnects.get
  • compute.interconnects.list
  • compute.interconnects.use
  • compute.networks.get
  • compute.networks.list
  • compute.networks.listIpOwners
  • compute.networks.listUsableSubnets
  • compute.networks.use
  • compute.networks.useExternalIp
  • compute.routes.get
  • compute.routes.list
  • compute.routers.get
  • compute.routers.list
  • compute.subnetworks.list
  • compute.subnetworks.listIpOwners
  • compute.subnetworks.get
  • compute.subnetworks.use
  • compute.subnetworks.useExternalIp
  • compute.targetVpnGateways.get
  • compute.targetVpnGateways.list
  • compute.vpns.get
  • compute.vpns.list
  • compute.vpnTunnels.get
  • compute.vpnTunnels.list
  • compute.scopes.get
  • compute.scopes.list
  • compute.regions.get
  • compute.regions.list
  • compute.zones.get
  • compute.zones.list
  • compute.projects.get
  • resourcemanager.projects.get
  • resourcemanager.projects.list
  • servicemanagement.projectSettings.get
  • serviceusage.services.get
  • serviceusage.quotas.get

Compute 管理者の役割(ベータ版)

役割名 説明 権限
roles/compute.admin (Beta)

Compute Engine リソースのすべてを管理できる権限。

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

  • compute.*
  • resourcemanager.projects.get
  • resourcemanager.projects.list
  • servicemanagement.projectSettings.get
  • serviceusage.services.get
  • serviceusage.quotas.get

Compute 閲覧者の役割(ベータ版)

役割名 説明 権限
roles/compute.viewer (Beta)

Compute Engine リソースを取得して表示するための読み取り専用アクセス権。そこに格納されたデータを読み取ることはできません。

たとえば、この役割を持つアカウントはプロジェクトのすべてのディスクの一覧を作成できますが、それらのディスク内のデータは読み取ることができません。

  • compute.*.get
  • compute.*.getIamPolicy
  • compute.*.list
  • compute.forwardingRules.externalGet
  • compute.images.getFromFamily
  • compute.instances.getGuestAttributes
  • compute.instances.getSerialPortOutput
  • compute.instances.listReferrers
  • compute.networks.listIpOwners
  • compute.networks.listUsableSubnets
  • compute.sslPolicies.listAvailableFeatures
  • compute.subnetworks.listIpOwners
  • compute.urlMaps.validate
  • resourcemanager.projects.get
  • resourcemanager.projects.list
  • servicemanagement.projectSettings.get

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

serviceAccountActor の役割

compute.instanceAdmin.v1 の役割を iam.serviceAccountActor の役割と一緒に付与すると、メンバーはサービス アカウントを使用するインスタンスを作成し、管理できます。特に、iam.serviceAccountActor 役割と compute.instanceAdmin.v1 役割を一緒に付与すると、メンバーに次の権限が設定されます。

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

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

  • [推奨] 特定のサービス アカウントでメンバーに役割を付与する。 この役割が付与されたメンバーは、iam.serviceAccountActor のサービス アカウントにアクセスできますが、メンバーが iam.serviceAccountActor でない他のサービス アカウントにはアクセスできません。

  • プロジェクト レベルでメンバーに役割を付与する。このメンバーは、プロジェクト内のすべてのサービス アカウントにアクセスできます。今後作成されるサービス アカウントにもアクセスできます。

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

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

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

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

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

IAM とサービス アカウント

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

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

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

マネージド インスタンス グループと IAM

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

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

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

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

報告されている問題

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

次のステップ

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

Compute Engine ドキュメント