大量變更存取層級

可以使用 Access Context Manager,對屬於組織存取權政策的資源進行大量更新,例如存取層級service perimeter

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

本主題僅說明如何大量取代存取層級。如要進一步瞭解如何大量取代服務範圍,請參閱 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.s3ns.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 資源,其中提供有關 POST 作業的詳細資料。

回應範例:

{
  "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"
              ]
            }
          ]
        }
      }
    ]
  }
}