使用 VPC Service Controls 範圍保護 Compute Engine

本教學課程說明如何使用服務安全防護措施保護 Compute Engine,以及如何排解輸入違規問題,允許授權存取 Compute Engine。

您可以透過 VPC Service Controls,為 Google 代管服務的資源定義服務範圍,藉此控管對這些服務和這些服務之間的通訊。您可以圍繞敏感資源建立零信任邊界,限制只有授權 IP 位址、使用者和裝置可以存取。這項功能可讓您定義安全性政策,禁止存取受信任範圍外的 Google 代管服務、禁止透過不受信任的位置存取資料,以及降低資料竊取的風險。

本教學課程適用於 Google Cloud 機構管理員,可協助他們瞭解 VPC Service Controls 的基本概念。

建立服務範圍

建立服務安全防護措施,保護 My-Project-2 專案中的 Compute Engine API:

  1. 在 Google Cloud 控制台中,前往「VPC Service Controls」頁面。

    前往 VPC Service Controls

    確認您位於機構範圍內。

  2. 按一下「管理政策」

  3. 建立新的存取權政策,範圍限定為 Exercise 資料夾。

  4. 建立新的周邊裝置,並提供下列詳細資料:

    • 標題:MyFirstPerimeter

    • 範圍類型:一般

    • 強制執行模式:強制執行

    • 要保護的資源:My-Project-2 專案

    • 受限服務:Compute Engine API

驗證範圍

在這個部分中,您可以對專案中的資源提出存取要求,確認服務範圍是否保護預期資源。

  1. 存取 My-Project-1 專案,然後前往「VM 執行個體」頁面,確認您可以存取 Compute Engine。

    前往 VM 執行個體

    您應該可以存取,因為 My-Project-1 不受您先前建立的周邊防護範圍保護。

  2. 存取 My-Project-2 專案,然後前往「VM 執行個體」頁面,確認您可以存取 Compute Engine。

    您應該會看到 VPC Service Controls 拒絕存取 Compute Engine 的要求,因為 MyFirstPerimeter 範圍會保護 My-Project-2 和 Compute Engine API。

排解違規問題

VPC Service Controls 稽核記錄會詳細記錄對受保護資源的要求,以及 VPC Service Controls 拒絕要求的原因。您需要這項資訊,才能在 My-Project-2 專案中找出並排解違規問題。

查看稽核記錄

  1. 在專案的稽核記錄中,找出 VPC Service Controls 違規事項的專屬 ID:My-Project-2

    1. 前往 Google Cloud 控制台的「Logs Explorer」頁面:

      前往「Logs Explorer」(記錄檔探索工具)

      如果您是使用搜尋列尋找這個頁面,請選取子標題為「Logging」的結果

    2. 選取 My-Project-2 專案。

    3. 如要顯示所有稽核記錄,請在查詢編輯器欄位中輸入下列查詢:

      resource.type="audited_resource"
      protoPayload.metadata."@type"="type.googleapis.com/google.cloud.audit.VpcServiceControlAuditMetadata"
      
    4. 點選「執行查詢」

    這項查詢會顯示所有 VPC Service Controls 稽核記錄。如要查看在 My-Project-2 專案中存取 Compute Engine API 時發生的違規詳細資料,請檢查最後一筆錯誤記錄。

    詳情請參閱「查看記錄」。

  2. 在「查詢結果」窗格中,按一下要排解問題的拒絕項目旁的「VPC Service Controls」,然後按一下「排解拒絕問題」

    系統會開啟 VPC Service Controls 違規分析工具頁面。這個頁面會顯示違規原因和其他資訊,例如違規是輸入或輸出違規。

    在本教學課程中,請尋找下列資訊:

    "principalEmail": "USER@DOMAIN"
    "callerIp": "PUBLIC_IP_ADDRESS"
    "serviceName": "compute.googleapis.com"
    "servicePerimeterName":
    "accessPolicies/POLICY_NUMBER/servicePerimeters/MyFirstPerimeter
    "ingressViolations": [
            {
    "targetResource": "projects/PROJECT_NUMBER",
    "servicePerimeter": "accessPolicies/POLICY_NUMBER/servicePerimeters/MyFirstPerimeter"
            }
          ],
    "violationReason": "NO_MATCHING_ACCESS_LEVEL",
    "resourceNames": "PROJECT_ID"
    

    違規原因是"NO_MATCHING_ACCESS_LEVEL"。當 IP 位址、裝置類型或使用者身分與 perimeter 相關聯的任何輸入規則或存取層級不符時,就會發生"NO_MATCHING_ACCESS_LEVEL"違規情形。如果記錄中缺少呼叫端 IP 位址,或顯示為內部 IP 位址,則這項違規行為可能是因為 Google Cloud 服務不支援 VPC Service Controls

如要修正 My-Project-2 專案中的這項拒絕,有兩種做法:

  • 建立存取層級,允許周邊內專案存取系統 IP 位址。

  • 建立輸入規則,允許範圍外的 API 用戶端存取範圍內的資源。

下一節將說明如何建立存取層級,排解這類拒絕存取的問題。

建立存取層級

  1. 在 Google Cloud 控制台中,前往 Exercise 資料夾範圍的「Access Context Manager」頁面。

    前往 Access Context Manager

  2. 建立存取層級,並提供下列詳細資料:

    • 在「建立條件於」中,選取「基本模式」

    • 在「符合條件時,傳回以下值:」部分,選取「True」

    • 選取「IP 子網路」屬性,然後指定系統的公用 IP 位址。

    • 選取「地理位置」屬性,然後指定地理位置。

    只有在 IP 位址和地理位置相符時,這個存取層級才會允許存取。

  3. 前往機構範圍的「VPC Service Controls」頁面。

    前往 VPC Service Controls

  4. 選取您在本教學課程稍早建立的存取權政策。

  5. 將您在 Exercise 資料夾範圍建立的存取層級新增至 MyFirstPerimeter 範圍。

測試存取權

新增存取層級後,請確認您可以在 My-Project-2 專案中存取 Compute Engine,並建立 VM 執行個體。

  1. 前往 Google Cloud 控制台的「VM instances」(VM 執行個體) 頁面

    前往 VM 執行個體

  2. 建立 VM 執行個體

大約一分鐘後,Compute Engine 會建立 VM 執行個體,這項動作會驗證您是否擁有完整存取權,可存取安全防護範圍內的 Compute Engine。