Service Management API 访问控制

Service Management API 使用 Identity and Access Management (Cloud IAM) 来控制对托管式服务及其子资源的访问。本页面介绍了 Service Management API 提供的 IAM 资源、角色和权限,以及如何使用它们来控制访问

IAM 资源

IAM 将 IAM 政策应用于资源,从而控制谁可以对资源执行哪些操作。Service Management API 使用以下资源来提供其功能:

您需要不同的权限才能使用和管理不同的资源,请参阅以下部分了解详情。

IAM 权限

调用者只有具有目标资源的必要的 IAM 权限,才能调用 Service Management API。

下表列出了适用于服务的权限:

权限 说明
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 控制台、Service Management API 和 Google Cloud CLI 管理服务级别角色。

使用 Google Cloud 控制台管理访问权限

  1. 在 Google Cloud 控制台中打开“端点”页面。

    打开 Endpoints 页面

  2. 点击您希望管理其访问权限的服务。
  3. 单击页面顶部的“PERMISSIONS”(权限)链接。这会打开和关闭信息面板。
  4. 在信息面板中,您可以针对任何服务级角色查看当前成员列表,添加新成员以及删除成员。

使用 gcloud CLI 管理访问权限

gcloud CLI 包含 gcloud endpoints services 命令来管理托管式服务的 IAM 政策:

  • 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 管理访问权限

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