本頁面說明如何為 Google Cloud 虛擬機器人啟用以憑證為基礎的存取權 (CBA)。您可以使用 CBA 保護信任裝置對 Google Cloud VM 的存取權。
總覽
VM 專用的 CBA 會使用 Google Cloud 情境感知存取權功能,透過雙向傳輸層安全標準 (mTLS) 保護存取權。以下是您用來啟用及使用 VM CBA 的主要元件:
- Access Context Manager:讓您在決定網頁應用程式的存取權時,建立需要憑證的存取層級。
- Identity-Aware Proxy (IAP):IAP TCP 轉送可讓您建立加密通道,將 SSH、遠端桌面協定和其他流量轉送至 VM 執行個體。此外,IAP 政策還可讓您精細控管哪些使用者可以建立通道,以及使用者必須符合哪些存取條件才能使用這類通道。
- Chrome Enterprise 政策:使用 Chrome 瀏覽器時,在使用者和 VM 之間提供相互驗證 (mTLS)。
- Google Cloud CLI:使用 gcloud CLI 時,在使用者和 VM 之間提供相互驗證 (mTLS)。
事前準備
請確認您已為 Google Cloud 專案建立 CBA 存取層級。
授予透過 IAP TCP 轉送存取 VM 的角色
您必須在專案中授予適當的身分與存取權管理 (IAM) 角色,才能讓使用者或使用者群組使用 IAP TCP 轉送功能存取 VM。
下表列出您需要授予信任的管理員的預先定義角色,以便執行 TCP 轉送和相關工作。
工作 | 角色 | 更多資訊 |
---|---|---|
TCP 轉送 |
受 IAP 保護的通道使用者 (roles/iap.tunnelResourceAccessor )
|
將存取權授予專案中的所有 VM 執行個體或將存取權授予特定 VM |
SSH 存取 |
Compute 執行個體管理員 (v1) (roles/compute.instanceAdmin.v1 )
|
|
OS 登入 (建議做法) | 多項政策 | 在使用者帳戶上設定 OS Login 角色 |
使用服務帳戶 | 服務帳戶使用者 (roles/iam.serviceAccountUser ) |
serviceAccountUser 角色 |
如要進一步瞭解如何授予 IAP TCP 轉送的角色,請參閱「授予 IAP TCP 轉送的角色」。
設定以憑證為依據的 VM 存取權
雖然 IAP-TCP 可讓您授予專案中所有 VM 執行個體的存取權,但您必須為每個個別 VM 執行個體設定以憑證為基礎的存取權。
如要授予使用者或使用者群組以憑證為基礎的 VM 存取權,請在 VM 執行個體上授予 roles/iap.tunnelResourceAccessor
角色。您可以在專案中授予其他角色。
主控台
開啟 IAP 管理員頁面,然後選取「SSH and TCP Resources」(SSH 和 TCP 資源) 分頁標籤。
選取要設定的 VM 執行個體。如果畫面上未顯示資訊面板,請按一下「Show info panel」。
按一下「Add principal」(新增主體),然後進行以下設定:
- New principals:指定您要授予存取權的使用者或使用者群組。
- 「Select a role」(選取角色):依序選取「Cloud IAP」>「IAP-Secured Tunnel User」(受 IAP 保護的通道使用者)。
按一下「新增 IAM 條件」,然後設定條件:
按一下 [儲存]。
API
如要設定以憑證為基礎的 VM 存取權,請修改應用程式的 policy.json
檔案。
如要進一步瞭解如何使用 IAM API 管理存取政策,請參閱「管理受 IAP 保護資源的存取權」一文。
匯出下列變數。
export IAP_BASE_URL=https://iap.googleapis.com/v1/projects/PROJECT_NUMBER/iap_tunnel # Replace POLICY_FILE.JSON with the name of JSON file to use for setIamPolicy export JSON_NEW_POLICY=POLICY_FILE.JSON
使用
getIamPolicy
方法取得 Compute Engine 執行個體的 IAM 政策。結尾的空資料位元會將 curl 要求轉換為POST
,而不是GET
。curl -i -H "Authorization: Bearer $(gcloud auth print-access-token)" \ ${IAP_BASE_URL}/zones/ZONE_NAME/instances/INSTANCE_ID or INSTANCE_NAME:getIamPolicy \ -d ''
修改 IAM 政策 JSON 檔案,將
iap.tunnelResourceAccessor
角色和憑證存取權授予實體。以下是
policy.json
檔案範例,會將iap.tunnelResourceAccessor
角色授予 VM 執行個體管理員群組,為其授予以憑證為基礎的 IAP 安全通道資源存取權。請注意,如果主體具有擁有者角色,則有權使用 IAP 進行 TCP 轉送。
{ "policy": { "bindings": [ { "role": "roles/iap.tunnelResourceAccessor", "members": ["group:instance-admins@example.com"], "condition": { "expression": "\"accessPolicies/POLICY_NAME/accessLevels/CERTIFICATE_BASED_ACCESS_LEVEL_NAME\" in request.auth.access_levels, "title": "CERTIFICATE_BASED_CONDITION_NAME" } } ] } }
如要尋找政策名稱,請呼叫
accessPolicies.list
方法。GET https://accesscontextmanager.googleapis.com/v1/accessPolicies
使用
setIamPolicy
方法設定新的policy.json
檔案。curl -i -H "Content-Type:application/json" \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ ${IAP_BASE_URL}/zones/ZONE_NAME/instances/INSTANCE_ID or INSTANCE_NAME:setIamPolicy \ -d @${JSON_NEW_POLICY}
使用用戶端憑證存取 VM
如要使用用戶端憑證存取 VM,請使用下列任一方法。
- 使用企業憑證:如果您有 PKI 基礎架構,請使用這項方法。
- 使用端點驗證所佈建的憑證:如果您沒有 PKI 基礎架構,請使用這個方法。端點驗證會為每部裝置自動佈建並註冊自行簽署憑證,並使用Google Cloud 進行驗證。
在 Chrome 瀏覽器上使用用戶端憑證存取 VM
- 請使用下列任一選項設定 Chrome 瀏覽器。
- 在 Chrome 瀏覽器中輸入下列網域,即可存取Google Cloud 主控台:
console-secure.cloud.google.com
。 - 使用 IAP 通道存取 Google Cloud VM。
使用 gcloud CLI 上的用戶端憑證存取 VM
請使用下列任一方法設定 gcloud CLI。
使用 IAP 通道存取 Google Cloud VM。