建立 service perimeter

本頁說明如何建立 service perimeter。

事前準備

建立 service perimeter

本節說明如何建立 service perimeter、在 perimeter 中新增專案或虛擬私有雲網路,以及保護服務。

建立 service perimeter 時,您可以選擇允許 perimeter 外部存取受保護的服務,並指定 perimeter 內部的其他服務和使用者可存取哪些服務。也可以依需求在建立 perimeter 後,再設定這些選項。

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

控制台

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

    前往 VPC Service Controls

  2. 系統顯示提示時,請選取組織、資料夾或專案。

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

  4. 在「VPC Service Controls」頁面中,選取 perimeter 強制執行模式。根據預設會選取「Enforced mode」(強制執行模式)。如要建立 dry run perimeter,請按一下「Dry run mode」(模擬測試模式)

    「enforced perimeter」會主動禁止存取受保護的服務。「dry run perimeter」會記錄 perimeter 違規事項,就好像服務受到保護一樣,但不會禁止存取這些服務。如要進一步瞭解強制執行和模擬測試模式,請參閱「service perimeter」。

  5. 按一下「New perimeter」(新增 perimeter)

  6. 在「Create a service perimeter」(建立 service perimeter) 頁面的「Title」(標題) 欄位中,輸入 perimeter 名稱。

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

  7. 選用:在「Description」(說明) 欄位中輸入 perimeter 的說明。

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

  9. 在「Enforcement mode」(強制執行模式),選取 perimeter 強制執行模式。可用選項包括「Dry run」(模擬測試) 和「Enforced」(強制執行)

  10. 按一下「Continue」(繼續)

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

    1. 如要將專案新增至 perimeter,請按一下「Add projects」(新增專案)

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

      2. 按一下「Add selected projects」(新增所選專案)。新增的專案會顯示在「Projects」(專案) 部分中。

    2. 如要將虛擬私有雲網路新增至 perimeter,請按一下「Add networks」(新增網路)

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

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

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

    3. 按一下「Continue」(繼續)

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

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

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

    3. 按一下「Add selected services」(新增所選服務)

    4. 按一下「Continue」(繼續)

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

    • 「All services」(所有服務):這個選項會允許所有 Google Cloud 服務。

    • 「No services」(沒有服務):這個選項不允許任何 Google Cloud 服務。

    • 「All restricted services」(所有受限制的服務):這個選項只允許您在這個 perimeter 內保護的 Google Cloud 服務。

    • 「Selected services」(所選服務):這個選項只允許您選取的 Google Cloud 服務。

      1. 按一下「Add Services」(新增服務)

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

      3. 按一下「Add selected services」(新增所選服務)

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

      5. 按一下「Continue」(繼續)

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

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

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

    1. 在「Access levels」(存取層級) 窗格中,按一下「Add access levels」(新增存取層級)

      您也可以在建立 perimeter 後新增存取層級

    2. 找出要套用至 perimeter 的存取層級,然後勾選對應的核取方塊。

    3. 按一下「Add selected access levels」(新增所選存取層級)

    4. 按一下「Continue」(繼續)

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

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

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

    3. 在「From」(來源) 部分中,指定需要存取權的 perimeter 外部來源。您可以指定專案、存取層級和虛擬私有雲網路做為來源。

    4. 在「To」(目的地) 部分中,指定來源可存取的 perimeter 內資源。

    5. 按一下「Continue」(繼續)

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

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

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

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

    3. 在「From」(來源) 部分中,指定需要存取權的 perimeter 內來源。

    4. 在「To」(目的地) 部分中,指定來源可存取的 perimeter 外部資源。

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

  17. 按一下「Create」(建立)

gcloud

如要以強制執行模式建立新 perimeter,請使用 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

如要在模擬測試模式中建立新 perimeter,請使用 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 是 perimeter 的名稱。

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

  • TITLE 是指 perimeter 的人類可讀標題。

  • TYPE 是 perimeter 的類型。例如,「一般」perimeter 或「橋接設定」perimeter。

  • 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 檔案,可包含來源、身分、專案和服務屬性的值。如需輸入規則屬性清單,請參閱「輸入規則參考資料」。

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

  • POLICY_NAME 是組織存取權政策的數字名稱。例如,330193482019。如果尚未設定預設存取權政策,則只需要加入政策名稱。

其他選項:

  • 只有在建立 perimeter 時要新增存取層級,才需要 --access-levels--perimeter-access-levelsLEVELS 是以半形逗號分隔的清單,包含要套用至 service perimeter 的一或多個存取層級。

    您也可以在建立 perimeter 後新增存取層級

  • --enable-vpc-accessible-services--vpc-allowed-services--perimeter-enable-vpc-accessible-services--perimeter-vpc-allowed-services 僅在您想在建立 perimeter 時新增可透過虛擬私有雲存取的服務時為必要。ACCESSIBLE-SERVICES 是以半形逗號分隔的清單,列出您要允許 perimeter 內部網路存取的一或多項服務。如果服務不在這份清單中,系統會禁止存取。

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

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

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

例如,下列指令會建立名為 ProdPerimeter 的新模擬測試模式 perimeter,可包含專案 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

如要建立 service perimeter,請呼叫 accessPolicies.servicePerimeters.create

 POST https://accesscontextmanager.googleapis.com/v1/accessPolicies/POLICY_NAME/servicePerimeters

其中:

  • POLICY_NAME 是組織存取權政策的數字名稱。例如:330193482019

要求主體

要求主體必須包含定義 service perimeter 的 ServicePerimeter 資源。

針對 ServicePerimeter 資源,請為 perimeterType 指定 PERIMETER_TYPE_REGULAR

模擬測試模式

建議的 perimeter 必須包含 spec,且 useExplicitDryRunSpec 設為 true。

回應主體

如果成功,呼叫的回應主體會包含 Operation 資源,其中提供有關 POST 作業的詳細資料。

後續步驟