管理自訂圖片的存取權


如要允許使用者建立、刪除、使用或共用自訂映像檔,您必須授予適當的身分與存取權管理 (IAM) 角色。這份文件說明瞭建立及管理自訂映像檔所需的 IAM 權限,以及將這些權限授予使用者的方法。

如要瞭解如何授予 Compute Engine 資源的存取權,請參閱管理 Compute Engine 資源的存取權。如要瞭解 IAM,請參閱 IAM 說明文件

事前準備

  • 請參閱 IAM 說明文件。
  • 進一步瞭解 Compute Engine 身分與存取權管理角色,特別是 Compute 映像檔使用者角色 (roles/compute.imageUser)。
  • 如果尚未設定驗證,請先完成設定。 「驗證」是指驗證身分的程序,確認您有權存取 Google Cloud 服務和 API。如要從本機開發環境執行程式碼或範例,請選取下列其中一個選項,向 Compute Engine 進行驗證:

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

      1. After installing the Google Cloud CLI, initialize it by running the following command:

        gcloud init

        If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

      2. Set a default region and zone.
      3. REST

        如要在本機開發環境中使用本頁的 REST API 範例,請使用您提供給 gcloud CLI 的憑證。

          After installing the Google Cloud CLI, initialize it by running the following command:

          gcloud init

          If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

        詳情請參閱 Google Cloud 驗證說明文件中的「Authenticate for using REST」。

必要的角色

如要取得管理自訂映像檔存取權所需的權限,請要求管理員授予下列 IAM 角色:

如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和機構的存取權」。

這些預先定義角色具備管理自訂映像檔存取權所需的權限。如要查看確切的必要權限,請展開「必要權限」部分:

所需權限

如要管理自訂映像檔的存取權,必須具備下列權限:

  • 如要授予使用者或服務帳戶建立及共用自訂映像檔所需的權限,請按照下列步驟操作:
    • 專案的 resourcemanager.projects.getIamPolicy 權限
    • 專案的 resourcemanager.projects.setIamPolicy 權限
  • 如要授予使用者或服務帳戶刪除自訂映像檔所需的權限,請按照下列步驟操作:
    • 專案的 resourcemanager.projects.getIamPolicy 權限
    • 專案的 resourcemanager.projects.setIamPolicy 權限
    • compute.images.getIamPolicy圖片
    • 圖片的 compute.images.setIamPolicy 權限
  • 如要撤銷使用者或服務帳戶的自訂映像檔存取權,請按照下列步驟操作:
    • 專案的 resourcemanager.projects.getIamPolicy 權限
    • 專案的 resourcemanager.projects.setIamPolicy 權限
  • 如要使用共用映像檔建立執行個體:
    • 專案的 compute.instances.create 權限
    • 如要使用自訂映像檔建立 VM,請按一下映像檔上的 compute.images.useReadOnly
    • 如要使用快照建立 VM,請按一下快照上的 compute.snapshots.useReadOnly
    • 如要使用執行個體範本建立 VM,請按一下執行個體範本上的 compute.instanceTemplates.useReadOnly
    • 如要將舊版網路指派給 VM:專案的 compute.networks.use
    • 如要為 VM 指定靜態 IP 位址,請在專案中擁有 compute.addresses.use 權限
    • 使用舊版網路時,如要將外部 IP 位址指派給 VM,請在專案中設定 compute.networks.useExternalIp
    • 為 VM 指定子網路:專案或所選子網路的 compute.subnetworks.use
    • 使用虛擬私有雲網路時,如要將外部 IP 位址指派給 VM,請在專案或所選子網路上擁有 compute.subnetworks.useExternalIp 權限
    • 如要為專案中的 VM 設定 VM 執行個體中繼資料,請執行下列指令:compute.instances.setMetadata
    • 如要為 VM 設定標記,請在 VM 上按一下 compute.instances.setTags
    • 如要為 VM 設定標籤,請在 VM 上執行下列步驟:compute.instances.setLabels
    • 如要設定 VM 使用的服務帳戶,請在 VM 上執行 compute.instances.setServiceAccount
    • 如要為 VM 建立新磁碟,請取得專案的 compute.disks.create 權限
    • 如要以唯讀或讀寫模式連接現有磁碟,請對磁碟擁有 compute.disks.use 權限
    • 如要以唯讀模式連接現有磁碟,請對磁碟擁有 compute.disks.useReadOnly 權限

您或許還可透過自訂角色或其他預先定義的角色取得這些權限。

限制

您無法在圖片上將角色授予特殊成員類型 allUsers

授予建立自訂圖片的權限

您可以授予使用者在貴機構或專案中建立自訂映像檔的權限。

