如要允許使用者建立、刪除、使用或共用自訂映像檔,您必須授予適當的身分與存取權管理 (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
-
安裝 Google Cloud CLI。 安裝完成後,執行下列指令初始化 Google Cloud CLI:
gcloud init
如果您使用外部識別資訊提供者 (IdP),請先 使用聯合身分登入 gcloud CLI。
- Set a default region and zone.
REST
如要在本機開發環境中使用本頁的 REST API 範例,請使用您提供給 gcloud CLI 的憑證。
安裝 Google Cloud CLI。 安裝完成後,執行下列指令初始化 Google Cloud CLI:
gcloud init
如果您使用外部識別資訊提供者 (IdP),請先 使用聯合身分登入 gcloud CLI。
詳情請參閱 Google Cloud 驗證說明文件中的「Authenticate for using REST」。
必要的角色
如要取得管理自訂映像檔存取權所需的權限,請要求管理員授予下列 IAM 角色:
-
專案的專案 IAM 管理員 (
roles/resourcemanager.projectIamAdmin
) -
專案的 Compute 管理員 (
roles/compute.admin
)
如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和機構的存取權」。
這些預先定義角色具備管理自訂映像檔存取權所需的權限。如要查看確切的必要權限,請展開「必要權限」部分:
所需權限
如要管理自訂映像檔的存取權,必須具備下列權限:
-
如要授予使用者或服務帳戶建立及共用自訂映像檔所需的權限,請按照下列步驟操作:
-
專案的
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
如果使用者需要列出專案中的所有磁碟
如果您在機構層級授予使用者建立自訂映像檔的權限,使用者就能為機構內的任何專案建立自訂映像檔。
主控台
前往 Google Cloud 控制台的專案或機構「IAM」IAM頁面。
如要新增成員,請按一下「授予存取權」
。在「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
- Google 帳戶電子郵件地址:
在「Select a role」(選取角色) 清單中,選取「Compute Engine」>「Compute Storage Admin」(Compute 儲存空間管理員),或選取您建立的自訂角色。
選用:如要進一步控管使用者對 Google Cloud 資源的存取權,請新增條件式角色繫結。
儲存變更。
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
- Google 帳戶電子郵件地址:
REST
使用資源的
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 會在回應中傳回目前的政策。
如要新增或移除成員及其相關聯的角色,請使用文字編輯器編輯政策。請使用下列格式新增成員:
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" }
使用
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
取得圖片
主控台
如要授予刪除特定圖片的權限,請按照下列步驟操作:
前往 Google Cloud 控制台的「Images」(映像檔) 頁面。
選取要授予權限的圖片。
如要展開權限欄,請按一下「顯示資訊面板」。
如要新增一或多位成員,請按一下「新增主體」。
在「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
- Google 帳戶電子郵件地址:
在「Role」(角色) 清單中,將指標懸停在「Compute Engine」上,然後選取「Storage Admin」(儲存空間管理員),或從「Custom」(自訂) 清單中選取自訂角色。
選用:如要進一步控管使用者對 Google Cloud 資源的存取權,請新增條件式角色繫結。
儲存變更。
如要授予專案或機構刪除圖片的權限,請按照下列步驟操作:
前往專案或機構的「IAM」IAM頁面。
按一下「授予存取權」
。在「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
- Google 帳戶電子郵件地址:
在「Role」(角色) 清單中,將指標懸停在「Compute Engine」上,然後選取「Storage Admin」(儲存空間管理員),或從「Custom」(自訂) 清單中選取自訂角色。
選用:如要進一步控管使用者對 Google Cloud 資源的存取權,請新增條件式角色繫結。
儲存變更。
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
- Google 帳戶電子郵件地址:
ROLE
:要指派給這個身分的角色,例如roles/compute.storageAdmin
角色,或是roles/customImageDeletionRole
等自訂角色
REST
使用資源的相應
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
:專案 IDIMAGE_NAME
:圖片名稱
Compute Engine 會在回應中傳回目前的政策。
如要新增或移除成員及其相關聯的角色,可以使用文字編輯器編輯政策。請使用下列格式新增成員:
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" }
使用
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 角色。
最佳做法是將所有自訂映像檔放在專門用於代管這些映像檔的單一專案中。這樣做可提升圖片管理效率,並讓特定團隊只存取所需的圖片。您也可以授予團隊整個圖片專案的存取權,但由於團隊存取整個圖片專案會違反最低權限原則,因此我們不建議這麼做。
以下範例說明如何新增群組,讓該群組的使用者可以存取圖片。
主控台
前往 Google Cloud 控制台的「Images」(映像檔) 頁面。
選取要與其他使用者分享的圖片。
如要展開權限欄,請按一下「顯示資訊面板」。
如要新增一或多位成員,請按一下「新增主體」。
在「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
- Google 帳戶電子郵件地址:
在「角色」清單中,將指標懸停在「Compute Engine」上,然後選取「映像檔使用者」或「儲存空間管理員」,或是選取自訂角色。
選用:如要進一步控管使用者對資源的存取權,請新增條件式角色繫結。 Google Cloud
儲存變更。
如要讓使用者從 Google Cloud 控制台啟動共用自訂映像檔,請授予使用者映像檔專案的檢視者 IAM 角色 (
roles/viewer
)。授予這個角色可確保共用的圖片會顯示在圖片選取清單中。前往 Google Cloud 控制台的「IAM」頁面。
按一下「授予存取權」
。在「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
- Google 帳戶電子郵件地址:
在「Role」(角色)清單中,將滑鼠游標懸停在「Project」(專案) 上,然後選取「Viewer」(檢視者)。
選用:如要進一步控管使用者對資源的存取權,請新增條件式角色繫結。 Google Cloud
儲存變更。
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
使用資源的
getIamPolicy
方法讀取現有政策。舉例來說,如要取得特定圖片的政策,請使用images.getIamPolicy
方法:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/images/IMAGE_NAME:getIamPolicy
更改下列內容:
PROJECT_ID
:這個映像檔所屬專案的專案 IDIMAGE_NAME
:圖片名稱
Compute Engine 會在回應中傳回目前的政策。
如要新增或移除成員及其相關聯的角色,請使用文字編輯器編輯政策。請使用下列格式新增成員:
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" }
使用
setIamPolicy
方法寫入更新後的政策。舉例來說,如要針對特定映像檔設定政策,請使用project.setIamPolicy
方法。在要求主體中,提供上一個步驟中更新的 IAM 政策。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/images/IMAGE_NAME:setIamPolicy
更改下列內容:
PROJECT_ID
:這個映像檔所屬專案的專案 IDIMAGE_NAME
:圖片名稱
如要讓使用者在
images.list
要求中查看這些共用映像檔,請使用projects.setIamPolicy
方法,為映像檔專案授予使用者「檢視者」IAM 角色 (roles/viewer
)。如果不需要使用者查看共用圖片清單,可以略過這個步驟。POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:setIamPolicy
授權在機構之間共用自訂圖片
建立自訂映像檔目錄,有助於與機構外部的合作夥伴、使用者或約聘人員共用映像檔。如要與機構外部使用者共用映像檔,請將他們新增為專案的映像檔使用者:
主控台
前往 Google Cloud 控制台的「Images」(映像檔) 頁面。
選取要與其他使用者分享的圖片。
如要展開權限欄,請按一下「顯示資訊面板」。
如要新增一或多位成員,請按一下「新增主體」。
在「New principals」(新增主體) 欄位中,輸入要與之共用圖片的群組電子郵件地址。例如:
admins@example.com
。在「角色」清單中,將指標懸停在「Compute Engine」上,然後選取「Compute Image User」。
選用:如要進一步控管使用者對資源的存取權,請新增條件式角色繫結。 Google Cloud
儲存變更。
如要讓使用者從 Google Cloud 控制台啟動共用自訂映像檔,請授予使用者映像檔專案的檢視者 IAM 角色 (
roles/viewer
)。授予這個角色可確保共用圖片會顯示在圖片選取清單中。前往 Google Cloud 控制台的「IAM」頁面。
按一下「授予存取權」
。在「New principals」(新增主體) 欄位中,輸入要與之共用圖片的身分電子郵件地址。例如:
admins@example.com
。在「Role」(角色)清單中,將滑鼠游標懸停在「Project」(專案) 上,然後選取「Viewer」(檢視者)。
選用:如要進一步控管使用者對資源的存取權,請新增條件式角色繫結。 Google Cloud
儲存變更。
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
使用資源的
getIamPolicy
方法讀取現有政策。舉例來說,如要取得特定圖片的政策,請使用images.getIamPolicy
方法:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/images/IMAGE_NAME:getIamPolicy
更改下列內容:
PROJECT_ID
:這個映像檔所屬專案的專案 IDIMAGE_NAME
:圖片名稱
Compute Engine 會在回應中傳回目前的政策。
如要新增或移除成員及其相關聯的角色,可以使用文字編輯器編輯政策。請使用下列格式新增成員:
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" }
使用
setIamPolicy
方法寫入更新後的政策。舉例來說,如要針對特定圖片設定政策,請使用images.setIamPolicy
方法。在要求主體中,提供上一個步驟中更新的 IAM 政策。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/images/IMAGE_NAME:setIamPolicy
更改下列內容:
PROJECT_ID
:這個映像檔所屬專案的專案 IDIMAGE_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
使用
getIamPolicy
方法讀取現有政策。舉例來說,如要取得特定圖片的政策,請使用images.getIamPolicy
方法:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/images/IMAGE_NAME:getIamPolicy
更改下列內容:
PROJECT_ID
:這個映像檔所屬專案的專案 IDIMAGE_NAME
:圖片名稱
Compute Engine 會在回應中傳回目前的政策。
如要新增或移除成員及其相關聯的角色,請使用文字編輯器編輯政策:
{ "members": [ "allAuthenticatedUsers" ], "role":"roles/compute.imageUser" }
使用
setIamPolicy
方法寫入更新後的政策。舉例來說,如要針對特定圖片設定政策,請使用images.setIamPolicy
方法。在要求主體中,提供上一個步驟中更新的 IAM 政策。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/images/IMAGE_NAME:setIamPolicy
更改下列內容:
PROJECT_ID
:這個映像檔所屬專案的專案 IDIMAGE_NAME
:圖片名稱
將映像檔存取權授予代管執行個體群組
Compute Engine 可讓您建立執行個體群組,無論是代管或非代管執行個體群組。如果您建立代管執行個體群組 (MIG),Compute Engine 會使用 Google APIs 服務代理程式呼叫 Compute Engine API,並執行與群組相關的動作,例如重建健康狀態不良的執行個體及更新執行個體。
如要使用其他專案的映像檔建立 MIG,請將 Compute Image User 角色 (
roles/compute.imageUser
) 授予屬於建立 MIG 的專案的 API 服務帳戶。例如:- 專案 A 想要使用專案 B 擁有的映像檔建立 MIG。
- 專案 B 將 Compute Image 使用者角色授予專案 A 的服務帳戶。
- 專案 A 現在可以使用專案 B 中的映像檔建立 MIG。
授予 Compute 映像檔使用者角色後,您可以在建立代管群組的執行個體範本時,使用主控台或映像檔的網址,從其他專案存取映像檔。
取得服務帳戶的電子郵件地址
在 Google Cloud 控制台中,前往要授予服務帳戶存取權的專案「IAM」IAM頁面。
如果出現系統提示,請在清單中選取您的專案。
尋找 Google API 服務代理人,其電子郵件地址的格式如下:
PROJECT_NUMBER@cloudservices.gserviceaccount.com
擷取服務帳戶的電子郵件地址後,請前往下列其中一個章節:
授予 MIG 專案中所有映像檔的存取權
現在您已取得服務帳戶的電子郵件地址,可以將該地址新增至其他專案,並授予 Compute 映像檔使用者角色 (
roles/compute.imageUser
)。主控台
前往 Google Cloud 控制台的「IAM」IAM頁面。
如要新增成員,請按一下「授予存取權」
。在「New principals」(新增主體) 欄位中,新增服務帳戶電子郵件地址。
在「Role」(角色) 清單中,將指標懸停在「Compute」上,然後選取「Compute Image User」(Compute 映像檔使用者)。
選用:如要進一步控管使用者對資源的存取權,請新增條件式角色繫結。 Google Cloud
按一下 [儲存]。
切換回服務帳戶的專案。
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
:含有您要共用映像檔的專案 IDSERVICE_ACCOUNT_EMAIL
:服務帳戶的電子郵件地址
REST
使用
projects.getIamPolicy
方法取得映像檔專案的 IAM 政策:POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:getIamPolicy
將
PROJECT_ID
替換為圖片專案的專案 ID。如要將
roles/compute.imageUser
角色授予服務帳戶,請使用文字編輯器編輯政策:{ "bindings": [ { "role": "roles/compute.imageUser", "members": [ "serviceAccount:SERVICE_ACCOUNT_EMAIL" ] } ] }
將
SERVICE_ACCOUNT_EMAIL
替換為服務帳戶電子郵件地址。使用
projects.setIamPolicy
寫入更新後的政策。在要求主體中,提供上一個步驟中更新的 IAM 政策。POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:setIamPolicy
將
PROJECT_ID
替換為圖片專案的產品 ID。
授予 MIG 專案中特定映像檔的存取權
現在您已取得服務帳戶的電子郵件地址,可以將該地址新增至其他專案,並授予特定映像檔的 Compute Image User 角色 (
roles/compute.imageUser
)。主控台
前往 Google Cloud 控制台的映像檔專案「Images」(映像檔) 頁面。
選取要分享的圖片旁的核取方塊。
如要展開權限欄,請按一下「顯示資訊面板」。
在「權限」面板中,按一下「新增主體」。
在「新增主體」欄位中,輸入要與之共用圖片的服務帳戶電子郵件地址。 例如:
test123@example.domain.com
。在「角色」清單中,選擇「Compute」,然後選取「Compute Image User」。
選用:如要進一步控管使用者對 Google Cloud 資源的存取權,請新增條件式角色繫結。
按一下 [儲存]。
切換回服務帳戶的專案。
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
:服務帳戶的電子郵件地址
REST
使用
images.getIamPolicy
方法取得映像檔的 IAM 政策:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/images/IMAGE_NAME:getIamPolicy
更改下列內容:
PROJECT_ID
:映像檔的專案 ID 專案IMAGE_NAME
:要共用的映像檔名稱
如要將
roles/compute.imageUser
角色授予服務帳戶,請使用文字編輯器編輯政策:{ "bindings": [ { "role": "roles/compute.imageUser", "members": [ "serviceAccount:SERVICE_ACCOUNT_EMAIL" ] } ] }
將
SERVICE_ACCOUNT_EMAIL
替換為服務帳戶電子郵件地址。使用
images.setIamPolicy
方法寫入更新後的政策。 在要求主體中,提供上一個步驟中更新的 IAM 政策。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/images/IMAGE_NAME:setIamPolicy
更改下列內容:
PROJECT_ID
:映像檔的專案 ID 專案IMAGE_NAME
:要共用的映像檔名稱
控管共用映像檔和快照的使用方式
與其他使用者共用映像檔後,您可以控管這些使用者在機構內使用資源的方式。設定
constraints/compute.storageResourceUseRestrictions
限制條件,定義哪些專案的使用者有權使用您的儲存空間資源。您必須具備修改組織政策的權限才能設定限制條件。舉例來說,
resourcemanager.organizationAdmin
角色就有權設定這類限制條件。使用
gcloud organization list
指令找出貴機構的機構 ID:gcloud organizations list
使用
gcloud resource-manager org-policies describe
指令取得機構的現有政策設定:gcloud resource-manager org-policies describe \ compute.storageResourceUseRestrictions \ --organization ORGANIZATION_ID > org-policy.yaml
將 ORGANIZATION_ID 替換為 12 位數的機構 ID。
在文字編輯器中開啟
org-policy.yaml
檔案,並修改compute.storageResourceUseRestrictions
限制條件。新增需要的限制條件,或移除不再需要的限制條件。完成檔案編輯後,請儲存變更。以下是您可能會在政策檔案中設定的限制條件項目範例:constraint: compute.storageResourceUseRestrictions listPolicy: allowedValues: - under:organization/organization-id
使用
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 撤銷其存取權。
主控台
前往 Google Cloud 控制台的映像檔專案「Images」(映像檔) 頁面。
找出要更新的圖片,然後勾選旁邊的核取方塊。
如要展開權限欄,請按一下「顯示資訊面板」。
展開要移除使用者的角色。
如要從該角色移除使用者,請按一下「刪除」
。
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
使用
images.getIamPolicy
方法讀取現有政策:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/images/IMAGE_NAME:getIamPolicy
更改下列內容:
PROJECT_ID
:這個映像檔所屬的專案 IDIMAGE_NAME
:圖片名稱
Compute Engine 會在回應中傳回目前的政策。
如要移除成員及其相關聯的角色,請使用文字編輯器編輯政策。
使用
images.setIamPolicy
方法寫入更新後的政策。 在要求主體中,提供上一個步驟中更新的 IAM 政策。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/global/images/IMAGE_NAME:setIamPolicy
更改下列內容:
PROJECT_ID
:這個映像檔所屬的專案 IDIMAGE_NAME
:圖片名稱
後續步驟
- 進一步瞭解身分與存取權管理。
- 查看 Compute Engine 身分與存取權管理角色清單。
- 進一步瞭解映像檔。
- 瞭解如何使用共用映像檔建立執行個體。
- 瞭解如何建立獨立的開機永久磁碟。
- 瞭解如何搭配 Deployment Manager 部署使用這個角色。
- 透過授予存取權給特定 Compute Engine 資源而非整個專案,採取最低權限原則。
除非另有註明,否則本頁面中的內容是採用創用 CC 姓名標示 4.0 授權,程式碼範例則為阿帕契 2.0 授權。詳情請參閱《Google Developers 網站政策》。Java 是 Oracle 和/或其關聯企業的註冊商標。
上次更新時間:2025-07-29 (世界標準時間)。
-