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

本页介绍了如何使用基于用户群组的情境感知型访问权限政策强制执行基于证书的访问 (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 应用,请使用应用名称,例如Google Cloud 控制台的 Cloud Console。仅支持 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 方法来获取。