Compute Engine 提供預先定義的 Compute 儲存空間管理員角色 (roles/compute.storageAdmin),您可以將這個角色指派給使用者,讓他們建立、刪除及管理儲存空間相關資源,包括映像檔、磁碟和快照。如要建立只能建立圖片的角色,請建立自訂角色。在自訂角色中加入下列權限:

  • compute.images.create 即可建立新圖片
  • compute.images.list,列出專案中的映像檔
  • compute.disks.use (如果映像檔是從磁碟建立)
  • compute.disks.list 如果使用者需要列出專案中的所有磁碟

如果您在機構層級授予使用者建立自訂映像檔的權限,使用者就能為機構內的任何專案建立自訂映像檔。

主控台

  1. 前往 Google Cloud 控制台的專案或機構「IAM」IAM頁面。

    前往身分與存取權管理頁面

  2. 如要新增成員,請按一下「授予存取權」

  3. 在「New principals」(新增主體) 欄位中,輸入要授予存取權的身分電子郵件地址。

    例如:

    • Google 帳戶電子郵件地址:test-user@gmail.com
    • Google 群組:admins@googlegroups.com
    • 外部識別資訊提供者的 ID:principal://iam.googleapis.com/locations/global/workforcePools/altostrat-contractors/subject/raha@altostrat.com
    • 服務帳戶:server@example.gserviceaccount.com
    • Google Workspace 網域:example.com
  4. 在「Select a role」(選取角色) 清單中,選取「Compute Engine」>「Compute Storage Admin」(Compute 儲存空間管理員),或選取您建立的自訂角色。

  5. 選用:如要進一步控管使用者對 Google Cloud 資源的存取權,請新增條件式角色繫結

  6. 儲存變更。

gcloud

如要在機構層級授予 roles/compute.storageAdmin 角色,請使用 gcloud organizations add-iam-policy-binding 指令

gcloud organizations add-iam-policy-binding ORGANIZATION_ID \
    --member='MEMBER' \
    --role='roles/compute.storageAdmin'

如要在專案層級授予 roles/compute.storageAdmin 角色,請使用 gcloud projects add-iam-policy-binding 指令

gcloud projects add-iam-policy-binding PROJECT_ID \
    --member='MEMBER' \
    --role='roles/compute.storageAdmin'

更改下列內容:

  • ORGANIZATION_IDPROJECT_ID:機構 ID 或專案 ID,例如 my-organization-1my-project-1
  • MEMBER:您要授予角色的有效身分

    例如:

    • Google 帳戶電子郵件地址:user:user@gmail.com
    • Google 群組:group:admins@googlegroups.com
    • 外部識別資訊提供者的 ID:principal://iam.googleapis.com/locations/global/workforcePools/altostrat-contractors/subject/raha@altostrat.com
    • 服務帳戶:serviceAccount:server@example.gserviceaccount.com
    • Google Workspace 網域:domain:example.com

REST

  1. 使用資源的 getIamPolicy 方法讀取現有政策。如果是專案,請使用 projects.getIamPolicy 方法

    POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:getIamPolicy
    

    PROJECT_ID 改為專案 ID,例如 my-project-1

    如果是機構,請使用 organizations.getIamPolicy 方法

    POST https://cloudresourcemanager.googleapis.com/v1/organizations/ORGANIZATION_ID:getIamPolicy
    

    ORGANIZATION_ID 替換為機構 ID,例如 123456578920

    Compute Engine 會在回應中傳回目前的政策。

  2. 如要新增或移除成員及其相關聯的角色,請使用文字編輯器編輯政策。請使用下列格式新增成員:

    • user:test-user@gmail.com
    • group:admins@example.com
    • serviceAccount:test123@example.domain.com
    • domain:example.domain.com

    舉例來說,如要將 roles/compute.storageAdmin 角色授予 group:admins@example.com,請在政策中新增下列繫結:

    {
     "members": [
       "group:admins@example.com"
     ],
     "role":"roles/compute.storageAdmin"
    }
    
  3. 使用 setIamPolicy 方法寫入更新後的政策。

    舉例來說,如要在專案層級設定政策,請使用 project.setIamPolicy 方法。在要求主體中,提供上一個步驟中更新的 IAM 政策。

    POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:setIamPolicy
    

    PROJECT_ID 替換為專案 ID。

授予刪除自訂圖片的權限

視需求而定,您可以授予使用者下列權限:

  • 刪除特定圖片
  • 刪除特定專案擁有的圖片
  • 刪除機構中任何專案的圖片

在專案層級授予權限後,使用者就能刪除該專案擁有的所有映像檔。在機構層級授予權限後,使用者就能刪除該機構擁有的任何圖片,不受專案限制。

Compute Engine 提供預先定義的 Compute 儲存空間管理員角色 (roles/compute.storageAdmin),您可以將這個角色指派給使用者,讓他們建立、刪除及管理儲存空間相關資源,包括映像檔、磁碟和快照。如需只能刪除圖片的角色,請建立自訂角色。在自訂角色中加入下列權限:

  • compute.images.delete 刪除圖片
  • compute.images.list 如果使用者需要列出專案或機構中的圖片
  • compute.images.get 取得圖片

