Service Management API は、Identity and Access Management(Cloud IAM)を使用してマネージド サービスとその子リソースへのアクセスを制御します。このページでは、Service Management API で提供される IAM リソース、役割、権限と、それらを使用してアクセスを制御する方法について説明します。
IAM リソース
IAM は、リソースに IAM ポリシーを適用し、そのリソース上でどのユーザーがどのアクションを実行できるかを制御します。Service Management API は次のリソースを使用して機能を提供します。
使用、管理するリソースごとに、異なる権限が必要です。詳細については、以下のセクションをご覧ください。
IAM 権限
Service Management API を呼び出すには、呼び出し元がターゲット リソースに対して必要な IAM 権限を持っている必要があります。
サービスに適用される権限を次の表に示します。
| 権限 | 説明 | 
|---|---|
servicemanagement.services.delete | 
サービスを削除します。 | 
servicemanagement.services.get | 
サービスを読み取ります。 | 
servicemanagement.services.create | 
プロジェクトに新しいサービスを作成します。 | 
servicemanagement.services.list | 
プロジェクトのサービスを一覧表示します。 | 
servicemanagement.services.update | 
サービスを更新します。 | 
servicemanagement.services.bind | 
呼び出し元が制御するプロジェクトでサービスを表示および有効にします。 | 
servicemanagement.services.setIamPolicy | 
サービスの IAM アクセス ポリシーを設定します。 | 
servicemanagement.services.getIamPolicy | 
サービスの IAM アクセス ポリシーを読み取ります。 | 
servicemanagement.services.check | 
サービスのユーザー ステータスを確認します。services.check をご覧ください。 | 
servicemanagement.services.quota | 
サービス ユーザー用の割り当てを指定します。services.allocateQuota を参照してください。 | 
servicemanagement.services.report | 
サービスの使用状況を報告します。services.report をご覧ください。 | 
次の表に、それぞれの Service Management API メソッドに必要な権限(該当する場合)を示します。この情報は API リファレンスにもまとめられています。
| メソッド | 必要な権限 | 
|---|---|
services.delete | 
指定された service_name の servicemanagement.services.delete。 | 
services.get | 
指定された service_name の servicemanagement.services.get。 | 
services.getConfig | 
指定された service_name の servicemanagement.services.get。 | 
services.undelete | 
指定された service_name の servicemanagement.services.delete。 | 
services.configs.create | 
指定された service_name の servicemanagement.services.update。 | 
services.configs.get | 
指定された service_name の servicemanagement.services.get。 | 
services.configs.list | 
指定された service_name の servicemanagement.services.get。 | 
services.configs.submit | 
指定された service_name の servicemanagement.services.update。 | 
services.rollouts.create | 
指定された service_name の servicemanagement.services.update。 | 
services.rollouts.get | 
指定された service_name の servicemanagement.services.get。 | 
services.rollouts.list | 
指定された service_name の servicemanagement.services.get。 | 
IAM ロール
Identity and Access Management では、ユーザーを役割にバインドして権限が付与されます。詳細については、役割についてをご覧ください。
サービスに適用される役割を次の表に示します。
| 役割 | 権限 | 
|---|---|
roles/viewer | 
servicemanagement.services.get servicemanagement.services.list  | 
roles/editor | 
roles/viewer のすべての権限と以下の権限servicemanagement.services.bind servicemanagement.services.check servicemanagement.services.create servicemanagement.services.delete servicemanagement.services.quota servicemanagement.services.report servicemanagement.services.update  | 
roles/owner | 
roles/editor のすべての権限と以下の権限servicemanagement.services.getIamPolicy servicemanagement.services.setIamPolicy  | 
roles/servicemanagement.admin | 
monitoring.timeSeries.list resourcemanager.folders.get resourcemanager.folders.list resourcemanager.organizations.get resourcemanager.projects.get resourcemanager.projects.list serviceconsumermanagement.consumers.get serviceconsumermanagement.quota.get serviceconsumermanagement.quota.update serviceconsumermanagement.tenancyu.addResource serviceconsumermanagement.tenancyu.create serviceconsumermanagement.tenancyu.delete serviceconsumermanagement.tenancyu.list serviceconsumermanagement.tenancyu.removeResource servicemanagement.services.bind servicemanagement.services.check servicemanagement.services.create servicemanagement.services.delete servicemanagement.services.get servicemanagement.services.getIamPolicy servicemanagement.services.list servicemanagement.services.quota servicemanagement.services.report servicemanagement.services.setIamPolicy servicemanagement.services.update serviceusage.quotas.get serviceusage.services.get  | 
roles/servicemanagement.configEditor | 
servicemanagement.services.get servicemanagement.services.update  | 
roles/servicemanagement.reporter | 
servicemanagement.services.report | 
roles/servicemanagement.serviceConsumer | 
servicemanagement.services.bind | 
roles/servicemanagement.serviceController | 
servicemanagement.services.check servicemanagement.services.get servicemanagement.services.quota servicemanagement.services.report  | 
ポリシーの管理
IAM ではポリシーが階層的に評価されます。子リソースは常に親のポリシーを継承します。Service Management API では、各マネージド サービスはそのサービス プロデューサー プロジェクトの子リソースになります。このため、サービス プロデューサー プロジェクトに付与された役割は、そのプロジェクトに属するすべてのマネージド サービスに適用されます。プロジェクト レベルで役割を付与する手順については、ポリシーの管理をご覧ください。
個別のサービスに対して IAM ポリシーを管理することもできます。以降のセクションでは、コンソール、Service Management API、Google Cloud CLI を使用してサービスレベルのロールを管理する方法について説明します。 Google Cloud
Google Cloud コンソールを使用したアクセスの管理
コンソールで [エンドポイント] ページを開きます。 Google Cloud
- アクセスを管理するサービスをクリックします。
 - ページ上部にある [権限] をクリックします。これによって情報パネルのオンとオフが切り替わります。
 - サービスレベルの役割に関わらず、情報パネルから現在のメンバーのリストを表示したり、新しいメンバーを追加したり、メンバーを削除したりできます。
 
