本頁說明如何建立服務範圍。
事前準備
- 瞭解如何設定服務範圍。 
- 進一步瞭解服務範圍中的 VPC 網路管理。 
- 如要在建立範圍時設定受保護服務的外部存取權,請先建立一或多個存取層級,再建立範圍。 
建立服務範圍
本節說明如何建立服務範圍、在範圍中新增專案或 VPC 網路,以及保護服務。
建立服務範圍時,您可以選擇允許範圍外存取受保護的服務,並指定範圍內的其他服務和使用者可存取哪些服務。您也可以在建立安全防護範圍後,再設定這些選項。
建立或更新服務範圍後,變更最多可能需要 30 分鐘才會生效。在這段期間,周邊可能會封鎖要求,並顯示下列錯誤訊息:Error 403: Request is prohibited by organization's policy.
控制台
- 在 Google Cloud 控制台導覽選單中,依序點選「Security」(安全性) 和「VPC Service Controls」(VPC 服務控制項)。 
- 如果系統提示您選取機構、資料夾或專案,請依提示選取。 
- 選取現有存取權政策或建立新的存取權政策。請確認存取權政策範圍包含您要新增至範圍的所有專案和 VPC 網路。 
- 在「VPC Service Controls」頁面中,選取範圍強制執行模式。系統預設會選取「強制執行模式」。如要建立模擬測試範圍,請按一下「模擬測試模式」。 - 強制執行的 perimeter 會主動禁止存取受保護的服務。 模擬範圍會記錄範圍違規情形,就好像服務受到保護一樣,但不會禁止存取這些服務。如要進一步瞭解強制執行和模擬執行模式,請參閱服務邊界。 
- 按一下「新增範圍」。 
- 在「建立服務範圍」頁面的「標題」欄位中,輸入範圍的名稱。 - 範圍名稱的長度上限為 50 個字元,開頭須為英文字母,且只能包含 ASCII 拉丁字母 (a-z、A-Z)、數字 (0-9) 或底線 ( - _)。範圍名稱會區分大小寫,且在存取權政策中必須是專屬名稱。
- 選用:在「說明」欄位中,輸入安全範圍的說明。 
- 在「Perimeter type」(範圍類型) 部分,選取「Regular」(一般)。 
- 在「強制執行模式」部分,選取周邊強制執行模式。可用選項為「模擬測試」和「強制執行」。 
- 按一下「繼續」。 
- 如要新增您想在該範圍內保護的專案或虛擬私有雲網路,請按照下列步驟操作: - 如要將專案新增至範圍,請按一下「新增專案」。 - 在「新增專案」窗格中,選取要保護的專案。 
- 按一下「新增所選專案」。新增的專案會顯示在「專案」區段中。 
 
- 如要將虛擬私有雲網路新增至範圍,請按一下「新增網路」。 - 在專案清單中,按一下包含虛擬私有雲網路的專案。 
- 在「新增虛擬私有雲網路」窗格中,選取要保護的虛擬私有雲網路。 
- 按一下「新增所選網路」。新增的網路會顯示在「虛擬私有雲網路」部分。 
 
- 按一下「繼續」。 
 
- 如要選取要在範圍內保護的服務,請按照下列步驟操作: - 在「受限制的服務」窗格中,按一下「新增服務」。 
- 在「新增服務」窗格中,選取要保護的服務。 
- 按一下「新增所選服務」。 
- 按一下「繼續」。 
 
- 選用:如要定義可從範圍內網路端點存取的服務,請在「VPC accessible services」(可存取的虛擬私有雲服務) 窗格中,選取其中一個可用選項: - 所有服務:這個選項會允許所有 Google Cloud 服務。 
- 沒有服務:這個選項不允許任何 Google Cloud 服務。 
- 所有受限制的服務:這個選項只允許您在這個範圍內保護的 Google Cloud 服務 。 
- 選取的服務:這個選項只允許您選取的 Google Cloud 服務。 - 按一下「新增服務」。 
- 在「新增服務」窗格中,選取要允許的服務。 
- 按一下「新增所選服務」。 
- 如要將範圍保護的所有受限制服務一併納入所選服務,請按一下「包括所有受限制的服務」切換鈕,將其設為開啟。 
- 按一下「繼續」。 
 
 - 您也可以在建立服務範圍後新增可存取的服務。 - 詳情請參閱「可透過虛擬私有雲存取的服務」。 
