本教學課程說明如何使用 service perimeter 保護 Compute Engine,以及如何排解輸入違規問題,允許授權存取 Compute Engine。
使用 VPC Service Controls,即可為 Google 代管服務的資源定義 service perimeter,控管對這些服務以及服務之間的通訊。您可以針對私密資源設定零信任 perimeter,限制只有授權 IP 位址、使用者和裝置可以存取,這項功能可定義安全性政策,禁止從受信任 perimeter 外存取 Google 代管服務、防止從不受信任的位置存取資料,還能降低資料竊取風險。
本教學課程可協助 Google Cloud 組織管理員瞭解 VPC Service Controls 的基本概念。
目標
- 瞭解 VPC Service Controls 的基本概念。
- 建立 service perimeter。
- 使用 VPC Service Controls 保護專案。
- 排解 VPC Service Controls 輸入違規問題。
費用
在本文件中,您會使用下列 Google Cloud的計費元件:
您可以使用 Pricing Calculator,根據預測用量估算費用。
完成本文所述工作後,您可以刪除建立的資源,避免繼續計費,詳情請參閱「清除所用資源」。
事前準備
您必須擁有 Google Cloud 組織資源。 如果尚未建立 Google Workspace 或 Cloud Identity 帳戶,請申請帳戶,系統將會自動建立組織資源。
在組織層級建立資料夾 (
Exercise)。在同一組織的
Exercise資料夾內建立My-Project-1和My-Project-2兩個專案。請確認您在組織層級具備下列權限和角色:
建立 service perimeter
建立 service perimeter,保護 My-Project-2 專案中的 Compute Engine API:
前往 Google Cloud 控制台的「VPC Service Controls」頁面。
確認操作範圍為組織層級。
按一下「Manage policies」(管理政策)。
建立新的存取權政策,範圍限定為
Exercise資料夾。-
標題:
MyFirstPerimeterperimeter 類型:一般
強制執行模式:強制執行
要保護的資源:
My-Project-2專案受限服務:Compute Engine API
驗證 perimeter
在本節中,您可對專案中的資源提出存取要求,確認 perimeter 是否保護預期資源。
存取
My-Project-1專案,然後前往「VM instances」(VM 執行個體) 頁面,確認能否存取 Compute Engine。您應該可以存取,因為
My-Project-1不在先前建立的 perimeter 保護範圍內。存取
My-Project-2專案,然後前往「VM instances」(VM 執行個體) 頁面,確認能否存取 Compute Engine。您應該會看到 VPC Service Controls 拒絕存取 Compute Engine 的要求,因為
MyFirstPerimeterperimeter 會保護My-Project-2和 Compute Engine API。
排解違規問題
VPC Service Controls 稽核記錄會詳細記錄對受保護資源的要求,以及 VPC Service Controls 拒絕要求的原因。您需要這項資訊,才能在 My-Project-2 專案中找出並排解違規問題。
查看稽核記錄
在
My-Project-2專案的稽核記錄中,找到 VPC Service Controls 違規問題的專屬 ID:-
前往 Google Cloud 控制台的「Logs Explorer」頁面:
如果是使用搜尋列尋找這個頁面,請選取子標題為「Logging」的結果。
選取
My-Project-2專案。如要顯示所有稽核記錄,請在查詢編輯器欄位中輸入下列查詢:
resource.type="audited_resource" protoPayload.metadata."@type"="type.googleapis.com/google.cloud.audit.VpcServiceControlAuditMetadata"
按一下「Run query」(執行查詢)。
這項查詢會顯示所有 VPC Service Controls 稽核記錄。如要查看在
My-Project-2專案中存取 Compute Engine API 時發生的違規問題詳細資料,請檢視最後一筆錯誤記錄。詳情請參閱「查看記錄」。
-
前往「Query results」(查詢結果) 窗格,在要排解問題的拒絕項目旁邊,按一下「VPC Service Controls」,然後按一下「Troubleshoot denial」(疑難排解拒絕結果)。
「VPC Service Controls violation analyzer」(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 位址,則違規問題可能是 VPC Service Controls 不支援 Google Cloud 服務所致。
有兩種做法可解決 My-Project-2 專案中的拒絕存取問題:
下一節將說明如何建立存取層級,排解這類拒絕存取問題。
建立存取層級
在 Google Cloud 控制台中,前往「Access Context Manager」頁面,並將資料夾範圍設為
Exercise。-
在「Create conditions in」(使用以下模式建立條件:) 中,選取「Basic mode」(基本模式)。
在「When condition is met, return」(符合條件時,傳回以下值:) 部分,選取「True」。
選取「IP Subnetworks」(IP 子網路) 屬性,然後指定系統的公用 IP 位址。
選取「Geographic locations」(地理位置) 屬性,然後指定地理位置。
只有在 IP 位址和地理位置相符時,這個存取層級才會允許存取。
前往「VPC Service Controls」頁面,將操作範圍設為組織層級。
選取稍早在本教學課程中建立的存取權政策。
將您在
Exercise資料夾範圍建立的存取層級新增至MyFirstPerimeterperimeter。
測試存取權
新增存取層級後,請確認可以在 My-Project-2 專案中存取 Compute Engine,並建立 VM 執行個體。
前往 Google Cloud 控制台的「VM instances」(VM 執行個體) 頁面。
大約一分鐘後,Compute Engine 會建立 VM 執行個體,同時也會驗證您是否擁有完整存取權,可存取 perimeter 內受保護的 Compute Engine。
清除所用資源
為避免因為本教學課程所用資源,導致系統向 Google Cloud 收取費用,請刪除含有相關資源的專案,或者保留專案但刪除個別資源。
刪除專案
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
刪除個別資源
刪除 VM 執行個體
- In the Google Cloud console, go to the VM instances page.
- Select the checkbox for the instance that you want to delete.
- To delete the instance, click More actions, click Delete, and then follow the instructions.