本页介绍了如何使用基于用户群组的情境感知型访问权限政策强制执行基于证书的访问 (CBA)。
您可以将 CBA 访问级别绑定到您要限制访问权限的用户群组,以限制对所有 Google Cloud 服务的访问权限。此限制适用于调用 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 角色。
控制台
在控制台中,打开 IAM 页面。
在权限标签页上,点击授予访问权限,然后配置 以下:
- 新的主账号:指定要向其授予该账号的群组 角色。
- 在选择角色选项中,依次选择 Access Context Manager > Cloud Access Binding Admin。
- 点击保存。
gcloud
登录:
gcloud auth login
通过运行以下命令来分配
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 访问权限级别会应用于 指定用户群组的应用
在控制台中,前往 Chrome Enterprise Premium 页面。
选择一个组织,然后点击选择。
点击管理访问权限以选择应拥有访问权限的用户组。
点击 Add(添加),然后配置以下内容:
- 成员组:指定要授予访问权限的群组。您 只能选择尚未绑定到访问权限级别的群组。
- 选择访问权限级别:选择要应用于该群组的 CBA 访问权限级别。
- 点击保存。
将 CBA 访问权限级别绑定到用户群组和特定应用
在某些用例(例如支持客户端证书的应用)中,将 CBA 访问级别绑定到用户群组可能过于宽泛。您可以使用此选项将 CBA 访问权限级别应用于支持客户端证书的应用。
以下示例将 CBA 访问权限级别绑定到 Google Cloud 控制台。 gcloud CLI 和用户的 OAuth 应用。
登录 gcloud CLI。
$ gcloud auth application-default login
创建
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}" ], }
创建 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。
(可选)更新现有的访问权限级别绑定。
$ 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 访问权限级别 在确定对资源的访问权限时需要证书。
使用以下方法之一创建豁免访问权限级别。
- 自定义访问权限级别:
在 CEL 表达式条件中提供
true
作为值。 - 基本访问权限级别:创建基于 IP 地址范围的访问权限级别,并将
0.0.0.0/0
作为 IP 子网的值。
- 自定义访问权限级别:
在 CEL 表达式条件中提供
创建
exemption_file.json
文件。您选择的组必须与 将 CBA 访问权限级别绑定到用户群组选项, 因为一个组只能应用一个绑定
{ "groupKey": "{GROUP_KEY}", "restricted_client_applications": [ {"client_id": "{CLIENT_ID}"} ], "accessLevels": [ "{LEVEL}" ], }
创建豁免绑定政策。
$ 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。