- 選用:如要使用存取層級,允許從範圍外部存取受保護的資源,請按照下列步驟操作: - 在「存取層級」窗格中,按一下「新增存取層級」。 - 您也可以在建立安全防護範圍後新增存取層級。 
- 找出要套用到服務範圍的存取層級,然後勾選對應的核取方塊。 
- 按一下「新增所選存取層級」。 
- 按一下「繼續」。 
 
- 如要允許範圍外的 API 用戶端存取範圍內的資源,請按照下列步驟操作: - 在「Ingress rules」(輸入規則) 窗格中,按一下「Add an ingress rule」(新增輸入規則)。 
- 在「Title」欄位中,輸入 Ingress 規則的標題。 
- 在「來源」部分,指定需要存取權的範圍外來源。您可以指定專案、存取層級和 VPC 網路做為來源。 
- 在「To」部分,指定來源可存取的邊界內資源。 
- 按一下「繼續」。 
 - 如需 Ingress 規則屬性清單,請參閱「Ingress 規則參考資料」。 
- 如要允許範圍內的 API 用戶端或資源存取範圍外的資源,請按照下列步驟操作: - 在「Egress rules」(輸出規則) 窗格中,按一下「Add an egress rule」(新增輸出規則)。 
- 在「Title」(標題) 欄位中,輸入輸出規則的標題。 
- 在「From」部分,指定需要存取權的範圍內來源。 
- 在「To」(目的地) 區段中,指定來源可存取的範圍外資源。 
 - 如需輸出規則屬性清單,請參閱「輸出規則參考資料」。 
