對 service perimeter 進行大量變更

可以使用 Access Context Manager,對屬於組織存取權政策的資源進行大量更新,例如存取層級service perimeter。只有在大量作業的所有部分都成功時,系統才會套用資源變更。

本主題僅說明如何大量取代 service perimeter。如要進一步瞭解如何大量取代存取層級,請參閱「Access Context Manager 說明文件」。

取得 service perimeter 清單

由於大量作業會影響組織的「所有」service perimeter,因此您可以取得 perimeter 的完整清單。此外,您也可以將這份清單格式化為 YAML,並用來大量變更 perimeter。

如要取得已設定格式的 service perimeter 清單,請參閱「列出 service perimeter (已設定格式)」。

使用 replace-all 指令覆寫所有 service perimeter 設定時,請勿在 perimeter 內設定 etag 欄位。在擷取和更新 perimeter 之間,Etag 可能會變更,導致 replace-all 指令傳回 Etag 不符錯誤。不過,如要強制執行 ETag 檢查,可以使用頂層 --etag 參數,為整個 replace-all 要求設定 etag

您不必手動移除 perimeter 內的每個 etag 屬性,只要指定 --format (除了 etag 以外的所有欄位),即可擷取不含 etag 屬性的 perimeter。

gcloud access-context-manager perimeters list \
  --policy=POLICY_NAME \
  --format="json(name,title,description,perimeterType,status,spec,useExplicitDryRunSpec)"

大量取代 service perimeter

下一節詳細說明如何大量取代 service perimeter。

gcloud

如要大量取代所有 service perimeter,請使用 replace-all 指令。

gcloud access-context-manager perimeters replace-all POLICY_NAME \
  --source-file=FILE \
  --etag=ETAG \

其中:

  • POLICY_NAME 是組織的存取權政策名稱。只有在未設定預設存取權政策時,才需要提供這個值。

  • FILE 是指用來定義現有 service perimeter 新設定的 .yaml 檔案名稱。

    例如:

    - name: accessPolicies/11271009391/servicePerimeters/storage_perimeter
      title: Storage Perimeter
      description: Perimeter to protect Storage resources.
      perimeterType: PERIMETER_TYPE_REGULAR
      status:
        restrictedServices:
        - storage.googleapis.com
    - name: accessPolicies/11271009391/servicePerimeters/bigquery_perimeter
      title: BigQuery Perimeter
      description: Perimeter to protect BigQuery resources.
      perimeterType: PERIMETER_TYPE_REGULAR
      status:
        restrictedServices:
        - bigquery.googleapis.com
    

    如要進一步瞭解如何設定 YAML 檔案格式,請參閱 Access Context Manager ServicePerimeterConfig 物件的 JSON 結構。

  • ETAG (選用) 是代表組織存取權政策目標版本的字串。如未加入 ETag,大量作業會將最新版本的組織存取權政策當成目標。

    如要取得存取權政策的最新 ETag,請使用 list 指令列出存取權政策

API

如要大量取代所有 service perimeter,請呼叫 servicePerimeters.replaceAll

POST https://accesscontextmanager.googleapis.com/v1/accessPolicies/POLICY_NAME/servicePerimeters.replaceAll?alt=json

其中:

  • POLICY_NAME 是組織的存取權政策名稱。

要求主體

要求主體必須包含 ServicePerimeterConfig 物件清單,指定要進行的變更。

(選用) 如要指定組織存取權政策的特定版本,可以加入 ETag。如未加入 ETag,大量作業會將最新版本的組織存取權政策當成目標。

例如:

{
  "servicePerimeters": [
    object (ServicePerimeterConfig),
    object (ServicePerimeterConfig),
    ...
  ]
  "etag": string
}

回應主體

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

回應範例:

{
  "name": "operations/accessPolicies/11271009391/replacePerimeters/1583523447707087",
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.identity.accesscontextmanager.v1.ReplaceServicePerimetersResponse",
    "servicePerimeters": [
      {
        "name": "accessPolicies/11271009391/servicePerimeters/storage_perimeter",
        "title": "Storage Perimeter",
        "description": "Perimeter to protect Storage resources.",
        "status": {
          "accessLevels": [
            "accessPolicies/11271009391/accessLevels/corpnet_access"
          ],
          "restrictedServices": [
            "bigtable.googleapis.com"
          ]
        }
      },
      {
        "name": "accessPolicies/11271009391/servicePerimeters/storage_perimeter",
        "title": "BigQuery Perimeter",
        "description": "Perimeter to protect BigQuery resources.",
        "status": {
          "accessLevels": [
            "accessPolicies/11271009391/accessLevels/prodnet_access"
          ],
          "restrictedServices": [
            "bigtable.googleapis.com"
          ]
        }
      }
    ]
  }
}