本页面介绍如何管理现有访问权限级别。您可以执行以下操作:
准备工作
设置默认访问权限政策,以使用
gcloud命令行工具。或
获取您的政策名称。使用
gcloud命令行工具并进行 API 调用的命令需要政策名称。如果您设置了默认访问权限政策,则无需为gcloud命令行工具指定政策。确保在组织级层拥有 Identity and Access Management (IAM) 角色,该角色允许您管理访问权限级别。请让您的管理员授予您以下角色之一或具有相同权限的自定义角色:
查看访问权限级别:Access Context Manager Reader (
roles/accesscontextmanager.policyReader)查看和更改访问权限级别: Access Context Manager Editor (
roles/accesscontextmanager.policyEditor) 或 Access Context Manager Admin (roles/accesscontextmanager.policyAdmin)
列出访问权限级别
控制台
如需列出所有访问权限级别,请在 Google Cloud 控制台中打开 Access Context Manager 页面,然后在系统提示时 选择您的组织。您组织的访问权限级别显示在页面的网格中,包括有关每个访问权限级别的配置详细信息。
gcloud
如需列出所有访问权限级别,请使用 list 命令。
gcloud access-context-manager levels list \ [--policy=POLICY_NAME]
替换以下内容:
POLICY_NAME是您组织的访问权限政策名称。 只有在未设置默认访问权限政策的情况下,才需要指定此值。
输出结果如下所示:
NAME TITLE LEVEL_TYPE Device_Trust Device_Trust Extended Basic Service_Group_A Service_Group_A Basic
API
如需列出一项政策的所有访问权限级别,请调用
accessLevels.list。
GET https://accesscontextmanager.googleapis.com/v1alpha/accessPolicies/POLICY_NAME/accessLevels
替换以下内容:
POLICY_NAME是您组织的访问权限政策名称。
请求正文
请求正文必须为空。
可选参数
可包含以下一个或多个查询参数。
| 参数 | |
|---|---|
pageSize
|
默认情况下,会将 您可以使用此参数来修改每页返回的访问权限级别数量。 |
pageToken
|
如果调用返回的访问权限级别数量超过了 页面大小,响应正文将包含一个页标记。 您可以在后续调用中使用此参数来获取 下一页结果。 |
accessLevelFormat
|
一般来说,访问权限级别会以定义的方式返回,即作为
您可以为此参数指定值 |
响应正文
如果成功,则调用的响应正文包含一个列出访问权限级别的 AccessLevels 对象,以及一个 nextPageToken 字符串。仅当返回的访问权限级别数量超过页面大小时,nextPageToken 才会有值。否则,nextPageToken 将作为空字符串返回。
列出访问权限级别(有格式)
您可以使用 gcloud 命令行工具,获取 YAML 或 JSON 格式的访问权限级别列表。
要获取有格式的访问权限级别列表,请使用 list 命令。
gcloud access-context-manager levels list \ --format=FORMAT \ [--policy=POLICY_NAME]
替换以下内容:
FORMAT 是以下任一值:
list(YAML 格式)json(JSON 格式)
POLICY_NAME是您组织的访问权限政策名称。只有在未设置 默认访问权限政策的情况下,才需要指定此值。
YAML 输出结果如下所示:
- basic: {'conditions': [{'ipSubnetworks': ['8.8.0.0/24']}]} description: Level for corp access. name: accessPolicies/165717541651/accessLevels/corp_level title: Corp Level - basic: {'combiningFunction': 'OR', 'conditions': [{'ipSubnetworks': ['8.8.0.0/24']}]} description: Level for net access. name: accessPolicies/165717541651/accessLevels/net_level title: Net Level
JSON 输出结果如下所示:
[ { "basic": { "conditions": [ { "ipSubnetworks": [ "8.8.0.0/24" ] } ] }, "description": "Level for corp access.", "name": "accessPolicies/165717541651/accessLevels/corp_level", "title": "Corp Level" }, { "basic": { "combiningFunction": "OR", "conditions": [ { "ipSubnetworks": [ "8.8.0.0/24" ] } ] }, "description": "Level for net access.", "name": "accessPolicies/165717541651/accessLevels/net_level", "title": "Net Level" } ]
描述访问权限级别
控制台
使用 Google Cloud 控制台,请参阅 列出访问权限级别的步骤。列出访问权限级别时,出现的网格中会提供其详细信息。
gcloud
列出访问权限级别时,仅会显示其名称、标题和级别类型。要获取有关级别实际作用的详细信息,请使用 describe 命令。
gcloud access-context-manager levels describe LEVEL_NAME \ [--policy=POLICY_NAME]
替换以下内容:
LEVEL_NAME是您要描述的访问权限级别名称。POLICY_NAME是您组织的访问权限政策名称。只有在未设置默认访问权限政策的情况下,才需要指定此值。
该命令将以 YAML 格式输出关于级别的信息。例如,如果级别限制仅某些操作系统版本可以访问,输出可能类似于以下内容:
basic: conditions: - devicePolicy: allowedEncryptionStatuses: - ENCRYPTED osConstraints: - minimumVersion: 10.13.6 osType: DESKTOP_MAC - minimumVersion: 10.0.18219 osType: DESKTOP_WINDOWS - minimumVersion: 68.0.3440 osType: DESKTOP_CHROME_OS requireScreenlock: true name: accessPolicies/330193482019/accessLevels/Device_Trust title: Device_Trust Extended
API
列出访问权限级别时,仅会显示级别的名称、标题和类型。
要获取有关访问权限级别的详细信息,
请调用 accessLevels.get。
GET https://accesscontextmanager.googleapis.com/v1alpha/accessPolicies/POLICY_NAME/accessLevels/LEVEL_NAME
替换以下内容:
POLICY_NAME是您组织的访问权限政策名称。LEVEL_NAME是您要描述的访问权限级别名称。
请求正文
请求正文必须为空。
可选参数
(可选)包括 accessLevelFormat 查询参数。一般来说,访问权限级别会以定义的方式返回,即作为 BasicLevel 或 CustomLevel。
您可以为此参数指定值 CEL,以采用 Cloud 通用表达式语言将 BasicLevels 作为 CustomLevels 返回。
响应正文
如果成功,调用的响应正文将包含一个 AccessLevel 资源,提供关于该访问权限级别的作用、该级别上次更新时间等详细信息。
更新访问权限级别
本部分介绍如何更新单个访问权限级别。要通过一项操作更新贵组织的所有访问权限级别,请参阅对访问权限级别进行批量更改。
控制台
要更新访问权限级别,请执行以下操作:
在 Google Cloud 控制台中打开 Access Context Manager 页面。
如果出现提示,请选择您的组织。
在网格中,点击您要更新的访问权限级别名称。
在修改访问权限级别窗格中,更改访问权限级别。
如需可添加或修改的属性完整列表,请参阅访问权限级别属性。
点击保存。
除了更新或移除任何现有条件外,您还可以添加新的条件,以及向现有条件添加新的属性。
gcloud
使用 update 命令更新访问权限级别。
基本访问权限级别:
gcloud access-context-manager levels update LEVEL_NAME \ --basic-level-spec=FILE \ [--policy=POLICY_NAME]
自定义访问权限级别 :
gcloud access-context-manager levels update LEVEL_NAME \ --custom-level-spec=FILE \ [--policy=POLICY_NAME]
替换以下内容:
LEVEL_NAME是您要更新的访问权限级别名称。FILE 是.yaml 文件的名称,用于定义访问权限级别的条件(针对基本访问权限级别)或解析为单个布尔值的 CEL 表达式(针对自定义访问权限级别)。
如需了解可在基本访问权限级别条件中使用的属性完整列表,请参阅访问权限级别属性。
POLICY_NAME是您组织的访问权限政策名称。只有在未设置默认访问权限政策的情况下,才需要指定此值。您可以添加一个或多个以下选项。
选项 combine-function此选项仅用于基本访问权限级别。
确定条件的合并方式。
有效值:
AND、ORdescription访问权限级别的详细说明。
title访问权限级别的简短标题。访问权限级别的标题 显示在 Google Cloud 控制台中。
您可以添加任何在 gcloud 范围内适用的标志。
示例命令
gcloud access-context-manager levels update Device_Trust \ --basic-level-spec=corpdevspec.yaml \ --combine-function=OR \ --description='Access level that conforms to updated corporate spec.' \ --title='Device_Trust Extended' \ --policy=1034095178592
API
要更新访问权限级别,请调用 accessLevels.patch。
PATCH https://accesscontextmanager.googleapis.com/v1/accessPolicies/POLICY_NAME/accessLevels/LEVEL_NAME?updateMask=FIELDS
替换以下内容:
POLICY_NAME是您组织的访问权限政策名称。LEVEL_NAME是您要描述的访问权限级别名称。FIELDS 是您要更新的完全限定字段名称的逗号分隔列表。
请求正文
请求正文必须包含一个 AccessLevel 资源,用于指定您要对访问权限级别进行的更改。
响应正文
如果成功,调用的响应正文将包含一个 Operation 资源,提供关于修补操作的详细信息。
删除访问权限级别
本部分介绍如何删除 Access Context Manager 访问权限级别。 删除访问权限级别是一个包含两个步骤的过程:
检查访问权限级别依赖项
在删除访问权限级别之前,请确保该级别未被其他访问权限级别引用。
如需查找引用您要删除的访问权限级别的所有访问权限级别,请执行以下操作:
确保您已安装
jq。如需验证是否已安装jq,请运行jq --version。安装jq。检查访问权限级别依赖项。此命令会列出 所有访问权限级别,然后使用
jq过滤基本或自定义级别 定义中引用 LEVEL_NAME 的访问权限级别。echo "Searching for Access Levels referencing: accessPolicies/POLICY_NAME/accessLevels/LEVEL_NAME" echo "" gcloud access-context-manager levels list \ --policy="POLICY_NAME" \ --format=json | \ jq -r ' .[] | select( # Check basic levels: Is the target access level present as an element in any requiredAccessLevels array? (.basic.conditions // []) | .[] | .requiredAccessLevels | index("accessPolicies/POLICY_NAME/accessLevels/LEVEL_NAME") != null or # Check custom levels: Does the expression string contain the target access level? (.custom.expr.expression // "") | contains("accessPolicies/POLICY_NAME/accessLevels/LEVEL_NAME") ) | " - \(.title) (Name: \(.name))" ' echo "" echo "If any levels are listed, they reference LEVEL_NAME. You must update these referencing levels before you delete LEVEL_NAME."
替换以下内容:
POLICY_NAME是您组织的访问权限政策名称。只有在未设置 默认访问权限政策的情况下,才需要指定此值。LEVEL_NAME是您要删除的访问权限级别名称,例如my_level。
在输出中,系统会列出引用
accessPolicies/POLICY_NAME/accessLevels/LEVEL_NAME的任何访问权限级别,以及它们的title和name。这包括 基本级别(其中accessPolicies/POLICY_NAME/accessLevels/LEVEL_NAME位于requiredAccessLevels中)和自定义级别(其中accessPolicies/POLICY_NAME/accessLevels/LEVEL_NAME显示在custom.expr.expression字符串中)。如果该命令列出了任何引用访问权限级别,您必须先更新这些级别以移除依赖项。如需了解相关 说明,请参阅更新访问权限级别。
移除所有引用后,您可以继续删除单个 访问权限级别。
删除单个访问权限级别
控制台
要删除访问权限级别,请执行以下操作:
在 Google Cloud 控制台中打开 Access Context Manager 页面
如果出现提示,请选择您的组织。
在网格中,针对您要删除的访问权限级别所对应行,点击 按钮。
点击删除。
在出现的对话框中,确认您要删除访问权限级别。
gcloud
要删除访问权限级别,请执行以下操作:
使用
delete命令来删除访问权限级别。gcloud access-context-manager levels delete LEVEL_NAME \ [--policy=POLICY_NAME]
替换以下内容:
LEVEL_NAME是您要删除的访问权限级别名称。POLICY_NAME是您组织的访问权限政策名称。 只有在未设置默认访问权限政策的情况下,才需要指定此值。
确认您要删除访问权限级别。
例如:
You are about to delete level Device_Trust Do you want to continue (Y/n)?
您将看到如下所示的输出:
Waiting for operation [accessPolicies/330193482019/accessLevels/Device_Trust/delete/1531171874311645] to complete...done. Deleted level [Device_Trust].
API
要删除访问权限级别,请调用 accessLevels.delete。
DELETE https://accesscontextmanager.googleapis.com/v1alpha/accessPolicies/POLICY_NAME/accessLevels/LEVEL_NAME
替换以下内容:
POLICY_NAME是您组织的访问权限政策名称。LEVEL_NAME是您要描述的访问权限级别名称。
请求正文
请求正文必须为空。
响应正文
如果成功,调用的响应正文将包含一个
Operation资源,提供关于此
删除操作的详细信息。