主控台

如要授予刪除特定圖片的權限,請按照下列步驟操作:

  1. 前往 Google Cloud 控制台的「Images」(映像檔) 頁面。

    前往「圖片」

  2. 選取要授予權限的圖片。

  3. 如要展開權限欄,請按一下「顯示資訊面板」

  4. 如要新增一或多位成員,請按一下「新增主體」

  5. 在「New principals」(新增主體) 欄位中,輸入要與之共用圖片的身分電子郵件地址。

    例如:

    • Google 帳戶電子郵件地址:test-user@gmail.com
    • Google 群組:admins@googlegroups.com
    • 外部識別資訊提供者的 ID:principal://iam.googleapis.com/locations/global/workforcePools/altostrat-contractors/subject/raha@altostrat.com
    • 服務帳戶:server@example.gserviceaccount.com
    • Google Workspace 網域:example.com
  6. 在「Role」(角色) 清單中,將指標懸停在「Compute Engine」上,然後選取「Storage Admin」(儲存空間管理員),或從「Custom」(自訂) 清單中選取自訂角色。

  7. 選用:如要進一步控管使用者對 Google Cloud 資源的存取權,請新增條件式角色繫結

  8. 儲存變更。

如要授予專案或機構刪除圖片的權限,請按照下列步驟操作:

  1. 前往專案或機構的「IAM」IAM頁面。

    前往身分與存取權管理頁面

  2. 按一下「授予存取權」

  3. 在「New principals」(新增主體) 欄位中,輸入要授予存取權的身分電子郵件地址。例如:

    • Google 帳戶電子郵件地址:test-user@gmail.com
    • Google 群組:admins@googlegroups.com
    • 外部識別資訊提供者的 ID:principal://iam.googleapis.com/locations/global/workforcePools/altostrat-contractors/subject/raha@altostrat.com
    • 服務帳戶:server@example.gserviceaccount.com
    • Google Workspace 網域:example.com
  4. 在「Role」(角色) 清單中,將指標懸停在「Compute Engine」上,然後選取「Storage Admin」(儲存空間管理員),或從「Custom」(自訂) 清單中選取自訂角色。

  5. 選用:如要進一步控管使用者對 Google Cloud 資源的存取權,請新增條件式角色繫結

  6. 儲存變更。

gcloud

如要在機構層級授予刪除映像檔的權限,請使用 gcloud organizations add-iam-policy-binding 指令

gcloud organizations add-iam-policy-binding ORGANIZATION_ID \
    --member='MEMBER' \
    --role='ROLE'

如要授予專案層級的圖片刪除權限,請使用 gcloud projects add-iam-policy-binding 指令

gcloud projects add-iam-policy-binding PROJECT_ID \
    --member='MEMBER' \
    --role='ROLE'

如要授予刪除特定圖片的權限,請使用 gcloud compute images add-iam-policy-binding 指令

gcloud compute images add-iam-policy-binding IMAGE_NAME \
    --member='MEMBER' \
    --role='ROLE'

更改下列內容:

  • ORGANIZATION_IDPROJECT_IDIMAGE_NAME: 12 位數的組織 ID、專案 ID 或圖片名稱,例如 123456578920my-project-1my-custom-image
  • MEMBER:您要授予角色的有效身分

    例如:

    • Google 帳戶電子郵件地址:user:user@gmail.com
    • Google 網路論壇:group:admins@googlegroups.com
    • 外部識別資訊提供者的 ID:principal://iam.googleapis.com/locations/global/workforcePools/altostrat-contractors/subject/raha@altostrat.com
    • 服務帳戶:serviceAccount:server@example.gserviceaccount.com
    • Google Workspace 網域:domain:example.com
  • ROLE:要指派給這個身分的角色,例如 roles/compute.storageAdmin 角色,或是 roles/customImageDeletionRole 等自訂角色

REST

  1. 使用資源的相應 getIamPolicy 方法讀取現有政策。如果是專案,請使用 projects.getIamPolicy 方法

    POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:getIamPolicy
    

    PROJECT_ID 替換為專案 ID。

    機構請使用 organizations.getIamPolicy 方法

    POST https://cloudresourcemanager.googleapis.com/v1/organizations/ORGANIZATION_ID:getIamPolicy
    

    ORGANIZATION_ID 替換為 12 位數的機構 ID。

    如要取得特定圖片的資訊,請使用 images.getIamPolicy 方法

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/images/IMAGE_NAME:getIamPolicy
    

    更改下列內容:

    • PROJECT_ID:專案 ID
    • IMAGE_NAME:圖片名稱

    Compute Engine 會在回應中傳回目前的政策。

  2. 如要新增或移除成員及其相關聯的角色,可以使用文字編輯器編輯政策。請使用下列格式新增成員:

    • user:test-user@gmail.com
    • group:admins@example.com
    • serviceAccount:test123@example.domain.com
    • domain:example.domain.com

    舉例來說,如要將 roles/compute.storageAdmin 角色授予 user:test-email@example.com,請在政策中新增下列繫結:

    {
     "members": [
       "user:test-email@example.com"
     ],
     "role":"roles/compute.storageAdmin"
    }
    
  3. 使用 setIamPolicy 方法寫入更新後的政策。

    舉例來說,如要在專案層級設定政策,請使用 project.setIamPolicy 方法。在要求主體中,提供上一個步驟中更新的 IAM 政策。

    POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:setIamPolicy
    

    PROJECT_ID 替換為專案 ID。

