管理访问权限绑定

本文档介绍了如何管理现有访问权限绑定,这些绑定定义了如何将访问权限政策应用于用户群组或服务账号。您可以根据需要查看、修改和删除这些绑定。访问权限绑定决定了如何将访问权限级别和会话控制应用于用户组或服务账号。

如需了解如何为用户创建访问权限绑定,以及有关访问权限级别和会话控制的更多详情,请参阅通过访问权限绑定将政策应用于用户群组

如需详细了解如何为服务账号创建访问权限绑定,请参阅为服务账号配置情境感知访问权限

列出访问权限绑定

如需列出之前为用户群组创建的所有访问权限绑定,请执行以下操作:

gcloud

如需使用 gcloud CLI 列出所有用户访问权限绑定,请运行以下命令。如需列出服务账号的访问权限绑定,您必须使用过滤条件。

gcloud access-context-manager cloud-bindings list \
  --organization ORGANIZATION_ID

ORG_ID:您的组织 ID。 如果尚未设置 access-context-manager/organization 属性,请将可选 --organization 标志中的 ORG_ID 替换为您在创建 GcpAccessAdmin 角色时使用的组织的 ID。

如需列出特定资源上的访问权限绑定,您可以使用过滤标志。

  --filter="FILTER"

FILTER 替换为描述访问权限政策所绑定资源的过滤条件,例如:

  • 用户群组:principal:group_key

  • 服务账号:principal:service_account OR principal:service_account_project_number

REST API

如需列出所有 USER_LOGIN 访问权限绑定,请运行以下命令:

curl -H "X-Goog-User-Project: PROJECT_ID" -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://accesscontextmanager.googleapis.com/v1/organizations/ORGANIZATION_ID/gcpUserAccessBindings"

如需列出特定资源上的访问权限绑定,您可以使用过滤条件参数。

curl -H "X-Goog-User-Project: PROJECT_ID" -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://accesscontextmanager.googleapis.com/v1/organizations/ORGANIZATION_ID/gcpUserAccessBindings?filter=FILTER"

替换以下内容:

  • PROJECT_ID:项目的 ID
  • ORGANIZATION_ID:组织的 ID
  • FILTER:用于描述访问政策所绑定到的资源的过滤条件,例如:

    • 用户群组:principal:group_key

    • 服务账号:principal:service_account OR principal:service_account_project_number

查看访问权限绑定

为一组用户创建访问权限绑定后,系统会根据是否满足绑定的访问权限级别来控制对Cloud de Confiance 控制台和 Cloud de Confiance by S3NS API 的访问权限。

您可以查看所创建的访问权限绑定的详细信息,对其进行修改或将其删除。

控制台

  1. 在 Cloud de Confiance 控制台中,前往 Access Context Manager 页面。

    转到 Access Context Manager

  2. 如果系统提示您,请选择一个项目。访问权限绑定会列在 Access Context Manager 页面上。

gcloud

如需查看访问权限绑定的详细信息,请运行以下命令:

  gcloud access-context-manager cloud-bindings describe \
  --binding=BINDING_ID

BINDING_ID 是访问权限绑定的 ID 或访问权限绑定的完全限定标识符。

API

查看访问权限绑定的详细信息:

HTTP 方法和网址:

GET https://accesscontextmanager.googleapis.com/v1/BINDING_ID

如需发送请求,请选择以下方式之一:

curl

执行以下命令:

curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://accesscontextmanager.googleapis.com/v1/BINDING_ID"

PowerShell

执行以下命令:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://accesscontextmanager.googleapis.com/v1/BINDING_ID" | Select-Object -Expand Content

您应该收到类似以下内容的 JSON 响应:


{
  "name": "organizations/427391306986/gcpUserAccessBindings/aAQS-YRSviv2hC12vZFUN3AZzvwa6KV2hJ89iMytB_nHUcT1l",
  "groupKey": "045jfvxd0ybeul8",
  "accessLevels": [
    "accessPolicies/305009197125/accessLevels/device_lock"
  ],
  "dryRunAccessLevels": [
    "accessPolicies/305009197125/accessLevels/another"
  ]
}

更新访问权限绑定