- 點選「建立」。 
gcloud
如要在強制執行模式下建立新範圍,請使用 gcloud access-context-manager perimeters create 指令。
gcloud access-context-manager perimeters create NAME \ --title=TITLE \ --resources=RESOURCES \ --restricted-services=RESTRICTED-SERVICES \ --ingress-policies=INGRESS-FILENAME.yaml \ --egress-policies=EGRESS-FILENAME.yaml \ [--access-levels=LEVELS] \ [--enable-vpc-accessible-services] \ [--vpc-allowed-services=ACCESSIBLE-SERVICES] \ --policy=POLICY_NAME
如要以模擬執行模式建立新重疊範圍,請使用 gcloud access-context-manager perimeters dry-run create 指令。
gcloud access-context-manager perimeters dry-run create NAME \ --perimeter-title=TITLE \ --perimeter-type=TYPE \ --perimeter-resources=RESOURCES \ --perimeter-restricted-services=RESTRICTED-SERVICES \ --perimeter-ingress-policies=INGRESS-FILENAME.yaml \ --perimeter-egress-policies=EGRESS-FILENAME.yaml \ [--perimeter-access-levels=LEVELS] \ [--perimeter-enable-vpc-accessible-services] \ [--perimeter-vpc-allowed-services=ACCESSIBLE-SERVICES] \ --policy=POLICY_NAME
更改下列內容:
- NAME 是範圍的名稱。 - 範圍名稱的長度上限為 50 個字元,開頭須為英文字母,且只能包含 ASCII 拉丁字母 (a-z、A-Z)、數字 (0-9) 或底線 ( - _)。範圍名稱會區分大小寫,且在存取權政策中必須是專屬名稱。
- TITLE 是指範圍的可理解文字標題。 
- TYPE 是範圍類型。例如「一般」或「橋接」周邊裝置。 
- RESOURCES 是以半形逗號分隔的清單,包含一或多個專案編號或虛擬私有雲網路名稱。例如: - projects/12345或- //compute.googleapis.com/projects/my-project/global/networks/vpc1。 只能選取專案和虛擬私有雲網路。專案格式:- projects/project_number。 虛擬私有雲格式:- //compute.googleapis.com/projects/project-id/global/networks/network_name。 如果指定專案,則僅支援專案編號。 您無法使用專案名稱或 ID。
- RESTRICTED-SERVICES 是以逗號分隔的一或多項服務清單。例如: - storage.googleapis.com或- storage.googleapis.com,bigquery.googleapis.com。
- INGRESS-FILENAME 是 JSON 或 YAML 檔案,內含來源、身分、專案和服務屬性的值。如需 Ingress 規則屬性清單,請參閱 Ingress 規則參考資料。 
- EGRESS-FILENAME 是 JSON 或 YAML 檔案,其中包含身分、專案和服務屬性的值。如需輸出規則屬性清單,請參閱「輸出規則參考資料」。 
- POLICY_NAME 是指您機構的存取權政策以數字表示的名稱。例如, - 330193482019。如果尚未設定預設存取權政策,則只需要加入政策名稱。
其他選項:
- 只有在建立服務範圍時要新增存取層級,才需要提供 - --access-levels或- --perimeter-access-levels。LEVELS 是以逗號分隔的清單,內含您要套用至服務範圍的一或多個存取層級。- 您也可以在建立安全防護範圍後新增存取層級。 
- --enable-vpc-accessible-services和- --vpc-allowed-services,或- --perimeter-enable-vpc-accessible-services和- --perimeter-vpc-allowed-services僅在您想在建立範圍時新增可透過虛擬私有雲存取的服務時才需要。ACCESSIBLE-SERVICES 是以半形逗號分隔的清單,列出您要允許周邊內部網路存取的一或多項服務。您將無法存取未列於這份清單的任何服務。- 只有在設定服務範圍時保護服務,才能讓服務可供存取。 - 如要快速納入範圍保護的所有服務,請在清單中指定 - RESTRICTED-SERVICESACCESSIBLE-SERVICES。例如:- --perimeter-vpc-allowed-services=RESTRICTED-SERVICES。- 您也可以在建立範圍後定義可存取虛擬私有雲的服務。 
舉例來說,下列指令會建立名為 ProdPerimeter 的新試營運模式範圍,其中包含專案 example-project 和 example-project2,並限制 Cloud Storage 和 BigQuery API。
gcloud access-context-manager perimeters \ dry-run create ProdPerimeter --perimeter-title="Production Perimeter" \ --perimeter-type="regular" \ --perimeter-resources=projects/12345,projects/67890 \ --perimeter-restricted-services=storage.googleapis.com,bigquery.googleapis.com \ --perimeter-ingress-policies=ingress.yaml \ --perimeter-egress-policies=egress.yaml \ --policy=330193482019
API
如要建立服務範圍,請呼叫
accessPolicies.servicePerimeters.create。
POST https://accesscontextmanager.googleapis.com/v1/accessPolicies/POLICY_NAME/servicePerimeters
其中:
- POLICY_NAME 是指您機構的存取權政策以數字表示的名稱。例如:330193482019。
要求主體
要求主體必須包含定義服務周邊的 ServicePerimeter 資源。
針對 ServicePerimeter 資源,請將 perimeterType 指定為 PERIMETER_TYPE_REGULAR。
模擬測試模式
建議的範圍必須包含 spec,且 useExplicitDryRunSpec 設為 true。
回應主體
如果成功,呼叫的回應主體會包含 Operation 資源,其中提供有關 POST 作業的詳細資料。
後續步驟
- 瞭解如何使用模擬測試模式,測試服務範圍的影響。
- 瞭解如何管理現有服務範圍。
- 瞭解如何排解常見的 VPC Service Controls 問題。
- 完成這項 codelab,瞭解如何使用 VPC Service Controls 保護專案及其服務。
- 瞭解如何設定及查看違規事項資訊主頁。