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 控制台管理访问权限
在 Google Cloud 控制台中打开“端点”页面。
- 点击您希望管理其访问权限的服务。
- 单击页面顶部的“PERMISSIONS”(权限)链接。这会打开和关闭信息面板。
- 在信息面板中,您可以针对任何服务级角色查看当前成员列表,添加新成员以及删除成员。
使用 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