您可以更新访问权限绑定,以执行以下操作:

  • 添加、移除或更改应用政策。
  • 修改用户组中应用的访问权限级别。
  • 添加新的试运行访问权限级别,或将现有访问权限级别提升为正式版级别。

控制台

  1. 在 Cloud de Confiance 控制台中,前往 Access Context Manager 页面。

    转到 Access Context Manager

  2. 如果系统提示您,请选择一个项目。

  3. 在 Access Context Manager 页面上,选择一个访问权限绑定,然后点击修改以更新该绑定。

您无法在 Cloud de Confiance 控制台中更新具有试运行访问权限级别或会话控制的访问权限绑定。

gcloud

  1. 创建 YAML 绑定文件。

    gcloud access-context-manager cloud-bindings update \
      --binding=ACCESS_BINDING \
      --binding-file=BINDING_FILE_PATH \
      --level=DEFAULT_ACCESS_LEVEL \
      --dry-run-level=DEFAULT_DRY_RUN_ACCESS_LEVEL
    [  --session-length=DEFAULT_SESSION_LENGTH                ]
    [  --session-reauth-method=DEFAULT_SESSION_REAUTH_METHOD  ]
    

    替换以下内容:

    • ACCESS_BINDING 的形式为 organizations/ORG_ID/gcpUserAccessBindings/ACCESS_BINDING_NAME
    • BINDING_FILE_PATH:包含访问权限绑定方案的 YAML 文件的路径。 绑定文件仅支持 scopedAccessSettings
    • DEFAULT_ACCESS_LEVEL:可选的访问权限级别名称,格式为 accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME。将 POLICY_ID 替换为访问权限政策 ID,并将 ACCESS_LEVEL_NAME 替换为访问权限级别名称。
    • DEFAULT_DRY_RUN_ACCESS_LEVEL_2:可选的访问权限级别名称,格式为 `accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME`。 如果 YAML 中未指定应用,请添加此标志以默认将指定的预演访问权限级别应用于所有应用。
    • DEFAULT_SESSION_LENGTH:可选的会话时长,以小时格式表示,例如 15h 表示 15 小时,2h 表示 2 小时。
    • DEFAULT_SESSION_REAUTH_METHOD:用于提示用户重新验证身份的可选方法,必须是以下方法之一:
      • LOGIN:应用标准登录,其中可包含 MFA 或其他 Workspace 定义的因素。
      • PASSWORD:仅要求输入密码,即使定义了其他因素也是如此。如果密码是使用外部 IdP 管理的,则用户会被重定向到该 IdP。如果 IdP 会话处于有效状态,系统会隐式重新验证用户身份。如果 IdP 未处于有效状态,用户必须通过该 IdP 登录。
      • SECURITY_KEY:需要使用硬件安全密钥。

    --level--binding-file 实参如何协同工作

    • 如果您仅使用 --binding-file,则只有文件中的应用会应用相应政策。
    • 如果您仅使用 --level,则相应访问权限级别适用于所有应用。
    • 如果您同时使用这两个参数,系统会将规则合并。--level 值适用于所有应用,而 --binding-file 指定的 YAML 文件中的政策仅适用于该文件中定义的应用。

    使用会话控件

    • 如需为所有应用设置默认会话控制,请使用 --session-length--session-reauth-method
    • 如果您还在 YAML 文件中定义了会话控制,那么这些会话控制会替换相应特定应用的默认设置。
    • 您必须同时使用 --session-length--session-reauth-method

    如需移除默认访问权限级别或默认试运行访问权限级别,请提供空字符串,例如 --level=--dry-run-level=。如果未提供这些实参,update 命令将不会进行任何更改。

    如需移除会话控制,请设置 --session-length=0

