使用 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"
]
}
]
}
}
]
}
}