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

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

您可以绑定 向您要限制其访问权限的用户群组授予 CBA 访问权限级别。这个 限制适用于所有调用 Google Cloud 代码 API。这些应用包括由 Google 构建的第一方应用、 (例如 Google Cloud 控制台和 Google Cloud CLI)以及第三方应用。 您也可以选择将限制应用于特定的客户端应用 特定应用除外。

准备工作

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

创建用户群组

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

分配 Cloud Access Binding Admin 角色

分配 Cloud Access Binding Admin 授予用户角色。

请确保您拥有足够的权限来添加 组织级别的 IAM 权限。您至少需要 Organization Admin 以及 Cloud 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 Enterprise Premium 页面。

    前往 Chrome Enterprise Premium

  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 应用。

    {
        "groupKey": "{GROUP_KEY}",
        "restricted_client_applications": [
            {"name": "Cloud Console"},
            {"name": "Google Cloud SDK"},
            {"client_id": "{CLIENT_ID}"}
        ],
        "accessLevels": [ "{LEVEL}" ],
    }
    
  3. 创建 CBA 访问权限级别绑定。

    curl -X POST \
    -H "Authorization: Bearer `gcloud auth application-default print-access-token`" \
    -H "Content-Type: application/json" \
    -H "X-Goog-User-Project:PROJECT_ID" \
    -d @policy_file.json \
    https://accesscontextmanager.googleapis.com/v1/organizations/ORG-ID/gcpUserAccessBindings
    

    其中,PROJECT_ID 是 Google Cloud 项目 ID, ORG-ID 是您的组织 ID。

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

    $ curl -X PATCH \
    -H "Authorization: Bearer `gcloud auth application-default print-access-token`" \
    -H "Content-Type: application/json" \
    -H "X-Goog-User-Project:PROJECT_ID" \
    -d @policy_file.json \
    https://accesscontextmanager.googleapis.com/v1/POLICY_NAME?update_mask=restricted_client_applications
    

    其中,PROJECT_ID 是 Google Cloud 项目 ID, POLICY_NAME 是您的访问权限政策的名称。

从绑定豁免应用

在不屏蔽客户端应用的情况下应用 CBA 访问权限级别的另一种方法 那就是让这些应用免于进入 政策。

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

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

  2. 创建 exemption_file.json 文件。

    您选择的组必须与 将 CBA 访问权限级别绑定到用户群组选项, 因为一个组只能应用一个绑定

    {
        "groupKey": "{GROUP_KEY}",
        "restricted_client_applications": [
            {"client_id": "{CLIENT_ID}"}
        ],
        "accessLevels": [ "{LEVEL}" ],
    }
    
  3. 创建豁免绑定政策。

    $ curl -X POST \
    -H "Authorization: Bearer `gcloud auth application-default print-access-token`" \
    -H "Content-Type: application/json" \
    -H "X-Goog-User-Project:PROJECT_ID" \
    -d @exemption_file.json \
    https://accesscontextmanager.googleapis.com/v1/organizations/ORG-ID/gcpUserAccessBindings
    

    其中,PROJECT_ID 是 Google Cloud 项目 ID, ORG-ID 是您的组织 ID。