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.disable プロジェクトに対する権限: serviceusage.services.disable
services.enable プロジェクトに対して:serviceusage.services.enable
サービスに対して:servicemanagement.services.bind
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.delete
servicemanagement.services.create
servicemanagement.services.update
servicemanagement.services.bind
servicemanagement.services.check
servicemanagement.services.quota
servicemanagement.services.report
roles/owner roles/editor のすべての権限と以下の権限

servicemanagement.services.setIamPolicy
servicemanagement.services.getIamPolicy
roles/servicemanagement.configEditor servicemanagement.services.get
servicemanagement.services.update
roles/servicemanagement.serviceConsumer servicemanagement.services.bind
roles/servicemanagement.serviceController servicemanagement.services.get
servicemanagement.services.check
servicemanagement.services.quota
servicemanagement.services.report

ポリシーの管理

IAM ではポリシーが階層的に評価されます。子リソースは常に親のポリシーを継承します。Service Management API では、各マネージド サービスはそのサービス プロデューサー プロジェクトの子リソースになります。このため、サービス プロデューサー プロジェクトに付与された役割は、そのプロジェクトに属するすべてのマネージド サービスに適用されます。プロジェクト レベルで役割を付与する手順については、ポリシーの管理をご覧ください。

個別のサービスに対して IAM ポリシーを管理することもできます。以下のセクションでは、Google Cloud Console、Service Management API、Google Cloud SDK を使用して、サービスレベルの役割を管理する方法を説明します。

Google Cloud Console を使用したアクセスの管理

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

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

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

Cloud SDK を使用したアクセスの管理

Cloud SDK には、マネージド サービスの 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