Service Management API のアクセス制御

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_nameservicemanagement.services.delete
services.get 指定された service_nameservicemanagement.services.get
services.getConfig 指定された service_nameservicemanagement.services.get
services.undelete 指定された service_nameservicemanagement.services.delete
services.configs.create 指定された service_nameservicemanagement.services.update
services.configs.get 指定された service_nameservicemanagement.services.get
services.configs.list 指定された service_nameservicemanagement.services.get
services.configs.submit 指定された service_nameservicemanagement.services.update
services.rollouts.create 指定された service_nameservicemanagement.services.update
services.rollouts.get 指定された service_nameservicemanagement.services.get
services.rollouts.list 指定された service_nameservicemanagement.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 を使用したアクセスの管理

  1. Google Cloud Console で [エンドポイント] ページを開きます。

    [エンドポイント] ページを開く

  2. アクセスを管理するサービスをクリックします。
  3. ページ上部にある [権限] をクリックします。これによって情報パネルのオンとオフが切り替わります。
  4. サービスレベルの役割に関わらず、情報パネルから現在のメンバーのリストを表示したり、新しいメンバーを追加したり、メンバーを削除したりできます。

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