gcloud CLI を使用したアクセスの管理
gcloud CLI には、マネージド サービスの IAM ポリシーを管理するための gcloud endpoints services コマンドが含まれています。
endpoints services get-iam-policy- サービスの IAM ポリシーを表示します。
 
endpoints services check-iam-policy- サービスの IAM ポリシーを確認します。
 
endpoints services add-iam-policy-binding- 役割にメンバーを追加します。
 
endpoints services remove-iam-policy-binding- 役割からメンバーを削除します。
 
次に例を示します。
# Show the IAM policy of service "endpointsapis.appspot.com".
gcloud endpoints services get-iam-policy endpointsapis.appspot.com
# The above command may produce an output similar to this:
bindings:
- members:
  - user:email1@gmail.com
  - group:group1@googlegroups.com
  role: roles/servicemanagement.serviceConsumer
# Add a user to "roles/servicemanagement.serviceConsumer" role.
gcloud endpoints services add-iam-policy-binding endpointsapis.appspot.com --member "user:email1@gmail.com" --role "roles/servicemanagement.serviceConsumer"
# Add a group to "roles/servicemanagement.serviceConsumer" role.
gcloud endpoints services add-iam-policy-binding endpointsapis.appspot.com --member "group:group1@googlegroups.com" --role "roles/servicemanagement.serviceConsumer"
# Remove a user from "roles/servicemanagement.serviceConsumer" role.
gcloud endpoints services remove-iam-policy-binding endpointsapis.appspot.com --member "user:email1@gmail.com" --role "roles/servicemanagement.serviceConsumer"
# Remove a group from "roles/servicemanagement.serviceConsumer" role.
gcloud endpoints services remove-iam-policy-binding endpointsapis.appspot.com --member "group:group1@googlegroups.com" --role "roles/servicemanagement.serviceConsumer"
Service Management API を使用したアクセス管理
Google Service Management API には、サービスレベルのポリシーとユーザーレベルのポリシーを管理するための IAM Policy API が含まれています。gcurl コマンドを使用して、API メソッドを試すことができます。最初のセットアップ手順についてはスタートガイドをご覧ください。
次に例を示します。
# View the current IAM policy on service "endpointsapis.appspot.com".
gcurl -d '{}' https://servicemanagement.googleapis.com/v1/services/endpointsapis.appspot.com:getIamPolicy
# View the current IAM policy on service "endpointsapis.appspot.com" and consumer "12345".
gcurl -d '{}' https://servicemanagement.googleapis.com/v1/services/endpointsapis.appspot.com/consumers/12345:getIamPolicy