管理访问权限绑定

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

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

查看访问权限绑定

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

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

控制台

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

    转到 Access Context Manager

  2. 如果系统提示您,请选择一个项目。Access Context Manager 页面上列出了访问绑定的列表。

gcloud

  • 如需查看所有访问权限绑定,请运行以下命令:

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

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

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

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

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

API

  • 查看所有访问权限绑定:

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

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

    HTTP 方法和网址:

    GET https://accesscontextmanager.googleapis.com/v1/organizations/ORG_ID/gcpUserAccessBindings

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

    curl

    执行以下命令:

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

    PowerShell

    执行以下命令:

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

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

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

    
    {
      "name": string,
      "groupKey": string,
      "accessLevels": [
        string
      ]
      "dryRunAccessLevels": [
      string
      ]
    }
    
    

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

    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. 在 Google Cloud 控制台中,前往 Access Context Manager 页面。

    转到 Access Context Manager

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

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

您无法在 Google Cloud 控制台中使用模拟访问权限级别或会话控制来更新访问权限绑定。

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:可选的会话时长,采用 ISO 8601 时长格式,例如 30m(30 分钟)或 2h(两小时)。
    • 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,则必须使用 clientId
    • ACCESS_LEVEL_A:访问权限级别名称,格式为 accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME
    • SESSION_LENGTH:使用 ISO 8601 时长格式表示的会话时长,例如 30m 表示 30 分钟,2h 表示 2 小时。
    • SESSION_REAUTH_METHOD:用于要求用户重新验证其身份的可选方法,必须是以下方法之一:

      • LOGIN:应用标准登录,其中可能包括多重身份验证 (MFA) 或 Workspace 定义的其他因素。
      • PASSWORD:仅要求输入密码,即使定义了其他因素也是如此。如果使用外部 IdP 管理密码,系统会将用户重定向到该 IdP。如果 IdP 会话有效,系统会隐式重新对用户进行身份验证。如果 IdP 未启用,用户必须通过 IdP 登录。
      • SECURITY_KEY:需要使用硬件安全密钥。
    • CLIENT_NAME:客户端名称。如果应用包含 sessionSettings,则无法使用客户端名称。而应改为使用 OAuth 客户端 ID。

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

  2. 发送 PATCH 请求。

    PATCH https://accesscontextmanager.googleapis.com/v1/ACCESS_BINDING?fieldMask=FIELDMASK
    

    替换以下内容:

    • ACCESS_BINDING 的形式为 organizations/ORG_ID/gcpUserAccessBindings/ACCESS_BINDING_NAME
    • FIELD_MASK:要更新的字段的英文逗号分隔列表(必需)。这会告知 API 要修改访问权限绑定的哪些部分。

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

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

删除访问权限绑定

控制台

  1. 在 Google Cloud 控制台中,前往 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) 和一个空响应。