本頁面說明如何將屬於您專案的類型和類型提供者與其他專案共用。舉例來說,假設您有專案負責為公司維護預先核准的類型提供者。您想要將該專案中的類型提供者與其他專案共用,並將該專案當做類型的集中存放區。同理,您也可以使用這個方法在多項專案之間共用複合類型。
如要設定存取權,該類型所屬專案的專案擁有者必須將 deploymentmanager.typeViewer
(Beta 版) 角色授予想要使用這些類型的專案的服務帳戶。此外,他們也必須將該角色授予想要查看並列出其他專案中類型的使用者。
事前準備
- 如要使用本指南提供的指令列範例,請安裝 `gcloud` 指令列工具。
- 如要使用本指南提供的 API 範例,請設定 API 存取權。
- 瞭解 Deployment Manager 設定。
- 參閱類型一文。
- 參閱身分與存取權管理 (IAM) 說明文件。
限制
以下是使用這項功能的限制:
- 授予
deploymentmanager.typeViewer
角色即表示授予指定專案中所有類型的權限,但是無法限制對個別類型的共用動作。 - 您無法將此角色授予
allAuthenticatedUsers
或allUsers
。
授予專案存取權以使用類型
如要授予其他專案中類型的存取權,擁有所需類型的專案相關擁有者必須將 deploymentmanager.typeViewer
角色授予想要使用這些類型的專案的 Google API 服務帳戶。
- 在 Google Cloud 控制台中,前往要使用類型的專案的 IAM 頁面。
- 如果出現系統提示,請在清單中選取您的專案。
尋找 Google API 服務帳戶,其電子郵件地址的格式如下:
[PROJECT_NUMBER]@cloudservices.gserviceaccount.com
請記住上方的電子郵件地址。接下來,所需類型所屬專案的專案擁有者可以將
roles/deploymentmanager.typeViewer
角色授予 Google API 服務帳戶。主控台
- 在 Google Cloud 控制台中,前往含有待共用類型的專案,並前往其 IAM 頁面。
- 透過專案清單來選取專案。
- 按一下 [Add] (新增) 按鈕來新增成員。
- 在 [Members ] (成員) 方塊中輸入服務帳戶的電子郵件地址。
- 展開 [Roles] (角色) 下拉式選單,然後依序選取 [Other ] (其他) > [Deployment Manager Types Viewer (beta)] (Deployment Manager Types Viewer (測試版))。
- 點選 [Add] (新增) 即可添加帳戶。
gcloud
使用 Google Cloud CLI,為專案的 IAM 政策新增繫結:
gcloud projects add-iam-policy-binding [PROJECT_ID] \ --member serviceAccount:[SERVICE_ACCOUNT_EMAIL] --role roles/deploymentmanager.typeViewer
其中:
[PROJECT_ID]
是專案 ID,包含您要共用的映像檔。[SERVICE_ACCOUNT_EMAIL]
是您要與其共用類型的專案中的服務帳戶的電子郵件。
例如:
gcloud projects add-iam-policy-binding database-images \ --member serviceAccount:123456789012@cloudservices.gserviceaccount.com \ --role roles/deploymentmanager.typeViewer
API
在 API 中,向下列網址發出
POST
要求,其中[PROJECT_ID]
是含有您要共用類型的專案 ID:POST https://cloudresourcemanager.googleapis.com/v1/projects/$[PROJECT_ID]:setIamPolicy
要求主體應包含您想套用至專案的繫結清單。
roles/deploymentmanager.typeViewer
角色應是繫結的一部分。例如:{ "policy": { "version": "0", "bindings": [ { "role": "roles/owner", "members": [ "user:example@gmail.com" ] }, { "role": "roles/deploymentmanager.typeViewer", "members": [ "serviceAccount:123456789012@cloudservices.gserviceaccount.com" ] } ] }
}
在設定中使用其他專案的類型
擁有類型的存取權後,您就能在設定中使用語法指定類型。針對複合類型:
type: [PROJECT_ID]/composite:[TYPE]
針對類型提供者:
type: [PROJECT_ID]/[TYPE]:[COLLECTION]
其中:
[PROJECT_ID]
是擁有類型的專案 ID。[TYPE]
是類型提供者或複合類型的名稱。[COLLECTION]
是您建立的特定資源。這只適用於基礎類型。如要進一步瞭解如何指定基礎類型,請參閱在設定中呼叫類型提供者一文。
舉例來說,如果專案 ID 為 my-type-repository
,您可能需要提供下列類型規範:
resources: - name: a-special-vm type: my-type-repository/composite:autoscaled-igm properties: ...
授予使用者列出及查看類型的權限
向專案的服務帳戶授予 deploymentmanager.typeViewer
角色,可讓專案在您的設定中部署所需類型,但不允許使用者查看或列出這些類型。如要授予個別使用者查看類型的權限,您必須向每位使用者授予 deploymentmanager.typeViewer
角色。
例如,如要讓小珍對不屬於她的專案執行 gcloud beta deployment-manager types list --project another-project
指令,another-project
的擁有者必須向小珍授予 deploymentmanager.typeViewer
角色。
您可以使用 gcloud CLI 向 Jane 授予角色,如下所示:
gcloud projects add-iam-policy-binding another-project \
--member user:jane@gmail.com --role deploymentmanager.typeViewer
如需進一步瞭解如何為使用者新增及移除角色,請參閱授予、變更及撤銷專案成員的存取權說明文件。