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 專案。
- 組織層級的必要權限。
- 兩個專案的帳單帳戶。

資源設定
- 在 Google Cloud 控制台中,於機構底下建立資料夾和兩個新專案 (您可以重複使用現有專案)。
(如果您還沒有 Google Workspace/Cloud Identity 帳戶,請務必申請帳戶,因為您需要擁有機構才能完成本教學課程)。
- 確認您具備本教學課程的機構層級適當權限。

費用
您必須在 Cloud 控制台中啟用帳單功能,才能使用 Cloud 資源/API。完成這個程式碼研究室的費用不高,甚至可能完全免費。如要關閉資源,避免在本教學課程結束後繼續產生費用,請刪除您建立的資源或專案。Google Cloud 新使用者可參加價值 $300 美元的免費試用計畫。
只有 VM 執行個體會產生費用。如需預估費用,請參閱 Pricing Calculator。
3. 建立範圍
在本實驗室中,我們將執行下列步驟:
- 在 Google 控制台中選取您的機構,然後 存取 VPC Service Controls。請確認您位於機構層級。

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

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

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

5. 排解遭拒問題
首先,我們必須找出問題的確切原因,才能判斷如何進行疑難排解。
- 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 稽核記錄。我們要尋找最後一個錯誤記錄。
- 按一下「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 內的資源。
在本教學課程中,我們會建立「存取層級」來排解問題。
- 前往資料夾 (Codelab) 範圍的 Access Context Manager,然後建立新的存取層級。
- 使用「基本模式」,只要 IP 子網路和地理位置符合條件,我們就會允許存取。

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

6. 測試結果。
確認我們有權存取 Compute Engine,並能建立 VM 執行個體。現在我們已建立存取層級,請嘗試存取 ProjectZ 中的 Compute Engine,並建立 VM 執行個體。
- 前往 Compute Engine,然後點按「建立執行個體」

- 其餘設定均保留預設狀態,然後嘗試建立低成本 VM 執行個體。
大約一分鐘後,您應該會看到建立的 VM 執行個體,並可驗證您是否擁有完整存取權,可存取 perimeter 內受保護的 Compute Engine。

7. 清除
雖然服務未使用時,使用 VPC Service Controls 無須另外付費,但建議您清除本實驗室中使用的設定。您也可以刪除 VM 執行個體和/或 Cloud 專案,以免產生費用。刪除 Cloud 專案後,系統就會停止對專案使用的所有資源收取費用。
- 如要刪除 VM 執行個體,請選取 VM 執行個體名稱左側的核取方塊,然後按一下「Delete」(刪除)。

- 如要刪除安全防護範圍,請完成下列步驟:
- 在 Google Cloud 控制台中,按一下「Security」(安全性),然後在機構範圍內按一下「VPC Service Controls」。
- 在 VPC Service Controls 頁面中,找出要刪除的範圍,然後在對應的資料表列中按一下「刪除圖示」
- 如要刪除存取層級,請完成下列步驟:
- 如要關閉專案,請完成下列步驟:
8. 恭喜!
在本程式碼研究室中,您建立了 VPC Service Controls 範圍、強制執行範圍,並排解範圍問題。
瞭解詳情
授權
這項內容採用的授權為 Creative Commons 姓名標示 2.0 通用授權。