本文档介绍了如何使用情境感知访问权限来保护不同类型的应用和资源。情境感知访问权限是一种安全方法,可根据用户的身份验证强度、设备状况、网络位置、地理位置或其他属性来控制用户的访问权限。这种方法不仅仅使用基本用户身份进行安全访问,还可以帮助您实现零信任安全模型,以增强整体安全状况。如需详细了解最佳实践,请参阅使用情境感知访问权限保护应用和资源的最佳实践。
如需帮助保护您的应用和 Google Cloud 资源,您可以根据各种上下文因素及其组合来定义精细访问权限控制。您可以使用 Access Context Manager 定义访问权限政策,其中包含访问权限级别和服务参数。
本文档面向负责身份和访问权限管理 (IAM) 以及 Google Cloud 资源和应用安全性的所有安全专家。本文档假定您已熟悉 Access Context Manager、Google Cloud和 IAM 管理。
访问权限级别
通过访问权限级别可以定义一组要求,用户及其设备必须满足这些要求才能达到一定的信任级别。
例如,您可以使用 Access Context Manager 为组织配置以下访问权限级别:
- 基本:您认为是最低级别的一组基本要求。
- 中等:一组更严格的要求,您希望员工和公司设备满足这些要求。此访问权限级别可能会排除外聘人员用户和非公司设备。
- 高:只有特定员工和设备满足的严格要求。
访问权限级别本身不会立即对用户或设备产生任何影响。访问权限级别指定了要求,但未定义应针对哪些用户、应用或资源强制执行这些要求。访问权限级别就像一个可重复使用的配置,您可以在配置对特定应用或资源的访问权限时进行引用。
Google Cloud 使您可以为多种不同类型的应用或资源使用访问权限级别,包括以下这些(本文档中对此进行了说明):
- Google Cloud之外的 Google Workspace 以及其他应用和服务
- Google Cloud 控制台和 Google Cloud API
- 虚拟私有云 (VPC) 服务边界
- 用于 SSH 和 RDP 访问的 Identity-Aware Proxy (IAP)
- 用于 Web 应用的 IAP
应用和资源
以下部分介绍了如何将访问权限级别应用于不同类型的应用和资源,以及不同类型间的流程差异。
Google Cloud之外的 Google Workspace 以及其他应用和服务
Google Cloud 之外支持情境感知访问权限的应用和服务包括:
- Google 管理控制台
- Google Workspace 应用,例如 Gmail、Google Meet 和 Google 日历
- 其他 Google 应用,例如 Gemini 或 Looker Studio
- 自定义 SAML 应用
如需限制对Google Cloud之外的 Google Workspace 以及其他应用和服务的访问权限,请在管理控制台中单独为每个服务或应用配置情境感知访问权限。在管理控制台中,执行以下操作:
定义要应用访问权限级别的范围。范围是以下各项的组合:
- 要保护的特定服务或 SAML 应用。
- 包含相关用户的组织部门 (OU) 或群组。
选择要应用于所选范围的访问权限级别。
分配访问权限级别时,您还可以更改该访问权限级别的设置。您可以指定该访问权限级别仅当用户直接访问 Web 应用时才适用。或者,您也可以指定该级别在移动应用和其他应用访问 API 时也适用。如需了解详情,请参阅“为应用分配情境感知访问权限级别”中的基于访问权限级别设置的应用行为。
可能存在多个应用于特定用户和应用的分配。例如,用户可能是 Employees 组织部门的成员并且是 all-apac 团队的成员。相应组织部门和群组可能被分配了不同的访问权限级别。在这种情况下,Cloud Identity 和 Google Workspace 只会应用其中一项分配,即优先级最高的分配:
- 基于群组的分配的优先级高于基于组织部门的分配。
- 在群组中,您可以自定义其相对优先级。
- 在组织部门中,根组织部门的相对优先级最低。
Cloud Identity 和 Google Workspace 可让您在情境感知访问权限日志中查看和分析情境感知访问权限事件。
Google Cloud 控制台和 Google Cloud API
您可以使用访问权限绑定来配置对 Google Cloud 控制台和Google Cloud API 的情境感知访问权限。
Google Cloud API 使用 OAuth 2.0 进行身份验证。如需使用 Google CloudAPI,用户需要 Google 颁发的有效 OAuth 访问令牌,并且该令牌必须是针对某个Google Cloud OAuth 范围颁发的。访问权限绑定会限制用户获取此类访问令牌的能力。因此,访问权限绑定会限制对 Google Cloud 控制台以及使用 Google Cloud OAuth 范围的所有 OAuth 应用的访问权限,例如:
- gcloud CLI
- Terraform 等第三方工具
- 您自行创建且使用 Google Cloud OAuth 范围的 OAuth 应用
访问权限绑定用于将群组与访问权限级别相关联。每个群组只能有一个访问权限绑定。每个访问权限绑定都可以定义以下配置:
- 一个
scopedAccessSettings
列表,用于为各个 OAuth 应用分配访问权限级别。 - 默认访问权限级别。
如果访问权限绑定同时指定了限定范围的访问权限设置和默认访问权限级别,则这两个访问权限级别会使用 OR
语义进行组合。因而用户只需满足其中一个访问权限级别,即可访问 OAuth 应用。
访问权限绑定会同时应用于群组的直接成员和间接成员。如果用户是多个群组的成员,则可能有多个访问权限绑定应用于用户,从而可能会产生多个访问权限级别。在这种情况下,访问权限级别也会使用 OR
语义进行组合,这意味着用户只需满足其中一个访问权限级别即可。
VPC 服务边界
创建 VPC 服务边界时,您需要指定受限服务的列表。受限服务可以从服务边界内部进行访问,但默认情况下无法从服务边界外部进行访问。
如需允许从服务边界外部进行访问,您可以使用入站流量规则。入站流量规则可让您指定允许进行外部访问时需要满足的条件。您可以使用访问权限级别,让入站流量规则强制执行情境感知访问权限。
一个 VPC 服务边界可以具有多个入站流量规则。因此,可能有多个入站流量规则应用于特定用户和应用,而这些入站流量规则可能需要不同的访问权限级别。在这种情况下,访问权限级别会使用 OR
语义进行评估,用户只需满足其中一个访问权限级别即可。
您可以将访问权限绑定与 VPC 服务边界入站流量规则相结合。如果访问权限绑定和入站流量规则为特定用户和应用指定了不同的访问权限级别,则这些级别会使用 AND
语义进行组合。在这种情况下,用户必须同时满足这两个访问权限级别。
如需查看和分析对 VPC 服务边界内资源进行的访问尝试,您可以使用 VPC Service Controls 审核日志或 VPC Service Controls 违规分析器。
针对虚拟机的 SSH 和 RDP 访问
您可以使用 IAP TCP 转发为针对虚拟机的 SSH 和 RDP 访问配置情境感知访问权限。
IAP TCP 转发支持访问权限绑定和 VPC 服务边界入站流量规则。您用于 Google Cloud 控制台和 Cloud API 的访问权限绑定会自动应用于 IAP TCP 转发。
如果您的服务边界将 iaptunnel.googleapis.com
服务作为受限服务包含在内,则您的入站流量规则会自动应用于 IAP TCP 转发。如需详细了解相关最佳实践,请参阅将 IAP TCP 转发作为受限服务包含在内。
您还可以使用 IAM 条件配置情境感知访问权限。您可以使用 IAM 条件作为访问权限绑定和 VPC 服务边界入站流量规则的替代方案,也可以将它们全部一起使用。
向用户或群组授予 IAP-secured Tunnel User 角色 (
roles/iap.tunnelResourceAccessor
)。然后,在角色绑定中添加 IAM 条件表达式,要求用户满足特定的访问权限级别。例如,表达式可能类似于以下内容:"accessPolicies/123/accessLevels/fully-trusted" in request.auth.access_levels
您可以选择自定义 IAM 条件,以要求满足多个访问权限级别或包含其他检查。
当特定用户和应用访问 IAP TCP 转发时,可能会受到访问权限绑定、入站流量规则和 IAM 条件的约束。在此情况下,访问权限级别使用 AND
语义进行组合,用户必须满足所有访问权限级别。
如需查看和分析对 IAP TCP 转发进行的访问尝试,您必须为 IAP 启用数据访问审核日志。
Web 应用
您可以使用 IAP 为 Web 应用配置情境感知访问权限。
用于 Web 应用的 IAP 与其 IAP TCP 转发对应项不同:
- 访问权限绑定不会应用于配置了 IAP 的 Web 应用,因为 IAP 使用的 OAuth 应用不使用任何 Google Cloud OAuth 范围。
- VPC 服务边界入站流量规则不会应用于配置了 IAP 的 Web 应用,因为 IAP 不是Google Cloud API,无法配置为受限服务。
如需使用 IAP 为 Web 应用配置情境感知访问权限,您必须使用 IAM 条件:
向用户或群组授予 IAP-secured Web App User 角色 (
roles/iap.httpsResourceAccessor
)。然后,在角色绑定中添加 IAM 条件表达式,要求用户满足特定的访问权限级别。例如,表达式可能类似于以下内容:"accessPolicies/123/accessLevels/fully-trusted" in request.auth.access_levels
您可以选择自定义 IAM 条件,以要求满足多个访问权限级别或包含其他检查。
如需查看和分析对配置了 IAP 的 Web 应用进行的访问尝试,您必须为 IAP 启用数据访问审核日志。
后续步骤
- 使用情境感知访问权限保护应用和资源的最佳实践。
- 如需查看更多参考架构、图表和最佳实践,请浏览 Cloud 架构中心。
贡献者
作者:Johannes Passing | 云解决方案架构师
其他贡献者:Ido Flatow | 云解决方案架构师