管理访问权限级别

本页面介绍如何管理现有访问权限级别。您可以执行以下操作:

准备工作

  • 设置默认访问权限政策,以使用 gcloud 命令行工具。

    获取您的政策名称。使用 gcloud 命令行工具并进行 API 调用的命令需要政策名称。如果您设置了默认访问权限政策,则无需为 gcloud 命令行工具指定政策。

  • 确保在组织级层拥有 Identity and Access Management (IAM) 角色,该角色允许您管理访问权限级别。请让您的管理员授予您以下角色之一或具有相同权限的自定义角色:

列出访问权限级别

控制台

如需列出所有访问权限级别,请在 Google Cloud 控制台中打开 Access Context Manager 页面,然后在系统提示时 选择您的组织。您组织的访问权限级别显示在页面的网格中,包括有关每个访问权限级别的配置详细信息。

打开 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

number

默认情况下,会将 accessLevels.list 返回的访问权限级别列表分页。每个页面 100 个访问权限级别。

您可以使用此参数来修改每页返回的访问权限级别数量。

pageToken

string

如果调用返回的访问权限级别数量超过了 页面大小,响应正文将包含一个页标记。

您可以在后续调用中使用此参数来获取 下一页结果。

accessLevelFormat

enum(LevelFormat)

一般来说,访问权限级别会以定义的方式返回,即作为 BasicLevelCustomLevel

您可以为此参数指定值 CEL,以 将 BasicLevels 作为 CustomLevels 返回,以 Cloud 通用表达式语言。

响应正文

如果成功,则调用的响应正文包含一个列出访问权限级别的 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 查询参数。一般来说,访问权限级别会以定义的方式返回,即作为 BasicLevelCustomLevel

您可以为此参数指定值 CEL,以采用 Cloud 通用表达式语言将 BasicLevels 作为 CustomLevels 返回。

响应正文

如果成功,调用的响应正文将包含一个 AccessLevel 资源,提供关于该访问权限级别的作用、该级别上次更新时间等详细信息。

更新访问权限级别

本部分介绍如何更新单个访问权限级别。要通过一项操作更新贵组织的所有访问权限级别,请参阅对访问权限级别进行批量更改

控制台

要更新访问权限级别,请执行以下操作:

  1. 在 Google Cloud 控制台中打开 Access Context Manager 页面。

    打开 Access Context Manager 页面

  2. 如果出现提示,请选择您的组织。

  3. 在网格中,点击您要更新的访问权限级别名称。

  4. 修改访问权限级别窗格中,更改访问权限级别。

    如需可添加或修改的属性完整列表,请参阅访问权限级别属性

  5. 点击保存

    除了更新或移除任何现有条件外,您还可以添加新的条件,以及向现有条件添加新的属性。

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

    此选项仅用于基本访问权限级别

    确定条件的合并方式。

    有效值:ANDOR

    description

    访问权限级别的详细说明。

    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 访问权限级别。 删除访问权限级别是一个包含两个步骤的过程:

  1. 检查访问权限级别依赖项

  2. 删除单个访问权限级别

检查访问权限级别依赖项

在删除访问权限级别之前,请确保该级别未被其他访问权限级别引用。

如需查找引用您要删除的访问权限级别的所有访问权限级别,请执行以下操作:

  1. 确保您已安装 jq。如需验证是否已安装 jq,请运行 jq --version安装 jq

  2. 检查访问权限级别依赖项。此命令会列出 所有访问权限级别,然后使用 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 的任何访问权限级别,以及它们的 titlename。这包括 基本级别(其中 accessPolicies/POLICY_NAME/accessLevels/LEVEL_NAME 位于 requiredAccessLevels 中)和自定义级别(其中 accessPolicies/POLICY_NAME/accessLevels/LEVEL_NAME 显示在 custom.expr.expression 字符串中)。

  3. 如果该命令列出了任何引用访问权限级别,您必须先更新这些级别以移除依赖项。如需了解相关 说明,请参阅更新访问权限级别

移除所有引用后,您可以继续删除单个 访问权限级别

删除单个访问权限级别

控制台

要删除访问权限级别,请执行以下操作:

  1. 在 Google Cloud 控制台中打开 Access Context Manager 页面

    打开 Access Context Manager 页面

  2. 如果出现提示,请选择您的组织。

  3. 在网格中,针对您要删除的访问权限级别所对应行,点击 按钮。

  4. 点击删除

  5. 在出现的对话框中,确认您要删除访问权限级别。

gcloud

要删除访问权限级别,请执行以下操作:

  1. 使用 delete 命令来删除访问权限级别。

    gcloud access-context-manager levels delete LEVEL_NAME \
        [--policy=POLICY_NAME]

    替换以下内容:

    • LEVEL_NAME 是您要删除的访问权限级别名称。

    • POLICY_NAME 是您组织的访问权限政策名称。 只有在未设置默认访问权限政策的情况下,才需要指定此值。

  2. 确认您要删除访问权限级别。

    例如:

    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资源,提供关于此 删除操作的详细信息。