对访问权限级别进行批量更改

使用 Access Context Manager,可以对属于贵组织的访问政策的资源进行批量更新,例如访问权限级别服务边界

仅当批量操作的所有部分都成功时,才应用对资源的更改。例如,如果您的批量操作尝试移除服务边界正在使用的访问权限级别,则会引发错误。由于遇到错误,因此整个操作将失败,并且不会更新任何资源。

本主题仅介绍批量替换访问权限级别。如需详细了解批量替换服务边界,请参阅 VPC 服务控制文档

准备工作

由于批量操作会影响您组织的所有访问权限级别,因此您可能希望获取完整的访问权限级别列表。该列表的格式可以设置为 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 资源,用于提供与 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"
              ]
            }
          ]
        }
      }
    ]
  }
}