VPC Service Controls 基本教學課程 I

1. 簡介

VPC Service Controls (VPC-SC) 是 Google Cloud 的機構層級安全控管機制,可協助企業客戶降低資料竊取風險。VPC Service Controls 提供零信任式的多租戶服務存取方式,可讓客戶在從網際網路和其他服務連至多租戶服務時,將存取權限制為僅有獲授權的 IP、用戶端情境及裝置參數可存取,藉此減少有意和無意的損失。您可以使用 VPC Service Controls 建立 perimeter,保護您明確指定的服務資源和資料。

本教學課程的目標如下:

  • 瞭解 VPC Service Controls 的基本概念
  • 建立 VPC 服務範圍
  • 使用 VPC Service Controls 保護專案
  • 排解 VPC Service Controls 輸入違規問題

2. 設定和需求條件

本教學課程需要符合下列先決條件:

  • GCP 機構。
  • 機構下的資料夾。
  • 位於資料夾下同一個機構中的 2 個 GCP 專案。
  • 組織層級的必要權限
  • 兩個專案的帳單帳戶。

1a62ebea85d6d4fc.png

資源設定

  1. Google Cloud 控制台中,於機構底下建立資料夾和兩個新專案 (您可以重複使用現有專案)。

(如果您還沒有 Google Workspace/Cloud Identity 帳戶,請務必申請帳戶,因為您需要擁有機構才能完成本教學課程)。

  1. 確認您具備本教學課程的機構層級適當權限。
  1. 請確認兩個專案都位於資料夾中,因為我們需要在資料夾層級建立範圍政策。瞭解如何將專案移入資料夾

f7c75ab82028cb15.png

費用

您必須在 Cloud 控制台中啟用帳單功能,才能使用 Cloud 資源/API。完成這個程式碼研究室的費用不高,甚至可能完全免費。如要關閉資源,避免在本教學課程結束後繼續產生費用,請刪除您建立的資源或專案。Google Cloud 新使用者可參加價值 $300 美元的免費試用計畫。

只有 VM 執行個體會產生費用。如需預估費用,請參閱 Pricing Calculator

3. 建立範圍

在本實驗室中,我們將執行下列步驟:

  1. 在 Google 控制台中選取您的機構,然後 存取 VPC Service Controls。請確認您位於機構層級。

43d5af2d5f084bb4.png

  1. 按一下「管理政策」,建立新的存取權政策,範圍限定為「Codelab」資料夾。

9f75d949ca9992c4.png

  1. 以強制執行模式建立新的 perimeter。在本教學課程中,我們將其命名為「SuperProtection」。
  • 建立 perimeter 時,請選取要強制執行的專案,也就是 ProjectZ。
  • 選取「一般」做為範圍類型。
  • 在「Specify services to restrict」(指定要限制的服務) 對話方塊中,選取要限制的服務「Compute Engine」。

周邊裝置設定應如下所示:

914d603103cb21.png

4. 確認已強制執行範圍

  1. 存取 ProjectX,然後前往 VM 執行個體首頁,確認是否可以存取 Compute Engine API。您應該可以這麼做,因為 projectX 不受建立的 VPC SC 範圍保護。
  2. 存取 ProjectZ,並確認您是否可以存取 Compute Engine。您會看到 VPC Service Controls 禁止要求,因為服務範圍 SuperProtection 會保護 ProjectZ 和 Compute Engine API。

d5073543f783e9c7.png

5. 排解遭拒問題

首先,我們必須找出問題的確切原因,才能判斷如何進行疑難排解。

  1. VPC Service Controls 記錄會詳細記錄對受保護資源的要求,以及 VPC Service Controls 拒絕要求的原因。讓我們在「記錄檔探索工具」中執行下列查詢,找出 ProjectZ 稽核記錄中的 VPC Service Controls 專屬 ID
resource.type="audited_resource"
protoPayload.metadata."@type"="type.googleapis.com/google.cloud.audit.VpcServiceControlAuditMetadata"

這會顯示所有 VPC Service Controls 稽核記錄。我們要尋找最後一個錯誤記錄。

  1. 按一下「VPC Service Controls」標題,然後選取「Troubleshoot denial」(疑難排解拒絕結果),開啟 VPC Service Controls 疑難排解工具

這個 API 會在友善的使用者介面中顯示違規原因,以及違規問題屬於輸入還是輸出類型等實用資訊。

在本練習中,我們將尋找下列項目:

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

有兩種做法可解決 ProjectZ 中的拒絕存取問題。

  • 建立存取層級,授予系統 IP 存取權,允許 perimeter 內專案存取。
  • 建立輸入規則,允許 service perimeter 外部的 API 用戶端存取 service perimeter 內的資源。

在本教學課程中,我們會建立「存取層級」來排解問題。

  1. 前往資料夾 (Codelab) 範圍的 Access Context Manager,然後建立新的存取層級
  2. 使用「基本模式」,只要 IP 子網路和地理位置符合條件,我們就會允許存取。

678f0f9d7bac921d.png

  1. 前往 VPC Service Controls,將操作範圍設為組織層級。選取本程式碼研究室的存取權政策,然後編輯先前建立的周邊。
  2. 新增在資料夾範圍建立的存取層級,然後儲存。

c0af5691dfe9dd75.png

6. 測試結果。

確認我們有權存取 Compute Engine,並能建立 VM 執行個體。現在我們已建立存取層級,請嘗試存取 ProjectZ 中的 Compute Engine,並建立 VM 執行個體。

  1. 前往 Compute Engine,然後點按「建立執行個體」

c1206aaf18497ec1.png

  1. 其餘設定均保留預設狀態,然後嘗試建立低成本 VM 執行個體。

大約一分鐘後,您應該會看到建立的 VM 執行個體,並可驗證您是否擁有完整存取權,可存取 perimeter 內受保護的 Compute Engine。

5b2ded02f669b2ef.png

7. 清除

雖然服務未使用時,使用 VPC Service Controls 無須另外付費,但建議您清除本實驗室中使用的設定。您也可以刪除 VM 執行個體和/或 Cloud 專案,以免產生費用。刪除 Cloud 專案後,系統就會停止對專案使用的所有資源收取費用。

  1. 如要刪除 VM 執行個體,請選取 VM 執行個體名稱左側的核取方塊,然後按一下「Delete」(刪除)

da0abf0894fe03cd.png

  1. 如要刪除安全防護範圍,請完成下列步驟:
  • 在 Google Cloud 控制台中,按一下「Security」(安全性),然後在機構範圍內按一下「VPC Service Controls」
  • 在 VPC Service Controls 頁面中,找出要刪除的範圍,然後在對應的資料表列中按一下「刪除圖示」
  1. 如要刪除存取層級,請完成下列步驟:
  • 在 Google Cloud 控制台中,開啟「Access Context Manager」頁面,並將範圍設為資料夾。
  • 在表格中找到要刪除的存取層級,然後依序點按「刪除」圖示和「刪除」
  1. 如要關閉專案,請完成下列步驟:
  • 在 Google Cloud 控制台中,前往要刪除專案的「IAM 與管理設定」頁面。
  • 在「IAM & Admin Settings」(IAM 與管理設定) 頁面上,按一下「Shutdown」(關閉)
  • 輸入專案 ID,然後點選「仍要關閉」

8. 恭喜!

在本程式碼研究室中,您建立了 VPC Service Controls 範圍、強制執行範圍,並排解範圍問題。

瞭解詳情

授權

這項內容採用的授權為 Creative Commons 姓名標示 2.0 通用授權。