如要控管 Google Cloud資源存取權,您可使用 Identity and Access Management (IAM)。透過 IAM 設定權限後,您就能指定哪些使用者對何種專案資源具備的存取權類型。如需 IAM 的簡介,請參閱「IAM 總覽」。
部署資源時,您也可以預先在設定中指定 IAM 政策,以控管資源的存取權。舉例來說,如要建立可由特定使用者管理的 Pub/Sub 主題,您可在設定中指定 IAM 政策,以通知 Deployment Manager。當您建立或更新部署時,Deployment Manager 會呼叫 IAM API,藉此為資源設定適當的權限。
事前準備
- 如要使用本指南提供的指令列範例,請安裝 `gcloud` 指令列工具。
- 如要使用本指南提供的 API 範例,請設定 API 存取權。
使用 Deployment Manager 的 IAM 政策
IAM 政策是指使用者及其角色的集合。您可使用基本角色或預先定義的角色,設定專案層級的 IAM 政策。部分服務 (例如 Cloud Pub/Sub) 也支援設定資源層級的 IAM 政策。
如果某項服務不支援設定資源層級的身分與存取權管理政策,Deployment Manager 會傳回 NO_METHOD_TO_UPDATE_ACCESS_CONTROL
錯誤。
如需各種角色以及可以套用至每個角色的資源清單,請參閱瞭解角色一文。
授權 Deployment Manager 設定 IAM 政策
Deployment Manager 會使用 Google API 服務帳戶呼叫其他 Google API,為您管理 Google Cloud 資源。您必須將基本 roles/owner
角色授予專案的 Google API 服務帳戶,該帳戶才能套用您在設定中定義的 IAM 政策。
- 前往專案 Google Cloud 控制台的「IAM」頁面。
- 如果出現系統提示,請在清單中選取您的專案。
尋找 Google API 服務帳戶,其電子郵件地址的格式如下:
[PROJECT_NUMBER]@cloudservices.gserviceaccount.com
將
roles/owner
角色授予 API 服務帳戶:主控台
- 仍在 Google Cloud 主控台時,展開 Google API 服務帳戶的「Roles」(角色) 下拉式選單,然後依序選取「Project」(專案) >「Owner」(擁有者)。
- 按一下 [儲存] 以儲存變更。
gcloud
使用 Google Cloud CLI,為專案的 IAM 政策新增繫結:
gcloud projects add-iam-policy-binding [PROJECT_ID] \ --member serviceAccount:[SERVICE_ACCOUNT_EMAIL] --role roles/owner
其中:
[PROJECT_ID]
是專案 ID。[SERVICE_ACCOUNT_EMAIL]
是服務帳戶的電子郵件地址。
例如:
gcloud projects add-iam-policy-binding database-images \ --member serviceAccount:123456789012@cloudservices.gserviceaccount.com \ --role roles/owner
API
在 API 中,向下列網址發出
POST
要求,其中[PROJECT_ID]
是專案 ID:POST https://cloudresourcemanager.googleapis.com/v1/projects/$[PROJECT_ID]:setIamPolicy
要求主體應包含您想套用至專案的繫結清單。
roles/owner
角色應是繫結的一部分。例如:{ "policy": { "version": "0", "bindings": [ { "role": "roles/owner", "members": [ "user:example@gmail.com", "serviceAccount:123456789012@cloudservices.gserviceaccount.com" ] } ] } }
在設定中指定 IAM 政策
接下來,您可根據下列指示操作,在設定或範本中指定 IAM 政策。
針對您要套用存取權控管政策的各項資源,將
accessControl
區段新增至資源的頂層設定。指定資源所需的
gcpIamPolicy
。每項 IAM 政策可包含繫結清單。各繫結均會將一組成員連結至某個角色。如果您使用
accessControl
管理服務帳戶,請參閱這篇文章,進一步瞭解如何管理服務帳戶。
舉例來說,下列 accessControl
區段可新增繫結,將這些角色授予使用者。
使用者 | 角色 |
---|---|
alice@example.com |
roles/pubsub.editor |
|
roles/pubsub.publisher |
resources:
- name: a-new-pubsub-topic
type: pubsub.v1.topic
properties:
...
accessControl:
gcpIamPolicy:
bindings:
- role: roles/pubsub.editor
members:
- "user:alice@example.com"
- role: roles/pubsub.publisher
members:
- "user:jane@example.com"
- "serviceAccount:my-other-app@appspot.gserviceaccount.com"
如要進一步瞭解 IAM 政策,請參閱 IAM 說明文件。