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

本頁說明如何為 Google Cloud VM 啟用憑證式存取權 (CBA)。您可以使用 CBA,確保只有信任的裝置可以存取 VM。 Google Cloud

總覽

VM 適用的 CBA 會使用 Google Cloud 情境感知存取權功能,透過雙向傳輸層安全標準 (mTLS) 確保存取安全。以下是您用來為 VM 啟用及使用 CBA 的主要元件:

  • Access Context Manager:可讓您建立存取層級,在判斷網頁應用程式的存取權時,要求提供憑證。
  • Identity-Aware Proxy (IAP):IAP TCP 轉送可讓您建立加密通道,將 SSH、遠端桌面協定和其他流量轉送至 VM 執行個體。此外,IAP 政策可讓您精細控管哪些使用者可以建立連往特定 VM 執行個體的通道,以及使用者必須符合哪些存取條件才能使用這類通道。
  • Chrome Enterprise 政策:在使用者使用 Chrome 瀏覽器時,提供使用者與 VM 之間的相互驗證 (mTLS)。
  • Google Cloud CLI:使用 gcloud CLI 時,在使用者和 VM 之間提供相互驗證 (mTLS)。

事前準備

確認您已為 Google Cloud 專案建立 CBA 存取層級

授予透過 IAP TCP 轉送存取 VM 的角色

您必須在專案中授予適當的 Identity and Access Management (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) 服務帳戶使用者角色

如要進一步瞭解如何授予 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 通道存取 VM。 Google Cloud

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

  1. 使用下列其中一種方法設定 gcloud CLI。

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