本頁面說明如何透過授予特定 Compute Engine資源的存取權,而非授予專案、資料夾或機構等上層資源的存取權,來實行最小權限原則。
如要授予資源存取權,請在資源上設定 Identity and Access Management (IAM) 政策。政策會將一或多個成員 (例如使用者或服務帳戶) 繫結至一或多個角色。每個角色都包含權限清單,可讓成員與資源互動。
如果您將存取權授予父項資源 (例如專案),系統會隱含地將存取權授予所有子項資源 (例如該專案中的所有 VM)。如要限制資源存取權,請盡可能在較低層級的資源上設定 IAM 政策,而非專案層級或以上。
如要瞭解如何授予、變更及撤銷與 Compute Engine 無關的資源存取權 (例如授予 Cloud de Confiance by S3NS 專案存取權),請參閱「授予、變更及撤銷資源的存取權」這篇 IAM 說明文件。
事前準備
- 查看 IAM 總覽。
- 請參閱 Compute Engine 存取權控管總覽。
- 熟悉 Compute Engine 的 IAM 角色 。
-
如果尚未設定驗證,請先完成設定。
驗證可確認您的身分,以便存取 Cloud de Confiance by S3NS 服務和 API。如要從本機開發環境執行程式碼或範例,請選取下列其中一個選項,向 Compute Engine 進行驗證:
選取這個頁面上範例的預計用途分頁:
控制台
使用 Cloud de Confiance 控制台存取 Cloud de Confiance by S3NS 服務和 API 時,不需要設定驗證。
gcloud
-
安裝 Google Cloud CLI,然後 使用聯合身分登入 gcloud CLI。登入後,執行下列指令來初始化 Google Cloud CLI:
gcloud init
-
- 設定預設區域和可用區。
REST
如要在本機開發環境中使用本頁的 REST API 範例,請使用您提供給 gcloud CLI 的憑證。
安裝 Google Cloud CLI,然後 使用聯合身分登入 gcloud CLI。
詳情請參閱 Cloud de Confiance 驗證說明文件中的「使用 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 資源。身分是主體的屬性。主體的身份通常以與帳戶相關聯的電子郵件地址表示。
將資源的 IAM 角色授予主體之前,請先查看某項資源有哪些可以授予的角色。詳情請參閱「查看可針對資源授予的角色」。
如要授予存取特定 Compute Engine 資源的權限,請在資源上設定 IAM 政策。
控制台
- 在 Cloud de Confiance 控制台中,前往要新增權限的資源頁面。
- 如為執行個體,請前往「VM instances」(VM 執行個體) 頁面。
- 如要查看區域和可用區磁碟,請前往「磁碟」頁面。
- 如為快照,請前往「Snapshots」(快照) 頁面。
- 如為映像檔,請前往「Images」(映像檔) 頁面。
- 如要使用執行個體範本,請前往執行個體範本頁面。
- 如要查看機器映像檔,請前往「機器映像檔」頁面。
- 如要查看預訂記錄,請前往預訂記錄頁面。
- 如果是單一用戶群節點,請前往「單一用戶群節點」頁面。
- 找出您要更新的資源,選取該資源旁邊的核取方塊。
- 請根據資源頁面完成下列步驟。
- 如果是 VM 執行個體,請按一下 「權限」。
- 如要使用其他資源,請完成下列步驟:
- 確認資訊面板是否顯示在畫面上。如果畫面上未顯示資訊面板,請按一下「顯示資訊面板」。
- 選取 [權限] 分頁標籤。
- 按一下 「新增主體」。
- 新增主體的 ID,然後選取必要角色。
- 點按「儲存」,儲存變更。
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 資源時,撤銷其存取權。
控制台
- 在 Cloud de Confiance 控制台中,前往要新增權限的資源頁面。
- 如為執行個體,請前往「VM instances」(VM 執行個體) 頁面。
- 如要查看區域和可用區磁碟,請前往「磁碟」頁面。
- 如為快照,請前往「Snapshots」(快照) 頁面。
- 如為映像檔,請前往「Images」(映像檔) 頁面。
- 如果是執行個體群組,請前往「執行個體群組」頁面。
- 如要使用執行個體範本,請前往執行個體範本頁面。
- 如要查看機器映像檔,請前往「機器映像檔」頁面。
- 如要查看預訂記錄,請前往預訂記錄頁面。
- 如果是單一用戶群節點,請前往「單一用戶群節點」頁面。
- 找出您要更新的資源,選取該資源旁邊的核取方塊。
- 請根據資源頁面完成下列步驟。
- 如果是 VM 執行個體,請按一下 「權限」。
- 如要使用其他資源,請完成下列步驟:
- 確認資訊面板是否顯示在畫面上。如果畫面上未顯示資訊面板,請按一下「顯示資訊面板」。
- 選取 [權限] 分頁標籤。
- 按一下要移除主體的角色卡片。這會展開資訊卡,並顯示具有該資源角色的使用者。
- 如要從該角色移除主體,請按一下 「刪除」。
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 政策。
測試呼叫者是否擁有權限
如要瞭解身分擁有的權限,請使用 testIamPermissions API 方法,查看身分可用的權限。
這個方法會將資源網址和一組權限做為輸入參數,並傳回呼叫者可用的權限組合。您可以在任何支援的資源上使用這個方法。
通常 testIamPermissions 是用於與專有軟體整合,例如自訂圖形使用者介面。如果您直接使用 Cloud de Confiance管理權限,通常不會呼叫 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 角色所含權限。
- 瞭解如何建立及管理自訂角色。