为用户群组强制执行基于证书的访问权限

本页面介绍了如何使用基于用户群组的情境感知访问权限政策来强制执行基于证书的访问权限 (CBA)。

您可以将 CBA 访问权限级别绑定到要限制访问权限的用户群组,从而限制对所有 Google Cloud 服务的访问权限。此限制适用于所有调用 Google CloudAPI 的客户端应用。

您可以选择将限制应用于特定客户端应用,或免除特定应用的限制。这些应用包括第三方应用和 Google 构建的第一方应用,例如适用于 Google Cloud 控制台的 Cloud Console 和适用于 Google Cloud CLIGoogle Cloud SDK

准备工作

确保您已创建 CBA 访问权限级别,该级别要求在确定对资源的访问权限时使用证书。

创建用户群组

创建用户群组,其中包含应根据 CBA 访问权限级别授予访问权限的成员。

分配 Cloud Access Binding Admin 角色

为用户群组分配 Cloud Access Binding Admin 角色。

确保您已获得授权,并拥有在组织级层添加 IAM 权限的足够权限。您至少需要具有 Organization AdminCloud Access Binding Admin 角色。

控制台

  1. 在控制台中,打开 IAM 页面。

    转到 IAM

  2. 权限标签页中,点击授予访问权限,然后配置以下内容:

    1. 新主账号:指定要向其授予角色的群组。
    2. 选择角色选项中,选择 Access Context Manager > Cloud Access Binding Admin
    3. 点击保存

gcloud

  1. 登录:

    gcloud auth login
    
  2. 通过运行以下命令来分配 GcpAccessAdmin 角色:

    gcloud organizations add-iam-policy-binding ORG_ID \
      --member=user:EMAIL \
      --role=roles/accesscontextmanager.gcpAccessAdmin
    
    • ORG_ID 是您组织的 ID。如果您不知道组织 ID,可使用以下命令进行查找:

       gcloud organizations list
      
    • EMAIL 是您要授予角色的用户或群组的电子邮件地址。

将 CBA 访问权限级别绑定到用户群组

在此绑定选项中,CBA 访问权限级别适用于您指定的用户群组的所有客户端应用。

  1. 在控制台中,前往 Chrome 企业进阶版页面。

    前往 Chrome 企业进阶版

  2. 选择一个组织,然后点击选择

  3. 点击管理访问权限以选择应拥有访问权限的用户组。

  4. 点击添加,然后配置以下内容:

    1. 成员组:指定要授予访问权限的群组。您只能选择尚未绑定到访问权限级别的群组。
    2. 选择访问权限级别:选择要应用于该群组的 CBA 访问权限级别。
    3. 点击保存

将 CBA 访问权限级别绑定到用户群组和特定应用

在某些使用情形下(例如支持客户端证书的应用),将 CBA 访问权限级别绑定到用户群组可能过于宽泛。您可以使用此选项将 CBA 访问权限级别应用于支持客户端证书的应用。

以下示例将 CBA 访问权限级别绑定到 Google Cloud 控制台、gcloud CLI 和用户的 OAuth 应用。

  1. 登录 gcloud CLI。

    gcloud auth application-default login
    
  2. 创建 policy_file.json 文件。

    您可以使用应用的 OAuth 客户端 ID 来指定应用。如需指定 Google 应用,请使用应用名称,例如 Cloud Console(适用于Google Cloud 控制台)。仅支持 Google Cloud 控制台和 Google Cloud SDK Google 应用。

    scopedAccessSettings:
    - scope:
        clientScope:
          restrictedClientApplication:
            name: Cloud Console
      activeSettings:
        accessLevels:
        - CBA_ACCESS_LEVEL
    - scope:
        clientScope:
          restrictedClientApplication:
            name: Google Cloud SDK
      activeSettings:
        accessLevels:
        - CBA_ACCESS_LEVEL
    - scope:
        clientScope:
          restrictedClientApplication:
            clientId: CLIENT_ID_1
      activeSettings:
        accessLevels:
        - CBA_ACCESS_LEVEL
    

    替换以下内容:

    • CLIENT_ID_1:OAuth 客户端 ID。
    • CBA_ACCESS_LEVEL:CBA 访问权限级别名称,格式为 accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME
  3. 创建 CBA 访问权限级别绑定。

    gcloud access-context-manager cloud-bindings create \
      --group-key='GROUP_KEY' \
      --organization='ORG_ID' \
      --binding-file=.../policy_file.json

    GROUP_KEY 替换为上下文感知访问权限组,将 ORG_ID 替换为您的组织 ID。

    如果您没有 GROUP_KEY,可以通过对群组资源调用 get 方法来检索。

  4. (可选)更新现有访问权限级别绑定。

    gcloud access-context-manager cloud-bindings update \
      --binding='BINDING_NAME' \
      --binding-file=.../policy_file.json

    BINDING_NAME 替换为创建绑定时自动生成的绑定名称。

从绑定中排除应用

另一种应用 CBA 访问权限级别的方法是,将不支持客户端证书的客户端应用从政策中豁免,这样就不会阻止这些应用。

以下步骤假设您之前已创建 CBA 访问权限级别,该级别要求在确定对资源的访问权限时需要证书。

  1. 使用以下方法之一创建豁免访问权限级别。

  2. 创建 exemption_file.json 文件。

    scopedAccessSettings:
    - scope:
        clientScope:
          restrictedClientApplication:
            clientId: CLIENT_ID_2
      activeSettings:
        accessLevels:
        - EXEMPT_ACCESS_LEVEL
    - scope:
        clientScope:
          restrictedClientApplication:
            name: APPLICATION_NAME_2
      activeSettings:
        accessLevels:
        - EXEMPT_ACCESS_LEVEL
    

    替换以下内容:

    • CLIENT_ID_2:OAuth 客户端 ID。
    • APPLICATION_NAME_2:应用名称。
    • EXEMPT_ACCESS_LEVEL:豁免访问权限级别名称,格式为 accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME
  3. 创建豁免绑定政策。

    gcloud access-context-manager cloud-bindings create \
      --group-key='GROUP_KEY' \
      --organization='ORG_ID' \
      --binding-file=.../exemption_file.json

    GROUP_KEY 替换为上下文感知访问权限组,将 ORG_ID 替换为您的组织 ID。

    如果您不知道 GROUP_KEY,可以通过对群组资源调用 get 方法来获取。