授權在機構內共用自訂圖片

如果專案屬於機構,機構可以有多個其他專案,且這些專案對其他專案的存取層級各不相同。建立自訂映像檔後,您可以與機構內其他專案的使用者共用這些映像檔。

Compute Engine 提供下列預先定義的 IAM 角色,可用於管理映像檔:

  • Compute 映像檔使用者 (roles/compute.imageUser):具備列出、讀取及在要求中使用映像檔的權限,但不具備對映像檔的其他權限
  • Compute 儲存空間管理員 (roles/compute.storageAdmin):具備建立、修改及刪除磁碟、映像檔和快照的權限

或者,您也可以建立自己的自訂 IAM 角色

最佳做法是將所有自訂映像檔放在專門用於代管這些映像檔的單一專案中。這樣做可提升圖片管理效率,並讓特定團隊只存取所需的圖片。您也可以授予團隊整個圖片專案的存取權,但由於團隊存取整個圖片專案會違反最低權限原則,因此我們不建議這麼做。

以下範例說明如何新增群組,讓該群組的使用者可以存取圖片。

主控台

  1. 前往 Google Cloud 控制台的「Images」(映像檔) 頁面。

    前往「圖片」

  2. 選取要與其他使用者分享的圖片。

  3. 如要展開權限欄,請按一下「顯示資訊面板」

  4. 如要新增一或多位成員,請按一下「新增主體」

  5. 在「New principals」(新增主體) 欄位中,輸入要與之共用圖片的身分電子郵件地址。

    例如:

    • Google 帳戶電子郵件地址:test-user@gmail.com
    • Google 群組:admins@googlegroups.com
    • 外部識別資訊提供者的 ID:principal://iam.googleapis.com/locations/global/workforcePools/altostrat-contractors/subject/raha@altostrat.com
    • 服務帳戶:server@example.gserviceaccount.com
    • Google Workspace 網域:example.com
  6. 在「角色」清單中,將指標懸停在「Compute Engine」上,然後選取「映像檔使用者」或「儲存空間管理員」,或是選取自訂角色。

  7. 選用:如要進一步控管使用者對資源的存取權,請新增條件式角色繫結。 Google Cloud

  8. 儲存變更。

如要讓使用者從 Google Cloud 控制台啟動共用自訂映像檔,請授予使用者映像檔專案的檢視者 IAM 角色 (roles/viewer)。授予這個角色可確保共用的圖片會顯示在圖片選取清單中。

  1. 前往 Google Cloud 控制台的「IAM」頁面。

    前往身分與存取權管理頁面

  2. 按一下「授予存取權」

  3. 在「New principals」(新增主體) 欄位中,輸入要與之共用圖片的身分電子郵件地址。例如:

    • Google 帳戶電子郵件地址:test-user@gmail.com
    • Google 群組:admins@googlegroups.com
    • 外部識別資訊提供者的 ID:principal://iam.googleapis.com/locations/global/workforcePools/altostrat-contractors/subject/raha@altostrat.com
    • 服務帳戶:server@example.gserviceaccount.com
    • Google Workspace 網域:example.com
  4. 在「Role」(角色)清單中,將滑鼠游標懸停在「Project」(專案) 上,然後選取「Viewer」(檢視者)

  5. 選用:如要進一步控管使用者對資源的存取權,請新增條件式角色繫結。 Google Cloud

  6. 儲存變更。

gcloud

如要更新特定映像檔的 IAM 政策,請使用 gcloud compute images add-iam-policy-binding 指令

gcloud compute images add-iam-policy-binding IMAGE_NAME \
    --member='MEMBER' \
    --role='ROLE'

更改下列內容:

  • IMAGE_NAME:圖片名稱,例如 custom-centos-8
  • MEMBER:您要授予角色的有效身分

    例如:

    • user:test-user@gmail.com
    • group:admins@example.com
    • serviceAccount:test123@example.domain.com
    • domain:example.domain.com
  • ROLE:要將這個身分指派給的角色,例如 roles/compute.imageUserroles/compute.storageAdmin 或自訂角色

