译者|徐磊审稿人|孙淑娟近十年来,企业网络入侵已经司空见惯,大家对边境安全的关注度也在逐渐淡化。然而,越来越多的公司发现,仅仅通过“在Intranet上”来信任他们访问的用户和设备显然不足以应对不断变化的威胁。同时,业务应用重新平台化为SaaS模式,加上移动化和分布式网络逐渐成为行业趋势,使得通过VPN访问公司内网显得老套和繁琐。此次疫情的爆发,围绕上述趋势掀起了一场风暴,加速了安防的更替。对于任何想要生存的公司来说,采用零信任架构不再是可以谈判的。零信任意味着纵深防御安全(现实世界和数字世界)最重要的原则之一是纵深防御。与确保安全的单一控制措施(如门上的锁)相比,单一措施的效果远不如一系列安全措施的组合可以提供更多的安全性。“门和锁”的分类这些安全措施很多都可以采用零信任安全架构,它们都属于粗粒度和细粒度访问控制的范畴。在过去的十年里,安全行业的大部分注意力都集中在粗粒度的访问控制上,但在最近两年,一波创新浪潮已经转向细粒度的访问控制。如上图所示,纵深防御需要在每一层至少有一个(或更多)解决方案。让我们在下面深入研究其中的一些。粗粒度访问控制虽然这种访问控制可以知道正在访问受保护资源的用户和设备,但是它没有这些用户、相关操作和操作资源的上下文。主要包括访问代理、单点登录/身份服务提供者和API网关/路由。1、访问代理正如谷歌在宣传其BeyondCorp时所说,访问代理是用户访问企业应用和资源的第一道防线。使用用户、设备、网络、位置甚至日期/时间属性的准入控制策略有助于确保只有策略允许的请求才会路由到应用程序。Zscaler和Cisco等大型供应商将其用作传统VPN的替代方案。2.企业SSO/身份提供者身份提供者(IDP)通常用于在用户想要登录到他们有权访问的应用程序时对用户进行身份验证。虽然严格来说不是授权层,但IDP可以根据一系列属性粗粒度地决定用户是否有权访问某些应用程序。Okta等IDP可以为Salesforce提供销售部门用户,并强制只有销售人员才能访问此类应用程序。IDP对于下游访问控制也很重要,因为它会生成一个签名的访问令牌(例如JWT),IDP的下游层可以使用该令牌来代表请求确认用户的身份。3.API路由/网关服务网格提供了在将请求路由到应用程序之前使用API网关授权API访问的机会。CloudNativeComputingFoundation的OpenPolicyAgent(OPA)项目作为可用于访问授权的通用策略引擎而受到欢迎。像Styra这样的提供商可以很容易地配置像Kong和Envory这样的API网关来评估允许或拒绝基于HTTP方法、路径甚至访问令牌(JWT)中的属性的请求的OPA策略。话虽如此,这一层防御是粗粒度的,因为API网关没有足够的用户相关上下文(超出JWT范围)并且无法提供对特定资源的访问控制。细粒度访问控制这种类型的安全要么内置于应用程序本身,要么了解应用程序正在访问的资源,并且由于它们具有尝试执行操作的用户的完整上下文、操作本身以及执行操作的资源,它们被认为是“细粒度的”,包括应用程序/API授权、数据过滤和数据代理。随着粗粒度解决方案的成熟,当前的许多创新都在向细粒度授权方向发展,并且这些解决方案中的大多数都在某种程度上集成到应用程序中,而不仅仅是在网络级别拦截请求。1.应用/API授权服务几乎每个业务应用都有角色和权限控制,可用的操作集根据登录用户的权限级别区分。一个强大的RBAC/ABAC解决方案,允许应用程序将来自身份提供者(OPA)或目录的属性映射到应用程序角色和权限,以便尽可能自动分配角色和权限。现代应用程序有一个微服务负责授权每个应用程序/API请求,它编写授权策略以根据用户和资源属性允许或拒绝请求。OPA开始被推广为这一层的良好解决方案,许多供应商(包括Aserto)将OPA作为端到端应用程序授权解决方案的一部分。SaaS开发者也开始逐步将自研的授权微服务替换为基于OPA等开源项目的现成解决方案。2.数据过滤一些应用程序依赖于数据访问层来过滤掉用户正在访问的数据中“正确”的数据,通常在具有行级安全性的数据库中,或者由开发人员手动或通过构建ORM库在应用程序中完成。解决这个问题的一种新方法涉及为库提供描述主题(用户或用户组)、谓词(要执行的操作)和对象(资源)以及可以对资源执行哪些操作的规则,然后这些库将协助构建对数据源的查询控制只返回“正确”的数据。本质上,它提供了一个“授权感知ORM”。3.数据代理数据代理不仅可以限制依赖数据源的应用程序访问数据源,还可以限制通过网络层访问数据源。与API网关类似,数据代理可以拦截对已知数据源的请求,并根据用户和他们正在查询的字段做出细粒度的访问决策。Cyral采用OPA作为执行数据库访问控制规则的底层引擎。结论有了零信任架构,安全不再是一场孤注一掷的赌博。与过时的基于边界的安全方法相比,纵深防御在降低未经授权访问和数据泄露的风险方面要有效得多。每个公司都应该采用这种粗粒度和细粒度访问控制的组合。结合访问代理、身份提供者和API网关,为基于用户和设备身份的应用程序、资源和数据访问提供粗粒度的访问控制。基于RBAC/ABAC服务创建应用并授权应用的每个请求,可以保证应用层细粒度的访问控制,因为应用层拥有最多允许谁对哪些资源执行哪些操作的上下文。一旦授权服务允许操作,使用数据过滤只返回用户有权访问的数据,从而减少“手动”代码查询的需要。最后,数据代理可以根据用户和应用访问的字段的细粒度属性,独立授权数据源的查询。所有这些方法的组合可以更好地提高安全性。译者介绍徐磊,社区编辑,某知名电商技术副总监,专注于Java后端开发、技术管理、架构优化、分布式开发等领域。原标题:现代应用安全需要纵深防御,作者:OmriGazitt
