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 | 
servicemanagement.services.delete指定 service_name。 | 
services.get | 
servicemanagement.services.get指定 service_name。 | 
services.getConfig | 
servicemanagement.services.get指定 service_name。 | 
services.undelete | 
servicemanagement.services.delete指定 service_name。 | 
services.configs.create | 
servicemanagement.services.update指定 service_name。 | 
services.configs.get | 
servicemanagement.services.get指定 service_name。 | 
services.configs.list | 
servicemanagement.services.get指定 service_name。 | 
services.configs.submit | 
servicemanagement.services.update指定 service_name。 | 
services.rollouts.create | 
servicemanagement.services.update指定 service_name。 | 
services.rollouts.get | 
servicemanagement.services.get指定 service_name。 | 
services.rollouts.list | 
servicemanagement.services.get指定 service_name。 | 
IAM 角色
使用身分與存取權管理,為使用者指派角色,以授予權限。詳情請參閱瞭解角色。
下表為服務適用的角色:
| 角色 | 權限 | 
|---|---|
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 控制台中開啟「端點」頁面。
- 按一下要管理存取權的服務。
 - 按一下頁面頂端的 [權限] 連結,即可開啟或關閉資訊面板。
 - 在資訊面板中,您可以查看現有成員名單、新增成員,以及移除任何服務層級角色的成員。
 
使用 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