如要讓使用者在images.list要求中查看這些共用映像檔,請使用 gcloud projects add-iam-policy-binding 指令,將映像檔專案的「檢視者」IAM 角色 (roles/viewer) 授予使用者。如果不需要使用者查看共用圖片清單,可以略過這個步驟。

gcloud projects add-iam-policy-binding PROJECT_ID \
    --member='MEMBER' \
    --role='roles/viewer'

REST

  1. 使用資源的 getIamPolicy 方法讀取現有政策。舉例來說,如要取得特定圖片的政策,請使用 images.getIamPolicy 方法

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/images/IMAGE_NAME:getIamPolicy
    

    更改下列內容:

    • PROJECT_ID:這個映像檔所屬專案的專案 ID
    • IMAGE_NAME:圖片名稱

    Compute Engine 會在回應中傳回目前的政策。

  2. 如要新增或移除成員及其相關聯的角色,請使用文字編輯器編輯政策。請使用下列格式新增成員:

    • user:test-user@gmail.com
    • group:admins@example.com
    • serviceAccount:test123@example.domain.com
    • domain:example.domain.com

    舉例來說,如要將 roles/compute.imageUser 授予 test-email@example.com,請在政策中新增下列繫結:

    {
     "members": [
       "user:test-email@example.com"
     ],
     "role":"roles/compute.imageUser"
    }
    
  3. 使用 setIamPolicy 方法寫入更新後的政策。舉例來說,如要針對特定映像檔設定政策,請使用 project.setIamPolicy 方法。在要求主體中,提供上一個步驟中更新的 IAM 政策。

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/images/IMAGE_NAME:setIamPolicy
    

    更改下列內容:

    • PROJECT_ID:這個映像檔所屬專案的專案 ID
    • IMAGE_NAME:圖片名稱

如要讓使用者在images.list要求中查看這些共用映像檔,請使用 projects.setIamPolicy 方法,為映像檔專案授予使用者「檢視者」IAM 角色 (roles/viewer)。如果不需要使用者查看共用圖片清單,可以略過這個步驟。

POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:setIamPolicy

授權在機構之間共用自訂圖片

建立自訂映像檔目錄,有助於與機構外部的合作夥伴、使用者或約聘人員共用映像檔。如要與機構外部使用者共用映像檔,請將他們新增為專案的映像檔使用者:

主控台

  1. 前往 Google Cloud 控制台的「Images」(映像檔) 頁面。

    前往「圖片」

  2. 選取要與其他使用者分享的圖片。

  3. 如要展開權限欄,請按一下「顯示資訊面板」

  4. 如要新增一或多位成員,請按一下「新增主體」

  5. 在「New principals」(新增主體) 欄位中,輸入要與之共用圖片的群組電子郵件地址。例如:admins@example.com

  6. 在「角色」清單中,將指標懸停在「Compute Engine」上,然後選取「Compute Image User」

  7. 選用:如要進一步控管使用者對資源的存取權,請新增條件式角色繫結。 Google Cloud

  8. 儲存變更。

如要讓使用者從 Google Cloud 控制台啟動共用自訂映像檔,請授予使用者映像檔專案的檢視者 IAM 角色 (roles/viewer)。授予這個角色可確保共用圖片會顯示在圖片選取清單中。

  1. 前往 Google Cloud 控制台的「IAM」頁面。

    前往身分與存取權管理頁面

  2. 按一下「授予存取權」

  3. 在「New principals」(新增主體) 欄位中,輸入要與之共用圖片的身分電子郵件地址。例如:admins@example.com

  4. 在「Role」(角色)清單中,將滑鼠游標懸停在「Project」(專案) 上,然後選取「Viewer」(檢視者)

  5. 選用:如要進一步控管使用者對資源的存取權,請新增條件式角色繫結。 Google Cloud

  6. 儲存變更。

gcloud

如要將 roles/compute.imageUser 角色授予使用者,請使用 gcloud compute images add-iam-policy-binding 指令

gcloud compute images add-iam-policy-binding IMAGE_NAME \
    --member='MEMBER' \
    --role='roles/compute.imageUser'

更改下列內容:

  • IMAGE_NAME:圖片名稱,例如 custom-centos-8
  • MEMBER:您要授予角色的有效身分,例如 group:admins@example.com

如要讓使用者在images.list要求中查看這些共用映像檔,請使用 gcloud projects add-iam-policy-binding 指令,將映像檔專案的「檢視者」IAM 角色 (roles/viewer) 授予使用者。如果不需要讓使用者查看共用圖片清單,可以跳過這個步驟。

gcloud projects add-iam-policy-binding PROJECT_ID \
    --member='MEMBER' \
    --role='roles/viewer'

