本頁說明如何透過授予特定 Compute Engine 資源的存取權,而非授予專案、資料夾或機構等上層資源的存取權,實踐最低權限原則。
如要授予資源的存取權,請在資源上設定 Identity and Access Management (IAM) 政策。這項政策會將一或多個成員 (例如使用者或服務帳戶) 繫結至一或多個角色。每個角色都包含權限清單,可讓成員與資源互動。
如果您將存取權授予父項資源 (例如專案),則會隱含地將存取權授予所有子項資源 (例如該專案中的所有 VM)。如要限制資源存取權,請盡可能在較低層級的資源上設定 IAM 政策,而不是在專案層級或以上設定。
如要瞭解如何授予、變更及撤銷與 Compute Engine 無關的資源存取權 (例如授予 Google Cloud 專案的存取權),請參閱 IAM 說明文件中的「授予、變更及撤銷資源的存取權」一文。
事前準備
- 查看 IAM 總覽。
- 閱讀 Compute Engine 存取權控管總覽。
- 熟悉 Compute Engine 的 IAM 角色 。
-
如果尚未設定驗證,請先完成設定。
驗證可確認您的身分,以便存取 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 驗證說明文件中的「使用 REST 進行驗證」。
必要的角色
如要取得管理 Compute Engine 資源存取權所需的權限,請要求管理員授予資源的Compute 管理員 (
roles/compute.admin) IAM 角色。如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。這個預先定義的角色具備管理 Compute Engine 資源存取權所需的權限。如要查看確切的必要權限,請展開「Required permissions」(必要權限) 部分:
所需權限
如要管理 Compute Engine 資源的存取權,必須具備下列權限:
-
如要授予或撤銷資源存取權,請按照下列步驟操作:
-
專案的
compute.projects.get -
compute.RESOURCE_TYPE.get資源 -
compute.RESOURCE_TYPE.getIamPolicy資源 -
compute.RESOURCE_TYPE.setIamPolicy資源
-
專案的
-
如要測試呼叫者權限:
compute.RESOURCE_TYPE.getIamPolicy在資源上將 RESOURCE_TYPE 替換為要管理存取權的資源。例如
instances、instanceTemplates或images。
支援的資源
如要查看支援資源層級存取權控管的 Compute Engine 資源清單,請參閱「接受 IAM 政策的資源類型」,並篩選 Compute Engine。
如為不支援資源層級存取權控管的其他 Compute Engine 資源,您必須在專案、資料夾或機構層級管理這些資源的存取權。如要瞭解機構、資料夾或專案,請參閱「資源階層」。
授予 Compute Engine 資源的存取權
主體 (例如使用者或服務帳戶) 可以存取 Compute Engine 資源。身分是主體的屬性。主體的 ID 通常以與帳戶相關聯的電子郵件地址表示。
將資源的 IAM 角色授予主體之前,請先查看某項資源有哪些可以授予的角色。詳情請參閱「查看可針對資源授予的角色」。
如要授予存取特定 Compute Engine 資源的權限,請在資源上設定 IAM 政策。
控制台
- 在 Google Cloud 控制台中,找出要新增權限的資源,並前往該資源對應的頁面。
- 如為執行個體,請前往「VM instances」(VM 執行個體) 頁面。
- 如為區域和地區磁碟,請前往「Disks」(磁碟) 頁面。
- 如為快照,請前往「Snapshots」(快照) 頁面。
- 如為映像檔,請前往「Images」(映像檔) 頁面。
- 如為執行個體範本,請前往「Instance templates」(執行個體範本) 頁面。
- 如為機器映像檔,請前往「Machine images」(機器映像檔) 頁面。
- 如為預留項目,請前往「預留項目」頁面。
- 如為單一用戶群節點,請前往單一用戶群節點頁面。
- 找出您要更新的資源,選取該資源旁邊的核取方塊。
- 請根據資源頁面完成下列步驟。
- 如果是 VM 執行個體,請按一下「權限」。
- 如為其他資源,請完成下列步驟:
- 確認資訊面板是否顯示在畫面上。如果畫面上未顯示資訊面板,請按一下「Show info panel」(顯示資訊面板)。
- 選取 [權限] 分頁標籤。
- 按一下 「新增主體」。
- 新增主體的身分,然後選取必要角色。
- 若要儲存變更,請按一下 [儲存]。
gcloud
如要將角色授予資源上的主體,請使用該資源的
add-iam-policy-binding子指令,並搭配--member和--role旗標。gcloud compute RESOURCE_TYPE add-iam-policy-binding RESOURCE_NAME \ --member='PRINCIPAL' \ --role='ROLE'更改下列內容:
RESOURCE_TYPE:資源類型。有效值包括:disksimagesinstancesinstance-templatesmachine-imagesreservationssole-tenancy node-groupssole-tenancy node-templatessnapshots
RESOURCE_NAME:資源名稱。例如:my_instance。PRINCIPAL:要授予角色的主體有效身分。格式應為user|group|serviceAccount:EMAIL_ADDRESS或domain:DOMAIN_ADDRESS。例如:user:test-user@gmail.comgroup:admins@example.comserviceAccount:test123@example.domain.comdomain:example.domain.com
ROLE:要指派給這個主體的角色。
如果要授予預先發布資源的存取權,請改用
gcloud beta compute指令。REST
如要透過 API 修改 IAM 政策,請按照下列步驟操作:
使用資源的相應
getIamPolicy方法讀取現有政策。舉例來說,下列 HTTP 要求會讀取 VM 的 IAM 政策:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME:getIamPolicy
更改下列內容:
PROJECT_ID:這個 VM 所屬專案的專案 ID。ZONE:VM 的可用區。如果是區域或全域資源,請將zones/ZONE替換為regions/REGION或global。VM_NAME:VM 執行個體的名稱。
Compute Engine 會在回應中傳回目前的政策。
使用文字編輯器編輯政策,新增或移除主體及其相關聯的角色。舉例來說,如要將
compute.admin角色授予 email@example.com,請在政策中新增下列繫結:{ "members": [ "user:email@example.com" ], "role":"roles/compute.admin" }使用
setIamPolicy()撰寫更新版政策:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME:setIamPolicy
更改下列內容:
PROJECT_ID:這個 VM 所屬專案的專案 ID。ZONE:VM 的可用區。如果是區域或全域資源,請將zones/ZONE替換為regions/REGION或global。VM_NAME:VM 執行個體的名稱。
在要求主體中,提供上一個步驟中更新的 IAM 政策。
撤銷資源存取權
最佳做法是,在主體不再需要存取 Compute Engine 資源時,撤銷其存取權。
控制台
- 在 Google Cloud 控制台中,找出要新增權限的資源,並前往該資源對應的頁面。
- 如為執行個體,請前往「VM instances」(VM 執行個體) 頁面。
- 如為區域和地區磁碟,請前往「Disks」(磁碟) 頁面。
- 如為快照,請前往「Snapshots」(快照) 頁面。
- 如為映像檔,請前往「Images」(映像檔) 頁面。
- 如為執行個體群組,請前往「Instance groups」(執行個體群組) 頁面。
- 如為執行個體範本,請前往「Instance templates」(執行個體範本) 頁面。
- 如為機器映像檔,請前往「Machine images」(機器映像檔) 頁面。
- 如為預留項目,請前往「預留項目」頁面。
- 如為單一用戶群節點,請前往單一用戶群節點頁面。
- 找出您要更新的資源,選取該資源旁邊的核取方塊。
- 請根據資源頁面完成下列步驟。
- 如果是 VM 執行個體,請按一下「權限」。
- 如為其他資源,請完成下列步驟:
- 確認資訊面板是否顯示在畫面上。如果畫面上未顯示資訊面板,請按一下「Show info panel」(顯示資訊面板)。
- 選取 [權限] 分頁標籤。
- 找出要移除主體的角色資訊卡,然後按一下。這會展開資訊卡,並顯示具有該資源角色的使用者。
- 如要從該角色移除主體,請按一下 「刪除」。
gcloud
如要從資源的主體移除角色,請使用資源的
remove-iam-policy-binding子指令,並搭配--member和--role旗標。gcloud compute RESOURCE_TYPE remove-iam-policy-binding RESOURCE_NAME \ --member='MEMBER' \ --role='ROLE'更改下列內容:
RESOURCE_TYPE:資源類型。有效值包括:disksimagesinstancesinstance-templatesmachine-imagesreservationssole-tenancy node-groupssole-tenancy node-templatessnapshots
RESOURCE_NAME:資源名稱。 例如:my_instance。PRINCIPAL:主體的有效身分。格式應為user|group|serviceAccount:EMAIL_ADDRESS或domain:DOMAIN_ADDRESS。例如:user:test-user@gmail.comgroup:admins@example.comserviceAccount:test123@example.domain.comdomain:example.domain.com
ROLE:要移除主體的角色。
如果要撤銷預先發布版資源的存取權,請改用
gcloud beta compute指令。REST
如要透過 API 直接修改 IAM 政策,請按照下列步驟操作:
使用資源的相應
getIamPolicy方法讀取現有政策。舉例來說,下列 HTTP 要求會讀取 VM 的 IAM 政策:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME:getIamPolicy
更改下列內容:
PROJECT_ID:這個 VM 所屬專案的專案 ID。ZONE:VM 的可用區。如果是區域或全域資源,請將zones/ZONE替換為regions/REGION或global。VM_NAME:VM 執行個體的名稱。
Compute Engine 會在回應中傳回目前的政策。
使用文字編輯器編輯政策,從相關聯的角色中移除成員。舉例來說,從
compute.admin角色移除 email@example.com:{ "members": [ "user:owner@example.com" ], "role":"roles/compute.admin" }使用
setIamPolicy()撰寫更新版政策:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME:setIamPolicy
更改下列內容:
PROJECT_ID:這個 VM 所屬專案的專案 ID。ZONE:VM 的可用區。如果是區域或全域資源,請將zones/ZONE替換為regions/REGION或global。VM_NAME:VM 執行個體的名稱。
在要求主體中,提供上一個步驟中更新的 IAM 政策。
測試呼叫者是否擁有權限
如果您不知道身分擁有哪些權限,請使用
testIamPermissionsAPI 方法,查看身分可用的權限。該方法會將資源網址和權限組合視為輸入參數,並傳回已授予呼叫方的權限組合。您可以在任何支援的資源上使用此方法。
一般來說,
testIamPermissions適合與您的專屬軟體 (如自訂圖形使用者介面) 整合。如果直接使用 Google Cloud管理權限,通常不會呼叫testIamPermissions。舉例來說,如要在 Compute Engine API 之上建構 GUI,而 GUI 具有啟動執行個體的「啟動」按鈕,則可呼叫
compute.instances.testIamPermissions()來判斷應啟用或停用按鈕。如何測試呼叫者是否擁有資源的特定權限:
傳送要求到資源,並以清單形式將您要檢查的權限加入要求主體。
舉例來說,您可能會想要檢查執行個體上的
compute.instances.start、compute.instances.stop和compute.instances.delete。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/testIamPermissions { "permissions": [ "compute.instances.start", "compute.instances.stop", "compute.instances.delete" ] }該要求會傳回已為呼叫者啟用的權限。
{ "permissions": [ "compute.instances.start", "compute.instances.stop" ] }
為多位成員修改資源存取權
如要同時修改多位成員的 Compute Engine 資源存取權,請參閱以程式輔助方式修改 IAM 政策的建議。
後續步驟
- 瞭解如何使用 IAM 管理自訂映像檔的存取權。
- 進一步瞭解服務帳戶。
- 進一步瞭解 Compute Engine IAM 角色。
- 進一步瞭解預先定義的 Compute Engine IAM 角色具備哪些權限。
- 瞭解如何建立及管理自訂角色。
除非另有註明,否則本頁面中的內容是採用創用 CC 姓名標示 4.0 授權,程式碼範例則為阿帕契 2.0 授權。詳情請參閱《Google Developers 網站政策》。Java 是 Oracle 和/或其關聯企業的註冊商標。
上次更新時間:2026-02-22 (世界標準時間)。
[[["容易理解","easyToUnderstand","thumb-up"],["確實解決了我的問題","solvedMyProblem","thumb-up"],["其他","otherUp","thumb-up"]],[["難以理解","hardToUnderstand","thumb-down"],["資訊或程式碼範例有誤","incorrectInformationOrSampleCode","thumb-down"],["缺少我需要的資訊/範例","missingTheInformationSamplesINeed","thumb-down"],["翻譯問題","translationIssue","thumb-down"],["其他","otherDown","thumb-down"]],["上次更新時間:2026-02-22 (世界標準時間)。"],[],[]] -