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 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 控制台管理存取權

  1. 在 Google Cloud 控制台中開啟「端點」頁面。

    開啟「Endpoints」頁面

  2. 按一下要管理存取權的服務。
  3. 按一下頁面頂端的 [權限] 連結,即可開啟或關閉資訊面板。
  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