REST

  1. 使用資源的 getIamPolicy 方法讀取現有政策。舉例來說,如要取得特定圖片的政策,請使用 images.getIamPolicy 方法

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/images/IMAGE_NAME:getIamPolicy
    

    更改下列內容:

    • PROJECT_ID:這個映像檔所屬專案的專案 ID
    • IMAGE_NAME:圖片名稱

    Compute Engine 會在回應中傳回目前的政策。

  2. 如要新增或移除成員及其相關聯的角色,可以使用文字編輯器編輯政策。請使用下列格式新增成員:

    • user:test-user@gmail.com
    • group:admins@example.com
    • serviceAccount:test123@example.domain.com
    • domain:example.domain.com

    舉例來說,如要將 roles/compute.imageUser 授予 test-user@example.com,請在政策中加入下列繫結:

    {
      "members": [
        "user:test-user@example.com"
      ],
      "role":"roles/compute.imageUser"
    }
    
  3. 使用 setIamPolicy 方法寫入更新後的政策。舉例來說,如要針對特定圖片設定政策,請使用 images.setIamPolicy 方法。在要求主體中,提供上一個步驟中更新的 IAM 政策。

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/images/IMAGE_NAME:setIamPolicy
    

    更改下列內容:

    • PROJECT_ID:這個映像檔所屬專案的專案 ID
    • IMAGE_NAME:圖片名稱

    如要讓使用者在images.list要求中查看這些共用映像檔,請使用 projects.setIamPolicy 方法,為映像檔專案授予使用者「檢視者」IAM 角色 (roles/viewer)。如果不需要讓使用者查看共用圖片清單,可以跳過這個步驟。

    POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:setIamPolicy
    

授予公開分享自訂圖片的權限

您可以與所有通過驗證的 Compute Engine 使用者共用自訂映像檔,無論對方是否屬於您的機構或專案。

您只能與所有通過驗證的使用者共用映像檔等資源,無法與他們共用專案或機構。這項限制和資源階層有助於防止機構不慎將整個專案分享給所有已通過驗證的 Compute Engine 使用者。

以下範例說明如何將 Compute 映像檔使用者角色 (roles/compute.imageUser) 授予自訂映像檔的所有通過驗證的 Compute Engine 使用者。

gcloud

如要將映像檔設為公開,請使用 gcloud compute images add-iam-policy-binding 指令

gcloud compute images add-iam-policy-binding IMAGE_NAME \
    --member='allAuthenticatedUsers' \
    --role='roles/compute.imageUser'

IMAGE_NAME 替換為資源名稱,例如 my_image

REST

  1. 使用 getIamPolicy 方法讀取現有政策。舉例來說,如要取得特定圖片的政策,請使用 images.getIamPolicy 方法

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/images/IMAGE_NAME:getIamPolicy
    

    更改下列內容:

    • PROJECT_ID:這個映像檔所屬專案的專案 ID
    • IMAGE_NAME:圖片名稱

    Compute Engine 會在回應中傳回目前的政策。

  2. 如要新增或移除成員及其相關聯的角色,請使用文字編輯器編輯政策:

    {
     "members": [
       "allAuthenticatedUsers"
     ],
     "role":"roles/compute.imageUser"
    }
    
  3. 使用 setIamPolicy 方法寫入更新後的政策。舉例來說,如要針對特定圖片設定政策,請使用 images.setIamPolicy 方法。在要求主體中,提供上一個步驟中更新的 IAM 政策。

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/images/IMAGE_NAME:setIamPolicy
    

    更改下列內容:

    • PROJECT_ID:這個映像檔所屬專案的專案 ID
    • IMAGE_NAME:圖片名稱

將映像檔存取權授予代管執行個體群組

Compute Engine 可讓您建立執行個體群組,無論是代管非代管執行個體群組。如果您建立代管執行個體群組 (MIG),Compute Engine 會使用 Google APIs 服務代理程式呼叫 Compute Engine API,並執行與群組相關的動作,例如重建健康狀態不良的執行個體及更新執行個體。

如要使用其他專案的映像檔建立 MIG,請將 Compute Image User 角色 (roles/compute.imageUser) 授予屬於建立 MIG 的專案的 API 服務帳戶。例如:

  1. 專案 A 想要使用專案 B 擁有的映像檔建立 MIG。
  2. 專案 B 將 Compute Image 使用者角色授予專案 A 的服務帳戶。
  3. 專案 A 現在可以使用專案 B 中的映像檔建立 MIG。

授予 Compute 映像檔使用者角色後,您可以在建立代管群組的執行個體範本時,使用主控台或映像檔的網址,從其他專案存取映像檔。

取得服務帳戶的電子郵件地址

  1. 在 Google Cloud 控制台中,前往要授予服務帳戶存取權的專案「IAM」IAM頁面。

    前往身分與存取權管理頁面

  2. 如果出現系統提示,請在清單中選取您的專案。

  3. 尋找 Google API 服務代理人,其電子郵件地址的格式如下:

    PROJECT_NUMBER@cloudservices.gserviceaccount.com
    

擷取服務帳戶的電子郵件地址後,請前往下列其中一個章節:

