為 VM 啟用以憑證為依據的存取權

本頁面說明如何為 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 角色。您可以在專案中授予其他角色

主控台

  1. 開啟 IAP 管理員頁面,然後選取「SSH and TCP Resources」(SSH 和 TCP 資源) 分頁標籤。

    前往 IAP 頁面

  2. 選取要設定的 VM 執行個體。如果畫面上未顯示資訊面板,請按一下「Show info panel」

  3. 按一下「Add principal」(新增主體),然後進行以下設定:

    • New principals:指定您要授予存取權的使用者或使用者群組。
    • 「Select a role」(選取角色):依序選取「Cloud IAP」>「IAP-Secured Tunnel User」(受 IAP 保護的通道使用者)
  4. 按一下「新增 IAM 條件」,然後設定條件:

    • Title (名稱):輸入條件名稱。
    • 條件建構工具:從「條件類型」下拉式選單中選取「存取層級」,然後選取先前建立的憑證存取層級。
  5. 按一下 [儲存]

API

如要設定以憑證為基礎的 VM 存取權,請修改應用程式的 policy.json 檔案。

如要進一步瞭解如何使用 IAM API 管理存取政策,請參閱「管理受 IAP 保護資源的存取權」一文。

  1. 匯出下列變數。

    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
    
  2. 使用 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 ''
    
  3. 修改 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
    
  4. 使用 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

  1. 請使用下列任一選項設定 Chrome 瀏覽器。
  2. 在 Chrome 瀏覽器中輸入下列網域,即可存取Google Cloud 主控台:console-secure.cloud.google.com
  3. 使用 IAP 通道存取 Google Cloud VM。

使用 gcloud CLI 上的用戶端憑證存取 VM

  1. 請使用下列任一方法設定 gcloud CLI。

  2. 使用 IAP 通道存取 Google Cloud VM。