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 ポリシーを管理することもできます。以下のセクションでは、Google Cloud Console、Service Management API、Google Cloud CLI を使用して、サービスレベルのロールを管理する方法を説明します。
Google Cloud Console を使用したアクセスの管理
Google Cloud Console で [エンドポイント] ページを開きます。
- アクセスを管理するサービスをクリックします。
- ページ上部にある [権限] をクリックします。これによって情報パネルのオンとオフが切り替わります。
- サービスレベルの役割に関わらず、情報パネルから現在のメンバーのリストを表示したり、新しいメンバーを追加したり、メンバーを削除したりできます。
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