授予 MIG 專案中所有映像檔的存取權

現在您已取得服務帳戶的電子郵件地址,可以將該地址新增至其他專案,並授予 Compute 映像檔使用者角色 (roles/compute.imageUser)。

主控台

  1. 前往 Google Cloud 控制台的「IAM」IAM頁面。

    前往身分與存取權管理頁面

  2. 如要新增成員,請按一下「授予存取權」

  3. 在「New principals」(新增主體) 欄位中,新增服務帳戶電子郵件地址。

  4. 在「Role」(角色) 清單中,將指標懸停在「Compute」上,然後選取「Compute Image User」(Compute 映像檔使用者)

  5. 選用:如要進一步控管使用者對資源的存取權,請新增條件式角色繫結。 Google Cloud

  6. 按一下 [儲存]

  7. 切換回服務帳戶的專案。

您現在可以根據映像檔專案中的映像檔建立執行個體範本,並根據執行個體範本建立 MIG

gcloud

使用 gcloud projects add-iam-policy-binding 指令,從映像檔專案新增服務帳戶:

gcloud projects add-iam-policy-binding PROJECT_ID \
    --member='serviceAccount:SERVICE_ACCOUNT_EMAIL' --role='roles/compute.imageUser'

更改下列內容:

  • PROJECT_ID:含有您要共用映像檔的專案 ID
  • SERVICE_ACCOUNT_EMAIL:服務帳戶的電子郵件地址

您現在可以根據映像檔專案中的映像檔建立執行個體範本,並根據執行個體範本建立 MIG

REST

  1. 使用 projects.getIamPolicy 方法取得映像檔專案的 IAM 政策:

     POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:getIamPolicy
     

    PROJECT_ID 替換為圖片專案的專案 ID。

  2. 如要將 roles/compute.imageUser 角色授予服務帳戶,請使用文字編輯器編輯政策:

    {
      "bindings": [
         {
          "role": "roles/compute.imageUser",
          "members": [
            "serviceAccount:SERVICE_ACCOUNT_EMAIL"
          ]
        }
      ]
    }
    

    SERVICE_ACCOUNT_EMAIL 替換為服務帳戶電子郵件地址。

  3. 使用 projects.setIamPolicy 寫入更新後的政策。在要求主體中,提供上一個步驟中更新的 IAM 政策。

    POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:setIamPolicy
    

    PROJECT_ID 替換為圖片專案的產品 ID。

    您現在可以根據映像檔專案中的映像檔建立執行個體範本,並根據執行個體範本建立 MIG

授予 MIG 專案中特定映像檔的存取權

現在您已取得服務帳戶的電子郵件地址,可以將該地址新增至其他專案,並授予特定映像檔的 Compute Image User 角色 (roles/compute.imageUser)。

主控台

  1. 前往 Google Cloud 控制台的映像檔專案「Images」(映像檔) 頁面。

    前往「圖片」

  2. 選取要分享的圖片旁的核取方塊。

  3. 如要展開權限欄,請按一下「顯示資訊面板」

  4. 在「權限」面板中,按一下「新增主體」

  5. 在「新增主體」欄位中,輸入要與之共用圖片的服務帳戶電子郵件地址。 例如:test123@example.domain.com

  6. 在「角色」清單中,選擇「Compute」,然後選取「Compute Image User」

  7. 選用:如要進一步控管使用者對 Google Cloud 資源的存取權,請新增條件式角色繫結

  8. 按一下 [儲存]

  9. 切換回服務帳戶的專案。

您現在可以根據映像檔專案中的映像檔建立執行個體範本,並根據執行個體範本建立 MIG

gcloud

如要授予服務帳戶特定映像檔的存取權,請使用 gcloud compute images add-iam-policy-binding 指令

gcloud compute images add-iam-policy-binding IMAGE_NAME \
    --member='serviceAccount:SERVICE_ACCOUNT_EMAIL' \
    --role='roles/compute.imageUser'

更改下列內容:

  • IMAGE_NAME:要共用的映像檔名稱
  • SERVICE_ACCOUNT_EMAIL:服務帳戶的電子郵件地址

您現在可以根據映像檔專案中的映像檔建立執行個體範本,並根據執行個體範本建立 MIG

REST

  1. 使用 images.getIamPolicy 方法取得映像檔的 IAM 政策:

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/images/IMAGE_NAME:getIamPolicy
    

    更改下列內容:

    • PROJECT_ID:映像檔的專案 ID 專案
    • IMAGE_NAME:要共用的映像檔名稱
  2. 如要將 roles/compute.imageUser 角色授予服務帳戶,請使用文字編輯器編輯政策:

    {
      "bindings": [
         {
          "role": "roles/compute.imageUser",
          "members": [
            "serviceAccount:SERVICE_ACCOUNT_EMAIL"
          ]
        }
      ]
    }
    

    SERVICE_ACCOUNT_EMAIL 替換為服務帳戶電子郵件地址。

  3. 使用 images.setIamPolicy 方法寫入更新後的政策。 在要求主體中,提供上一個步驟中更新的 IAM 政策。

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/images/IMAGE_NAME:setIamPolicy
    

    更改下列內容:

    • PROJECT_ID:映像檔的專案 ID 專案
    • IMAGE_NAME:要共用的映像檔名稱

    您現在可以根據映像檔專案中的映像檔建立執行個體範本,並根據執行個體範本建立 MIG

