管理自訂映像檔的存取權

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

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

事前準備

  • 參閱 IAM 說明文件。
  • 請參閱這篇文章,瞭解 Compute Engine IAM 角色,特別是 Compute Image User 角色 (roles/compute.imageUser)。
  • 如果尚未設定驗證,請先完成設定。 驗證可確認您的身分,以便存取 Google Cloud 服務和 API。如要從本機開發環境執行程式碼或範例,請選取下列其中一個選項,向 Compute Engine 進行驗證:

    選取這個頁面上範例的預計用途分頁:

    控制台

    使用 Google Cloud 控制台存取 Google Cloud 服務和 API 時,不需要設定驗證。

    gcloud

    1. 安裝 Google Cloud CLI。 完成後,執行下列指令來初始化 Google Cloud CLI:

      gcloud init

      如果您使用外部識別資訊提供者 (IdP),請先 使用聯合身分登入 gcloud CLI。

  • 設定預設區域和可用區。
  • REST

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

      安裝 Google Cloud CLI。

      如果您使用外部識別資訊提供者 (IdP),請先 使用聯合身分登入 gcloud CLI。

    詳情請參閱 Google Cloud 驗證說明文件中的「使用 REST 進行驗證」。

必要的角色

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

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

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

所需權限

如要管理自訂圖片的存取權,必須具備下列權限:

  • 如要授予使用者或服務帳戶建立及共用自訂映像檔的必要權限,請按照下列步驟操作:
    • 專案的 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_ID 或 PROJECT_ID: 組織 ID 或專案 ID,例如 my-organization-1 或 my-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. 在「角色」清單中,將指標懸停在「Compute Engine」上,然後選取「Storage Admin」(儲存空間管理員),或從「Custom」(自訂) 清單中選取自訂角色。

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

  8. 儲存變更。

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

  1. 前往專案或機構的「身分與存取權管理」頁面。

    前往「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. 在「角色」清單中,將指標懸停在「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_ID 或 PROJECT_ID 或 IMAGE_NAME:12 位數的組織 ID、專案 ID 或圖片名稱,例如 123456578920、my-project-1 或 my-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」(身分與存取權管理) 頁面。

    前往「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.imageUser、roles/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」(身分與存取權管理) 頁面。

    前往「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 映像檔使用者角色授予專案 A 的服務帳戶。
  3. 專案 A 現在可以使用專案 B 的映像檔建立 MIG。

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

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

  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. 在「新增主體」欄位中,新增服務帳戶電子郵件地址。

  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:email 或 domain: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:圖片名稱

後續步驟