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