API

  1. 创建 JSON 正文。

    {
      "accessLevels": [
        "DEFAULT_ACCESS_LEVEL"
      ],
      "scopedAccessSettings": [
        {
          "scope": {
            "clientScope": {
              "restrictedClientApplication": {
                "clientId": "CLIENT_ID"
              }
            }
          },
          "activeSettings": {
            "accessLevels": [
              "ACCESS_LEVEL_A"
            ],
            "sessionSettings": {
              "sessionLength": "SESSION_LENGTH",
              "sessionReauthMethod": "SESSION_REAUTH_METHOD",
              "sessionLengthEnabled": true
            }
          }
        },
        {
          "scope": {
            "clientScope": {
              "restrictedClientApplication": {
                "name": "CLIENT_NAME"
              }
            }
          },
          "activeSettings": {
            "accessLevels": [
              "ACCESS_LEVEL_C"
            ]
          }
        }
      ]
    }
    

    替换以下内容:

    • DEFAULT_ACCESS_LEVEL:可选的访问权限级别名称,格式为 accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME。将 POLICY_ID 替换为访问权限政策 ID,并将 ACCESS_LEVEL_NAME 替换为访问权限级别名称。
    • CLIENT_ID:OAuth 客户端 ID。当应用包含 sessionSettings 时,您可以使用 clientIdname
    • ACCESS_LEVEL_A:访问权限级别名称,格式为 accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME
    • SESSION_LENGTH:会话时长,采用 ISO 8601 时长格式,例如 30 分钟为 30m,2 小时为 2h
    • SESSION_REAUTH_METHOD:用于提示用户重新验证身份的可选方法,必须是以下方法之一:

      • LOGIN:应用标准登录,其中可包含 MFA 或其他 Workspace 定义的因素。
      • PASSWORD:仅要求输入密码,即使定义了其他因素也是如此。如果密码是使用外部 IdP 管理的,则用户会被重定向到该 IdP。如果 IdP 会话处于有效状态,系统会隐式重新验证用户身份。如果 IdP 未处于有效状态,用户必须通过该 IdP 登录。
      • SECURITY_KEY:需要使用硬件安全密钥。
    • CLIENT_NAME:客户端名称。当应用包含 sessionSettings 时,您可以使用 nameclientId

    • ACCESS_LEVEL_C:访问权限级别名称,格式为 accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME

  2. 发送 PATCH 请求。

    PATCH https://accesscontextmanager.googleapis.com/v1/ACCESS_BINDING?updateMask=FIELD_MASK
    

    替换以下内容:

    • ACCESS_BINDING 的形式为 organizations/ORG_ID/gcpUserAccessBindings/ACCESS_BINDING_NAME
    • FIELD_MASK:必需的逗号分隔列表,用于指定要更新的字段。此参数用于告知 API 要修改访问权限绑定的哪些部分。

    fieldMask 应包含您要更新的请求正文中的顶级 JSON 键,这些键可以包含 accessLevelsdryRunAccessLevelsscopedAccessSettings

    如果成功,您应该会收到 JSON 对象的表示形式。 如果存在问题,您会收到一条错误消息。

删除访问权限绑定

控制台

  1. 在 Cloud de Confiance 控制台中,前往 Access Context Manager 页面。

    转到 Access Context Manager

  2. 如果系统提示您,请选择一个项目。

  3. 在 Access Context Manager 页面上,选择一个访问权限绑定,然后点击删除

gcloud

   gcloud access-context-manager cloud-bindings delete \
       --binding ACCESS_BINDING

替换以下内容:

  • ACCESS_BINDING 的形式为 organizations/ORG_ID/gcpUserAccessBindings/ACCESS_BINDING_NAME
  • ACCESS_BINDING_NAME 是创建访问权限绑定时为 name 标识符返回的唯一字符串。

API

在使用任何请求数据之前,请先进行以下替换:

  • ACCESS_BINDING_NAME 是创建访问权限绑定时为 name 标识符返回的唯一字符串。

HTTP 方法和网址:

DELETE https://accesscontextmanager.googleapis.com/v1/ACCESS_BINDING_NAME

如需发送请求,请选择以下方式之一:

curl

执行以下命令:

curl -X DELETE \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://accesscontextmanager.googleapis.com/v1/ACCESS_BINDING_NAME"

PowerShell

执行以下命令:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method DELETE `
-Headers $headers `
-Uri "https://accesscontextmanager.googleapis.com/v1/ACCESS_BINDING_NAME" | Select-Object -Expand Content

您应该会收到一个成功的状态代码 (2xx) 和一个空响应。