针对 Cloud Console 和 Google Cloud API 的情境感知访问权限通过基于上下文的规则限制对 Cloud Console 和 Google Cloud API 的访问权限。它基于现有的 BeyondCorp Enterprise 套件(端点验证和 Access Context Manager)构建,并且有助于确保组织内满足定义的访问要求的个体和群组能够访问 Cloud Console 和 Google Cloud API(包括通过 Google Cloud CLI)。
此功能可按照以下步骤设置:
- [可选] 将端点验证部署到组织中的设备。
- 在 Access Context Manager 中创建访问权限级别。
- 创建要受 BeyondCorp Enterprise 限制约束的一组用户。
- 获取所需的 Identity and Access Management 权限。
- 创建访问权限绑定,为 Cloud Console 和 Google Cloud API 强制执行情境感知规则。
[可选] 部署端点验证
借助 Endpoint Verification,您可以构建访问组织数据的设备清单。作为 BeyondCorp Enterprise 解决方案的一部分,它还提供关键设备信任和基于安全性的访问权限控制,并帮助实施对 Google Cloud 资源的精细访问权限控制。
在 Mac、Windows 和 Linux 用户的桌面设备和笔记本电脑上,Endpoint Verification 作为 Chrome 扩展程序运行。管理员可以通过 Google Workspace 管理控制台将其部署到组织的公司自有设备上,组织的成员也可以自行安装。
创建访问权限级别
您需要通过在 Access Context Manager 中创建基本访问权限级别,确定用于确定对 Cloud Console 和 Google Cloud API 的访问权限时所使用的访问权限级别。
创建用户组
创建一组应受情境感知限制约束的用户。此群组中同时也是组织成员的任何用户都必须满足之前创建的访问权限级别,才能访问 Cloud Console 和 Google Cloud API。
授予所需的 IAM 权限
在组织级层授予创建 Access Context Manager 访问权限绑定所需的 IAM 权限。
控制台
转到 Cloud Console 中的 IAM 和管理页面。
点击添加并配置以下内容:
- 新成员:指定要授予权限的用户或群组。
- 选择角色:选择 Access Context Manager > Cloud Access Binding Admin。
点击保存。
gcloud
确保您已经过身份验证并拥有在组织级层添加 IAM 权限的足够权限。您至少需要具有 Organization Admin 角色。
确认拥有适当权限后,运行以下命令进行登录:
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
是您要授予角色的用户或群组的电子邮件地址。
创建访问权限绑定
您现在可以创建访问绑定,该映射是您之前创建的那组用户与您为访问 Cloud Console 和 Google Cloud API 而定义的 Access Context Manager 访问权限级别之间的映射。
控制台
转到 Cloud Console 中的 BeyondCorp Enterprise 页面。
选择一个组织,然后点击选择。
点击管理访问权限以选择哪些用户组应拥有访问权限。
点击添加并配置以下内容:
- 成员组:指定要授予访问权限的群组。 您只能选择尚未绑定到访问权限级别的群组。
- 选择访问权限级别:选择应应用于该群组的访问权限级别。
点击保存。
gcloud
如需详细了解此命令以及其他 gcloud access-context-manager cloud-bindings 命令,请参阅 Google Cloud CLI。
gcloud access-context-manager cloud-bindings create \
--group-key GROUP_ID \
--level ACCESS_LEVEL \
--organization ORG_ID
API
编写请求正文:
{ "groupKey": "GROUP_ID", "accessLevels": [ "ACCESS_LEVEL" ] }
通过调用
gcpUserAccessBindings
端点创建访问权限绑定,将ORG_ID
替换为您在创建GcpAccessAdmin
角色时使用的组织的 ID:POST https://accesscontextmanager.googleapis.com/v1/organizations/ORG_ID/gcpUserAccessBindings
响应会返回
GcpUserAccessBinding
资源,其格式为:{ // Unique name for the access binding, in the form // "organizations/ORG_ID/gcpUserAccessBindings/BINDING_ID" name: string, // Unique Group ID. group_key: string, // The access level that users of the group must satisfy, in the form // "accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME" access_levels: [ string ] }
验证成功
为一组用户设置访问权限绑定后,应根据绑定访问权限级别的满意度控制对 Cloud Console 和 Google Cloud API 的访问权限。
您可以验证绑定是否成功创建,对其进行修改,也可以将其删除。
控制台
访问权限绑定创建后,控制台中会显示组织的所有访问权限绑定,您可根据需要进行修改或删除。
gcloud
查看组织中的所有访问权限绑定:
gcloud access-context-manager cloud-bindings list \ --organization ORG_ID
如果尚未预设 access-context-manager/organization 属性,请将可选
--organization
标志中的ORG_ID
替换为您在创建GcpAccessAdmin
角色时使用的组织的 ID。如需修改访问权限绑定(例如更改访问权限级别),请执行以下操作:
gcloud access-context-manager cloud-bindings update \ --binding ACCESS_BINDING \ --level ACCESS_LEVEL
将
ACCESS_BINDING
替换为organizations/ORG_ID/gcpUserAccessBindings/ACCESS_BINDING_NAME
,其中ORG_ID
是您在创建GcpAccessAdmin
角色时使用的组织的 ID,ACCESS_BINDING_NAME
是在创建访问绑定时为name
标识符返回的唯一字符串。应按照为该资源创建绑定时的格式设置
ACCESS_LEVEL
值的格式。如需删除特定访问权限绑定,请执行以下操作:
gcloud access-context-manager cloud-bindings delete \ --binding ACCESS_BINDING
按照修改访问权限绑定的相同方式设置
ACCESS_BINDING
值的格式。
API
查看组织中的所有访问权限绑定:
GET https://accesscontextmanager.googleapis.com/v1/organizations/ORG_ID/gcpUserAccessBindings
这会返回
GcpUserAccessBinding
资源的列表。如需修改访问权限绑定(例如更改访问权限级别),请编写定义更改的请求正文,然后使用资源名称调用端点:
{ "accessLevels": [ "ACCESS_LEVEL" ] }
按照为该资源创建绑定时的格式设置
ACCESS_LEVEL
值的格式。PATCH https://accesscontextmanager.googleapis.com/v1/ACCESS_BINDING_NAME?update_mask=access_levels
将
ACCESS_BINDING_NAME
替换为创建访问权限绑定时为name
标识符返回的唯一字符串。如需删除特定的
GcpUserAccessBinding
资源,请使用资源名称调用端点:DELETE https://accesscontextmanager.googleapis.com/v1/ACCESS_BINDING_NAME
将
ACCESS_BINDING_NAME
替换为创建访问权限绑定时为name
标识符返回的唯一字符串。
常见问题解答
新创建的访问权限绑定需要多长时间才能生效?
最长可能需要 24 小时。
如果我删除具有访问权限绑定的组,会发生什么情况?
组和绑定会被删除,组中的所有用户都被允许访问。
如果我删除访问权限级别绑定中使用的访问权限级别,会发生什么情况?
始终无法满足访问权限级别,该绑定组所有用户的访问将被拒绝。
如果一个用户属于多个具有访问权限绑定的组,会发生什么情况?
该用户只需满足其中一个组的访问权限级别即可获得访问权限。
不属于我的组织的用户会怎么样?
不属于您组织的任何用户不受访问权限绑定的约束,即使您已将其添加到受情境感知限制约束的用户组也是如此。
后续步骤
- 如需详细了解 BeyondCorp Enterprise 的审核日志,请参阅审核日志记录。
- 如需详细了解 Access Context Manager 中的审核日志记录(包括会被记录的管理员操作的 API 操作的摘要),请参阅 Access Context Manager 审核日志记录信息。