建立服務範圍

本頁說明如何建立服務範圍。

事前準備

建立服務範圍

本節說明如何建立服務範圍、在範圍中新增專案或 VPC 網路,以及保護服務。

建立服務範圍時,您可以選擇允許範圍外存取受保護的服務,並指定範圍內的其他服務和使用者可存取哪些服務。您也可以在建立安全防護範圍後,再設定這些選項。

建立或更新服務範圍後,變更最多可能需要 30 分鐘才會生效。在這段期間,周邊可能會封鎖要求,並顯示下列錯誤訊息:Error 403: Request is prohibited by organization's policy.

控制台

  1. 在 Google Cloud 控制台導覽選單中,依序點選「Security」(安全性) 和「VPC Service Controls」(VPC 服務控制項)

    前往 VPC Service Controls

  2. 如果系統提示您選取機構、資料夾或專案,請依提示選取。

  3. 選取現有存取權政策或建立新的存取權政策。請確認存取權政策範圍包含您要新增至範圍的所有專案和 VPC 網路。

  4. 在「VPC Service Controls」頁面中,選取範圍強制執行模式。系統預設會選取「強制執行模式」。如要建立模擬測試範圍,請按一下「模擬測試模式」

    強制執行的 perimeter 會主動禁止存取受保護的服務。 模擬範圍會記錄範圍違規情形,就好像服務受到保護一樣,但不會禁止存取這些服務。如要進一步瞭解強制執行和模擬執行模式,請參閱服務邊界

  5. 按一下「新增範圍」

  6. 在「建立服務範圍」頁面的「標題」欄位中,輸入範圍的名稱。

    範圍名稱的長度上限為 50 個字元,開頭須為英文字母,且只能包含 ASCII 拉丁字母 (a-z、A-Z)、數字 (0-9) 或底線 (_)。範圍名稱會區分大小寫,且在存取權政策中必須是專屬名稱。

  7. 選用:在「說明」欄位中,輸入安全範圍的說明。

  8. 在「Perimeter type」(範圍類型) 部分,選取「Regular」(一般)

  9. 在「強制執行模式」部分,選取周邊強制執行模式。可用選項為「模擬測試」和「強制執行」

  10. 按一下「繼續」

  11. 如要新增您想在該範圍內保護的專案或虛擬私有雲網路,請按照下列步驟操作:

    1. 如要將專案新增至範圍,請按一下「新增專案」

      1. 在「新增專案」窗格中,選取要保護的專案。

      2. 按一下「新增所選專案」。新增的專案會顯示在「專案」區段中。

    2. 如要將虛擬私有雲網路新增至範圍,請按一下「新增網路」

      1. 在專案清單中,按一下包含虛擬私有雲網路的專案。

      2. 在「新增虛擬私有雲網路」窗格中,選取要保護的虛擬私有雲網路。

      3. 按一下「新增所選網路」。新增的網路會顯示在「虛擬私有雲網路」部分。

    3. 按一下「繼續」

  12. 如要選取要在範圍內保護的服務,請按照下列步驟操作:

    1. 在「受限制的服務」窗格中,按一下「新增服務」

    2. 在「新增服務」窗格中,選取要保護的服務。

    3. 按一下「新增所選服務」

    4. 按一下「繼續」

  13. 選用:如要定義可從範圍內網路端點存取的服務,請在「VPC accessible services」(可存取的虛擬私有雲服務) 窗格中,選取其中一個可用選項:

    • 所有服務:這個選項會允許所有 Google Cloud 服務。

    • 沒有服務:這個選項不允許任何 Google Cloud 服務。

    • 所有受限制的服務:這個選項只允許您在這個範圍內保護的 Google Cloud 服務 。

    • 選取的服務:這個選項只允許您選取的 Google Cloud 服務。

      1. 按一下「新增服務」

      2. 在「新增服務」窗格中,選取要允許的服務。

      3. 按一下「新增所選服務」

      4. 如要將範圍保護的所有受限制服務一併納入所選服務,請按一下「包括所有受限制的服務」切換鈕,將其設為開啟。

      5. 按一下「繼續」

    您也可以在建立服務範圍後新增可存取的服務

    詳情請參閱「可透過虛擬私有雲存取的服務」。

  14. 選用:如要使用存取層級,允許從範圍外部存取受保護的資源,請按照下列步驟操作:

    1. 在「存取層級」窗格中,按一下「新增存取層級」

      您也可以在建立安全防護範圍後新增存取層級

    2. 找出要套用到服務範圍的存取層級,然後勾選對應的核取方塊。

    3. 按一下「新增所選存取層級」

    4. 按一下「繼續」

  15. 如要允許範圍外的 API 用戶端存取範圍內的資源,請按照下列步驟操作:

    1. 在「Ingress rules」(輸入規則) 窗格中,按一下「Add an ingress rule」(新增輸入規則)

    2. 在「Title」欄位中,輸入 Ingress 規則的標題。

    3. 在「來源」部分,指定需要存取權的範圍外來源。您可以指定專案、存取層級和 VPC 網路做為來源。

    4. 在「To」部分,指定來源可存取的邊界內資源。

    5. 按一下「繼續」

    如需 Ingress 規則屬性清單,請參閱「Ingress 規則參考資料」。

  16. 如要允許範圍內的 API 用戶端或資源存取範圍外的資源,請按照下列步驟操作:

    1. 在「Egress rules」(輸出規則) 窗格中,按一下「Add an egress rule」(新增輸出規則)

    2. 在「Title」(標題) 欄位中,輸入輸出規則的標題。

    3. 在「From」部分,指定需要存取權的範圍內來源。

    4. 在「To」(目的地) 區段中,指定來源可存取的範圍外資源。

    如需輸出規則屬性清單,請參閱「輸出規則參考資料」。

  17. 點選「建立」

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.comstorage.googleapis.com,bigquery.googleapis.com

  • INGRESS-FILENAME 是 JSON 或 YAML 檔案,內含來源、身分、專案和服務屬性的值。如需 Ingress 規則屬性清單,請參閱 Ingress 規則參考資料

  • EGRESS-FILENAME 是 JSON 或 YAML 檔案,其中包含身分、專案和服務屬性的值。如需輸出規則屬性清單,請參閱「輸出規則參考資料」。

  • POLICY_NAME 是指您機構的存取權政策以數字表示的名稱。例如,330193482019。如果尚未設定預設存取權政策,則只需要加入政策名稱。

其他選項:

  • 只有在建立服務範圍時要新增存取層級,才需要提供 --access-levels--perimeter-access-levelsLEVELS 是以逗號分隔的清單,內含您要套用至服務範圍的一或多個存取層級。

    您也可以在建立安全防護範圍後新增存取層級

  • --enable-vpc-accessible-services--vpc-allowed-services,或 --perimeter-enable-vpc-accessible-services--perimeter-vpc-allowed-services 僅在您想在建立範圍時新增可透過虛擬私有雲存取的服務時才需要。ACCESSIBLE-SERVICES 是以半形逗號分隔的清單,列出您要允許周邊內部網路存取的一或多項服務。您將無法存取未列於這份清單的任何服務。

    只有在設定服務範圍時保護服務,才能讓服務可供存取。

    如要快速納入範圍保護的所有服務,請在清單中指定 RESTRICTED-SERVICES ACCESSIBLE-SERVICES。例如:--perimeter-vpc-allowed-services=RESTRICTED-SERVICES

    您也可以在建立範圍後定義可存取虛擬私有雲的服務

舉例來說,下列指令會建立名為 ProdPerimeter 的新試營運模式範圍,其中包含專案 example-projectexample-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 作業的詳細資料。

後續步驟