控管共用映像檔和快照的使用方式

與其他使用者共用映像檔後,您可以控管這些使用者在機構內使用資源的方式。設定 constraints/compute.storageResourceUseRestrictions 限制條件,定義哪些專案的使用者有權使用您的儲存空間資源。

您必須具備修改組織政策的權限才能設定限制條件。舉例來說,resourcemanager.organizationAdmin 角色就有權設定這類限制條件。

  1. 使用 gcloud organization list 指令找出貴機構的機構 ID:

    gcloud organizations list
    
  2. 使用 gcloud resource-manager org-policies describe 指令取得機構的現有政策設定:

    gcloud resource-manager org-policies describe \
        compute.storageResourceUseRestrictions \
        --organization ORGANIZATION_ID > org-policy.yaml
    

    ORGANIZATION_ID 替換為 12 位數的機構 ID。

  3. 在文字編輯器中開啟 org-policy.yaml 檔案,並修改 compute.storageResourceUseRestrictions 限制條件。新增需要的限制條件,或移除不再需要的限制條件。完成檔案編輯後,請儲存變更。以下是您可能會在政策檔案中設定的限制條件項目範例:

    constraint: compute.storageResourceUseRestrictions
    listPolicy:
      allowedValues:
        - under:organization/organization-id
    
  4. 使用 gcloud resource-manager org-policies set-policy 指令,將 org-policy.yaml 檔案套用到您的機構組織:

    gcloud resource-manager org-policies set-policy \
       --organization=ORGANIZATION_ID org-policy.yaml
    

    ORGANIZATION_ID 替換為 12 位數的機構 ID。

在組織政策中完成限制條件設定後,請進行測試,確定建立的限制條件是您需要的。

使用其他專案的映像檔

如果有人授予您存取其他專案中一或多個映像檔的權限,您就可以透過在要求中指定映像檔專案,存取專案中的這些映像檔。

舉例來說,如要使用其他專案的共用映像檔建立執行個體,請按照「透過共用映像檔建立執行個體」一文中的步驟操作。

您也可以從其他專案的映像檔建立開機磁碟磁碟區。如要瞭解如何透過映像檔建立開機磁碟,請參閱建立獨立開機永久磁碟

撤銷共用圖片的存取權

如果使用者不再需要存取 Compute Engine 資源,請使用 Google Cloud 控制台、Google Cloud CLI 或 REST 撤銷其存取權。

主控台

  1. 前往 Google Cloud 控制台的映像檔專案「Images」(映像檔) 頁面。

    前往「圖片」

  2. 找出要更新的圖片,然後勾選旁邊的核取方塊。

  3. 如要展開權限欄,請按一下「顯示資訊面板」

  4. 展開要移除使用者的角色。

  5. 如要從該角色移除使用者,請按一下「刪除」

gcloud

如要從映像檔的角色中移除使用者,請使用 gcloud compute images remove-iam-policy-binding 指令,並搭配 --member--role 旗標:

gcloud compute images remove-iam-policy-binding IMAGE_NAME \
    --member='MEMBER' \
    --role='ROLE'

更改下列內容:

  • IMAGE_NAME:圖片名稱,例如 my_image
  • MEMBER:要移除的身分

    格式必須為 user|group|serviceAccount:emaildomain:domain。例如:

    • user:test-user@gmail.com
    • group:admins@example.com
    • serviceAccount:test123@example.domain.com
    • domain:example.domain.com
  • ROLE:要從中移除身分的角色

如果要撤銷 Beta 版資源的存取權,請改用 gcloud beta compute 指令。

REST

  1. 使用 images.getIamPolicy 方法讀取現有政策:

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/images/IMAGE_NAME:getIamPolicy
    

    更改下列內容:

    • PROJECT_ID:這個映像檔所屬的專案 ID
    • IMAGE_NAME:圖片名稱

    Compute Engine 會在回應中傳回目前的政策。

  2. 如要移除成員及其相關聯的角色,請使用文字編輯器編輯政策。

  3. 使用 images.setIamPolicy 方法寫入更新後的政策。 在要求主體中,提供上一個步驟中更新的 IAM 政策。

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/global/images/IMAGE_NAME:setIamPolicy
    

    更改下列內容:

    • PROJECT_ID:這個映像檔所屬的專案 ID
    • IMAGE_NAME:圖片名稱

後續步驟