【微前端】微前端的零信任(Zero-trust)机制应用
@TOC
推荐超级课程:
Zero-trust 是一种概念,不信任实体,无论其位置或连接类型如何。这一概念通过消除传统安全模型面临的漏洞来提高组织的安全姿态。
在传统安全模型中,系统基于身份验证为设备、用户和其他实体授予访问权限。一旦成功身份验证发生,实体获得无限制访问权限,无论设备的完整性如何,并将保持访问权限直到特定会话过期为止。
信任设备和其他实体的这种方法会在安全姿态中留下漏洞,攻击者可以利用这种现有信任来执行恶意任务。因此,本文将讨论如何将零信任应用于前端,以帮助您更好地理解。
零信任如何应用于前端
如今,Web 应用程序是组织进行在线业务操作的最常见方法,由于其多功能性和可扩展性。然而,随着需求的增加,网络犯罪分子也专注于试图攻击这些 Web 应用程序以获取利益。随着复杂性的增加,传统的安全控制仅能为 Web 应用程序提供有限的保护。
现代 Web 应用程序可能会在其前端加载多个脚本,以与用户交互执行特定任务。不幸的是,这为攻击者加载恶意脚本到前端打开了一个大窗口,以利用 Web 应用程序。
此外,大多数 Web 浏览器允许安装能够与前端交互而无需应用程序明确批准的插件。然后,它使恶意插件能够从容器中获取数据并执行恶意任务,如窃取数据甚至在用户未注意到的情况下执行操作。
传统的安全控件无法保护这些现代 Web 应用程序。在这种情况下,零信任使开发人员能够引入更现代的安全架构以防范大多数攻击。
零信任是一种战略方法,不仅在基于信任的条件下隐式拒绝用户和设备访问系统。它还可延伸至 Web 应用程序及其前端。
零信任的概念依赖于如果未经明确允许则隐式拒绝所有前端组件的访问。例如,Web 应用程序的前端加载脚本可能可以访问 Web 应用程序中的敏感字段,如密码、信用卡详细信息等。
这些脚本可以从 Web 应用程序的前端字段中读取信息并执行合法的业务操作。但是,如果恶意脚本获得访问权限,则可能泄露或窃取信息,因此危及 Web 应用程序和用户的敏感数据。因此,独特的安全控制有助于限制此访问。
将零信任扩展到微前端
多年来,Web 应用程序前端保持不变,没有重大变化。同时,后端则从一个应用程序和数据库进化为许多负责业务逻辑中特定功能的小型应用程序。
然而,随着微前端的引入,前端也得到了新的面貌。微前端将个别前端组件分离,使它们能够独立工作,而无需在同一个浏览器标签页中运行所有这些组件的额外工作负担。此外,这种革命性技术允许团队管理不同的微前端,从而使开发和部署过程独立化。
与传统前端类似,微前端也带来安全问题,使整个 Web 应用程序容易受到攻击。因此,实施零信任可以减少甚至消除微前端带来的一些安全风险。
1. 独立的构建过程
独立的构建过程允许个别团队同时工作于微前端组件,以加快开发速度。这些各自的团队可能会引入不同的组件以满足其功能需求。尽管微前端的特性允许这种灵活性,但会带来安全风险。在生产环境中操作时,不同库和框架会以不同的方式工作,具有各种前提条件和传递数据。
在同一 Web 应用程序中运行多个库会带来有关这些组件的有效性和可靠性的安全问题。因此,至关重要的是要考虑应用程序中使用的所有第三方组件,并确保它们不会无意中引入漏洞。
引入零信任的概念确保所有库和第三方组件在部署后都经过彻底的检查和严格的维护程序,以确保所有第三方组件都是安全的。
2. 微前端隔离
微前端组件与彼此同时运行,使它们可以访问不同前端组件中的数据。这可能是一种保持数据统一的简单方法。然而,让数据对多个微前端组件可访问会带来安全风险。此外,这些组件会将敏感数据暴露给其他不一定需要访问它们的微前端组件。这种行为可能导致敏感信息泄漏。
然而,微前端设计允许每个组件独立工作。开发人员可以对数据访问引入限制,仅授权的微前端组件可以访问所需的数据。实施零信任确保只有必要的微前端组件能够访问 Web 应用程序前端中所需的数据。
实施这些限制还可以确保没有外部脚本能够访问 Web 应用程序中的数据。CSP HTTP 标头 显式允许脚本在页面内运行,消除了攻击者在 Web 应用程序上插入恶意脚本的可能性。
3. 用于微前端组件的身份验证
微前端组件存在于同一浏览器标签页中,因此自动信任所有其他运行的组件。然而,尽管这可以通过共享通信平面提高生产能力,但也会带来重大的安全风险,因为这些组件之间的通信没有限制。
微前端只需与其他组件通信来执行 Web 应用程序中的特定功能。因此,它们不需要无限制地访问所有组件。
此外,这些个别组件之间的信任让它们接受其他组件提供的任何输入。然而,接受任何输入会使每个微前端组件容易受到基于注入和其他类型攻击的威胁,这可能危及整个 Web 应用程序。
因此,零信任确保只有所需组件之间才能互相访问,并对微前端组件之间的所有通信进行适当身份验证和验证。
结论
在本文中,我讨论了零信任的概念以及当实施基于微前端的 Web 应用程序时开发人员可能遇到的一些常见安全风险的解决方法。
微前端为现代开发提供了机会。因此,开发人员不应该忽视传统前端的主要安全原则。传统安全原则与现代零信任概念相结合,有助于保护微前端免受攻击。
成功实施零信任需要在架构阶段进行,然后有机会将安全性设计到每个微前端组件中,而不是在预构建架构周围努力。