跨專案共用類型

本頁面說明如何將屬於您專案的類型和類型提供者與其他專案共用。舉例來說,假設您有專案負責為公司維護預先核准的類型提供者。您想要將該專案中的類型提供者與其他專案共用,並將該專案當做類型的集中存放區。同理,您也可以使用這個方法在多項專案之間共用複合類型。

如要設定存取權,該類型所屬專案的專案擁有者必須將 deploymentmanager.typeViewer (Beta 版) 角色授予想要使用這些類型的專案的服務帳戶。此外,他們也必須將該角色授予想要查看並列出其他專案中類型的使用者。

事前準備

限制

以下是使用這項功能的限制:

  • 授予 deploymentmanager.typeViewer 角色即表示授予指定專案中所有類型的權限,但是無法限制對個別類型的共用動作。
  • 您無法將此角色授予 allAuthenticatedUsersallUsers

授予專案存取權以使用類型

如要授予其他專案中類型的存取權,擁有所需類型的專案相關擁有者必須將 deploymentmanager.typeViewer 角色授予想要使用這些類型的專案的 Google API 服務帳戶

  1. 在 Google Cloud 控制台中,前往要使用類型的專案的 IAM 頁面。

    前往「IAM」頁面

  2. 如果出現系統提示,請在清單中選取您的專案。
  3. 尋找 Google API 服務帳戶,其電子郵件地址的格式如下:

    [PROJECT_NUMBER]@cloudservices.gserviceaccount.com
    
  4. 請記住上方的電子郵件地址。接下來,所需類型所屬專案的專案擁有者可以將 roles/deploymentmanager.typeViewer 角色授予 Google API 服務帳戶。

    主控台

    1. 在 Google Cloud 控制台中,前往含有待共用類型的專案,並前往其 IAM 頁面。

      前往「IAM」頁面

    2. 透過專案清單來選取專案。
    3. 按一下 [Add] (新增) 按鈕來新增成員。
    4. 在 [Members ] (成員) 方塊中輸入服務帳戶的電子郵件地址。
    5. 展開 [Roles] (角色) 下拉式選單,然後依序選取 [Other ] (其他) > [Deployment Manager Types Viewer (beta)] (Deployment Manager Types Viewer (測試版))
    6. 點選 [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

如需進一步瞭解如何為使用者新增及移除角色,請參閱授予、變更及撤銷專案成員的存取權說明文件。

後續步驟