本页介绍了如何使用基于用户群组的情境感知型访问权限政策强制执行基于证书的访问 (CBA)。
您可以将 CBA 访问权限级别绑定到您要限制访问权限的用户群组,从而限制对所有 Google Cloud 服务的访问权限。此限制适用于调用 Google CloudAPI 的所有客户端应用。
您可以视需要将限制应用于特定客户端应用,也可以豁免特定应用。这些应用包括第三方应用和 Google 构建的第一方应用,例如适用于 Google Cloud 控制台的 Cloud Console
,以及适用于 Google Cloud CLI
的 Google Cloud SDK
。
准备工作
确保您已创建 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 企业进阶版页面。
选择一个组织,然后点击选择。
点击管理访问权限以选择应拥有访问权限的用户组。
点击添加,然后配置以下内容:
- 成员组:指定要授予访问权限的群组。您只能选择尚未绑定到访问权限级别的群组。
- 选择访问权限级别:选择要应用于该群组的 CBA 访问权限级别。
- 点击保存。
将 CBA 访问权限级别绑定到用户群组和特定应用
在某些用例(例如支持客户端证书的应用)中,将 CBA 访问权限级别绑定到用户群组可能过于宽泛。您可以使用此选项将 CBA 访问权限级别应用于支持客户端证书的应用。
以下示例将 CBA 访问权限级别绑定到 Google Cloud 控制台、gcloud CLI 和用户的 OAuth 应用。
登录 gcloud CLI。
gcloud auth application-default login
创建
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
。
创建 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
方法来获取。(可选)更新现有的访问权限级别绑定。
gcloud access-context-manager cloud-bindings update \ --binding='BINDING_NAME' \ --binding-file=.../policy_file.json
将 BINDING_NAME 替换为创建绑定时自动生成的绑定名称。
为应用豁免绑定
若要应用 CBA 访问权限级别,同时又不屏蔽不支持客户端证书的客户端应用,另一种方法是将这些应用从政策中豁免。
以下步骤假定您之前已创建了 CBA 访问权限级别,该级别在确定对资源的访问权限时需要证书。
使用以下方法之一创建豁免访问权限级别。
- 自定义访问权限级别:在 CEL 表达式条件中,将
true
作为值提供。 - 基本访问权限级别:通过提供 IP 子网
0.0.0.0/0
和::/0
(分别对应于 IPv4 和 IPv6)来创建基于 IP 范围的访问权限级别。
- 自定义访问权限级别:在 CEL 表达式条件中,将
创建
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
。
创建豁免绑定政策。
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
方法来获取。