大量變更存取層級

您可以使用 Access Context Manager,針對機構的存取權政策 (例如存取層級服務範圍) 中的資源進行大量更新。

只有在大量操作的所有部分都成功時,系統才會套用資源變更。舉例來說,如果大量操作嘗試移除服務範圍正在使用的存取層級,系統會擲回錯誤。由於發生錯誤,因此整個作業失敗,且沒有任何資源更新。

本主題僅說明如何大量取代存取層級。如要進一步瞭解如何大量取代服務範圍,請參閱 VPC Service Controls 說明文件

事前準備

大量操作會影響機構的所有存取層級,因此建議您取得完整的存取層級清單。您可以將清單格式化為 YAML,這樣也許更容易大量變更存取層級。

如要取得格式化的存取層級清單,請參閱「列出存取層級 (格式化)」一文。

大量取代存取層級

請參閱下文,瞭解如何大量取代存取層級。

gcloud

如要大量取代所有存取層級,請使用 replace-all 指令。

gcloud access-context-manager levels replace-all \
  --source-file=FILE \
  --etag=ETAG \
  [--policy=POLICY_NAME]

其中:

  • FILE 是 .yaml 檔案的名稱,用於定義現有存取層級的新條件。

    例如:

    - name: accessPolicies/11271009391/accessLevels/corpnet_access
      title: Corpnet Access
      description: Permit access to corpnet.
      basic:
        combiningFunction: AND
        conditions:
          - ipSubnetworks:
            - 252.0.2.0/24
            - 2001:db8::/32
    - name: accessPolicies/11271009391/accessLevels/prodnet_access
      title: Prodnet Access
      description: Permit access to prodnet.
      basic:
        combiningFunction: OR
        conditions:
          - members:
            - user:exampleuser@example.com
            - serviceAccount:exampleaccount@example.iam.gserviceaccount.com
          - ipSubnetworks:
            - 176.0.2.0/24
    

    如需更多條件 YAML 結構的範例,請參閱 YAML 範例檔案

  • ETAG (選用) 是代表貴機構存取權政策目標版本的字串。如果您未加入 etag,大量操作會鎖定貴機構的最新版存取政策。

    如要取得存取權政策的最新 etag,請list存取權政策

  • POLICY_NAME 是指您機構的存取權政策名稱。只有在您未設定預設存取權政策時,才需要這個值。

API

如要大量取代所有存取層級,請呼叫 accessLevels.replaceAll

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

其中:

  • POLICY_NAME 是指您機構的存取權政策名稱。

要求主體

要求主體必須包含用來指定要變更內容的 AccessLevel 物件清單。

如要指定貴機構的特定存取權政策版本,您可以選擇加入 etag。如果您未加入 etag,大量操作會以貴機構的最新存取權政策為目標。

例如:

{
  "accessLevels": [
    object (AccessLevel),
    object (AccessLevel),
    ...
  ]
  "etag": string
}

回應主體

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

回應範例:

{
  "name": "operations/accessPolicies/11271009391/replaceLevels/1583523446234255",
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.identity.accesscontextmanager.v1.ReplaceAccessLevelsResponse",
    "accessLevels": [
      {
        "name": "accessPolicies/11271009391/accessLevels/corpnet_access",
        "title": "Corpnet access",
        "description": "Permit access to corpnet.",
        "basic": {
          "conditions": [
            {
              "ipSubnetworks": [
                "252.0.2.0/24"
              ]
            }
          ]
        }
      },
      {
        "name": "accessPolicies/11271009391/accessLevels/prodnet_access",
        "title": "Prodnet access",
        "description": "Permit access to prodnet.",
        "basic": {
          "conditions": [
            {
              "ipSubnetworks": [
                "176.0.2.0/24"
              ]
            }
          ]
        }
      }
    ]
  }
}