如要讓使用者建立、刪除、使用或分享自訂圖片,您必須授予他們適當的身分與存取權管理 (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
-
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.
- Set a default region and zone.
REST
To use the REST API samples on this page in a local development environment, you use the credentials you provide to the 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.
For more information, see Authenticate for using REST in the Google Cloud authentication documentation.
-
必要的角色
如要取得管理自訂圖片存取權所需的權限,請要求管理員授予您下列 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:
compute.instances.setMetadata
設定 VM 執行個體中繼資料 - 如何為 VM 設定標記:
compute.instances.setTags
- 如何為 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」頁面。
如要新增成員,請按一下
「授予存取權」。在「New principals」(新增主體) 欄位中,輸入您要授予存取權的 ID 電子郵件地址。
例如:
- Google 帳戶電子郵件:
test-user@gmail.com
- Google 群組:
admins@googlegroups.com
- 外部識別資訊提供者的識別資訊:
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 儲存空間管理員」,或選取您建立的自訂角色。
選用:如要進一步控制使用者對 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
- 外部識別資訊提供者的識別資訊:
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 Storage 管理員角色 (roles/compute.storageAdmin
),您可以將該角色指派給使用者,讓他們建立、刪除及管理儲存空間相關資源,包括映像檔、磁碟和快照。如果您需要的角色只允許刪除圖片,則必須建立自訂角色。在自訂角色中加入下列權限:
compute.images.delete
可刪除圖片compute.images.list
使用者是否需要在專案或機構中列出圖片compute.images.get
來取得圖片
主控台
如要授予刪除特定圖片的權限,請按照下列步驟操作:
前往 Google Cloud 控制台的「Images」頁面。
選取要授權的圖片。
如要展開權限欄,請按一下「顯示資訊面板」。
如要新增一或多位成員,請按一下「Add principal」。
在「New principals」(新增主體) 欄位中,輸入要與其分享圖片的使用者電子郵件地址。
例如:
- Google 帳戶電子郵件:
test-user@gmail.com
- Google 群組:
admins@googlegroups.com
- 外部識別資訊提供者的識別資訊:
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 資源的存取權,請新增條件式角色繫結。
儲存變更。
如要授予刪除專案或機構圖片的權限,請按照下列步驟操作:
前往專案或機構的「身分與存取權管理」頁面。
按一下「授予存取權」
。在「New principals」(新增主體) 欄位中,輸入您要授予存取權的使用者身分識別資訊。例如:
- Google 帳戶電子郵件:
test-user@gmail.com
- Google 群組:
admins@googlegroups.com
- 外部識別資訊提供者的識別資訊:
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
- 外部識別資訊提供者的識別資訊:
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」頁面。
選取要與其他使用者分享的圖片。
如要展開權限欄,請按一下「顯示資訊面板」。
如要新增一或多位成員,請按一下「Add principal」。
在「New principals」(新增主體) 欄位中,輸入要與其分享圖片的使用者電子郵件地址。
例如:
- Google 帳戶電子郵件:
test-user@gmail.com
- Google 群組:
admins@googlegroups.com
- 外部識別資訊提供者的識別資訊:
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 控制台啟動共用自訂圖片,請授予使用者圖片專案的「Viewer」IAM 角色 (roles/viewer
)。授予這個角色有助於確保共用圖片會顯示在圖片選取清單中。
前往 Google Cloud 控制台的「IAM」IAM(身分與存取權管理) 頁面。
按一下「授予存取權」
。在「New principals」(新增主體) 欄位中,輸入要與其分享圖片的使用者電子郵件地址。例如:
- Google 帳戶電子郵件:
test-user@gmail.com
- Google 群組:
admins@googlegroups.com
- 外部識別資訊提供者的識別資訊:
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
方法,為使用者授予圖片專案的 Viewer IAM 角色 (roles/viewer
)。如果您不希望使用者能夠查看分享圖片清單,可以略過這個步驟。
POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:setIamPolicy
授予權限,在機構之間分享自訂圖片
建立自訂圖片目錄,可用於與機構外部的合作夥伴、使用者或承包商共用圖片。如要與機構外部的使用者共用圖片,請將他們新增為專案的圖片使用者:
主控台
前往 Google Cloud 控制台的「Images」頁面。
選取要與其他使用者分享的圖片。
如要展開權限欄,請按一下「顯示資訊面板」。
如要新增一或多位成員,請按一下「Add principal」。
在「新增主體」欄位中,輸入要與之分享圖片的群組電子郵件地址。例如:
admins@example.com
。在「角色」清單中,將指標懸停在「Compute Engine」上,然後選取「Compute Image User」。
選用:如要進一步控制使用者對 Google Cloud資源的存取權,請新增條件式角色繫結。
儲存變更。
如要讓使用者從 Google Cloud 控制台啟動共用自訂圖片,請授予使用者圖片專案的「Viewer」IAM 角色 (roles/viewer
)。授予這個角色有助於確保共用圖片會顯示在圖片選取清單中。
前往 Google Cloud 控制台的「IAM」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
方法,為使用者授予圖片專案的 Viewer 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 API 服務代理程式來呼叫 Compute Engine API,並執行與群組相關的動作,例如重建健康狀態不良的執行個體及更新執行個體。
如果您要使用其他專案中的映像檔建立 MIG,請將 Compute Image User 角色 (roles/compute.imageUser
) 授予屬於建立 MIG 的專案的 API 服務帳戶。例如:
- 專案 A 想要使用專案 B 擁有的映像檔建立 MIG。
- 專案 B 將 Compute Image User 角色授予專案 A 的服務帳戶。
- 專案 A 現在可以使用專案 B 的映像檔來建立 MIG。
授予 Compute 映像檔使用者角色後,您可以在為代管群組建立執行個體範本時,使用主控台或映像檔的網址,從其他專案存取映像檔。
取得服務帳戶的電子郵件地址
在 Google Cloud 控制台中,前往要授予服務帳戶存取權的專案的「IAM」頁面。
如果出現系統提示,請在清單中選取您的專案。
尋找 Google API 服務代理人,其電子郵件地址的格式如下:
PROJECT_NUMBER@cloudservices.gserviceaccount.com
擷取服務帳戶的電子郵件地址後,請前往下列任一專區:
授予 MIG 存取專案中所有映像檔的權限
取得服務帳戶的電子郵件地址後,您可以將該地址新增至其他專案,並授予 Compute 映像檔使用者角色 (roles/compute.imageUser
)。
主控台
在 Google Cloud 控制台中,前往圖像專案的「IAM」頁面。
如要新增成員,請按一下
「授予存取權」。在「新增主體」欄位中,新增服務帳戶電子郵件地址。
在「角色」清單中,將游標懸停在「Compute」上,然後選取「Compute Image User」。
選用:如要進一步控制使用者對 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 Engine 映像檔使用者角色 (roles/compute.imageUser
)。
主控台
在 Google Cloud 控制台中,前往映像檔專案的「Images」頁面。
找出要分享的圖片,然後勾選旁邊的核取方塊。
如要展開權限欄,請按一下「顯示資訊面板」。
在「Permissions」面板中,按一下「Add principal」。
在「新增主體」欄位中,輸入您要與之分享圖片的服務帳戶電子郵件地址。例如:
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
:圖像專案的專案 IDIMAGE_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
:圖像專案的專案 IDIMAGE_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
:要移除的 ID格式必須為
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 資源而非整個專案,採取最低權限原則。