本页面介绍了如何使用基于用户群组的情境感知访问权限政策来强制执行基于证书的访问权限 (CBA)。
您可以将 CBA 访问权限级别绑定到用户组,以限制对所有 Cloud de Confiance by S3NS 服务的访问权限。此限制适用于调用 API 的所有客户端 应用。 Cloud de Confiance
您还可以选择将限制应用于特定客户端应用,或豁免特定应用。这些应用包括第三方
应用和 Google 构建的第一方应用,例如
Cloud Console的控制台和 Google Cloud SDK的
Google Cloud CLI。 Cloud de Confiance
准备工作
创建 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.gcpAccessAdminORG_ID是您组织的 ID。如果您不知道组织 ID,可使用以下命令进行查找:gcloud organizations listEMAIL是您要向其授予角色的人员或群组的电子邮件地址。
将 CBA 访问权限级别绑定到用户组
在此绑定选项中,CBA 访问权限级别适用于您指定的用户组的所有客户端应用。
在控制台中,前往“控制台和 API 访问权限政策”页面:
选择一个组织,然后点击选择 。
点击管理访问权限 以选择哪些用户组应拥有访问权限。
点击添加 ,然后配置以下内容:
- 成员组:指定要授予访问权限的群组。您只能选择尚未绑定到访问权限级别的群组。
- 选择访问权限级别:选择要应用于该群组的 CBA 访问权限级别。
- 点击保存 。
将 CBA 访问权限级别绑定到用户组和特定应用
在某些使用情形(例如支持客户端证书的应用)中, 将 CBA 访问权限级别绑定到用户组可能过于 宽泛。您可以使用此选项将 CBA 访问权限级别应用于支持客户端证书的应用。
以下示例将 CBA 访问权限级别绑定到 Cloud de Confiance 控制台、 gcloud CLI 和用户的 OAuth 应用。
登录 gcloud CLI。
gcloud auth application-default login创建
policy_file.yaml文件。您可以使用应用的 OAuth 客户端 ID 指定应用。如需指定 Google 应用,请使用应用名称,例如控制台的 Cloud de Confiance
Cloud Console。仅支持 Cloud de Confiance 控制台和 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.yaml替换以下内容:
GROUP_KEY:唯一的群组 IDORG_ID:组织 ID
gcloud
您可以使用唯一的群组 ID 作为 GROUP_KEY。如需获取唯一的群组 ID,请使用以下命令:
gcloud identity groups describe EMAIL将 EMAIL 替换为群组的电子邮件地址。唯一的群组 ID 是群组名称中
/之后返回的值。 例如,groups/01gf8i8311xalqg中的唯一群组 ID 为01gf8i8311xalqg。REST
您可以使用唯一的群组 ID 作为 GROUP_KEY。如需使用 REST API 获取
get唯一的群组 ID,您可以通过对群组资源调用该方法来检索该 ID。唯一的群组 ID 会在群组资源的id字段中返回。可选:更新现有访问权限级别绑定。
gcloud access-context-manager cloud-bindings update \ --binding='BINDING_NAME' \ --binding-file=policy_file.yaml将 BINDING_NAME 替换为创建绑定时自动生成的 绑定名称。
从绑定中豁免应用
另一种应用 CBA 访问权限级别的方法(不会屏蔽不支持客户端证书的客户端应用)是将这些应用从政策中豁免。
以下步骤假定您之前已 创建 CBA 访问权限级别 ,该级别要求在确定对资源的访问权限时提供证书。
使用以下方法之一创建豁免访问权限级别。
- 自定义访问权限级别:
在 CEL 表达式条件中提供
true作为值。 - 基本访问权限级别:
通过提供 IP 子网
0.0.0.0/0和::/0(分别对应于 IPv4 和 IPv6)来创建 基于 IP 范围的访问权限级别。
- 自定义访问权限级别:
在 CEL 表达式条件中提供
创建
exemption_file.yaml文件。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.yaml替换以下内容:
- GROUP_KEY:唯一的群组 ID
- ORG_ID:组织 ID