云原生集成开发环境——TitanIDE
通过网页在任何地方更安全、更高效地编码2022-10-11
589
原文出自:CNCF(云原生基金会)Blog
原文作者:Giri Radhakrishnan
在机器学习 (ML) 和人工智能 (AI) 技术的帮助下,数据分析领域微服务架构的采用率大幅上升。容器在机器学习 (ML) 开发人员中流行的一些原因,是得益于容器易于移植、可扩展性强以及可以使用服务(特别是网络服务)快速访问数据。随着云原生应用程序的兴起,尤其是在大数据分析领域,使得这些应用程序成为了网络犯罪的主要目标。
防止威胁参与者破坏网络并访问关键数据或应用程序,这对于个人开发者或者一个团队来说都是一项艰巨的任务。DevOps 和安全工程师、SRE 和平台架构师都需要共同努力来促进这一过程。这些团队通常面临两方面的挑战:
1. 由于微服务的基本架构模型是分布式的,因此必须存在东西向流量。在大多数使用多云或混合模型的常见部署中,没有真正的网络边界。
2. 一个或多个微服务将访问第三方云服务、API 和应用程序等外部服务,从而为南北流量产生多个入口/出口点。
接下来,本文将会介绍IT架构不得不了解的有关云原生工作负载零信任的知识,以及云原生零信任与传统的零信任网络有何不同。
什么是零信任?
使用各种方法来保护传统工作负载,包括为每个区域使用具有不同防火墙规则的安全区域、通过访问列表过滤流量以及使用虚拟专用网络 (VPN) 进行远程访问……所有这些方法都在一个共同的假设下运行,那就是——内部网络是可信的;而外网不是。对于外网而言,这种安全思考方式显然是存在问题的,并且会导致许多外部和内部威胁,例如数据泄露,以及横向威胁,例如恶意软件和勒索软件等。
最终,我们将会意识到需要一种不同的方法,这便产生了零信任网络的概念——没有任何东西是可信的,而且一切都必须得到验证(持续验证,从未信任)。大约十年前,行业分析师和安防公司共同认为,零信任是抵御不良行为攻击的最佳方法。支持的形式是美国联邦政府提交行政命令,要求各机构在 2024 财年末之前满足某些符合零信任成熟度模型的网络安全标准。
公开资料解释:零信任是一种安全模型,它对尝试访问网络及其资产的任何用户、服务或设备进行严格验证。
基于 CISA(网络安全和基础设施安全机构)成熟度模型的零信任的核心支柱是:
· 身份 - 持续验证(密码、多因素身份验证)
· 设备 - 合规执法
· 网络/环境—— 宏观或 微观分段
· 应用程序工作负载—— 基于访问的控制
· 数据 – 最小权限,加密
云原生工作负载的零信任
在云原生环境中,保护和监控单个 pod 或节点是一项挑战。当虚拟机 (VM) 取代旧式服务器时,配置防火墙仍然相当容易,因为这些虚拟机本质上大多是静态的。但是微服务的细粒度组件(例如 pod)是动态的并且是短暂的——有时只有几分钟的生命周期——并且对于单体应用程序具有的相同类型的工作具有更大的占用空间(增加的攻击面)。假设您已经通过在每个节点或 pod 周围放置防火墙来解决保护这些小型工作负载的问题。威胁可能仍潜伏在您的网络中,源自内部。
云工作负载的零信任强制对任何进出工作负载的访问都将进行严格验证。
当您考虑为云原生工作负载设计安全策略有多么困难时,唯一合乎逻辑的解决方案就是遵循云原生应用程序的构建方式。使用 IP 地址创建区域和策略的外围防火墙构建零信任网络永远不会奏效,因为当 pod 重新启动时地址会不断变化。Kubernetes 和其他基于容器的解决方案本质上是声明性的(即任何配置更改都由代码处理),并且策略基于标签或 DNS,而不是 IP 地址。使用相同的原则,安全专业人员可以使用云原生程序针对他们的安全用例实施策略。
应该从哪里开始设计构建零信任模型?
要了解从哪里开始以及如何为基于 Kubernetes 或容器的设计构建零信任模型,企业需要确定网络的保护面(对企业最有价值的东西)并了解其攻击面。零信任背后的理念是保护关键业务资产,包括客户数据。
为了了解企业的攻击面,企业需要查看企业的应用程序以及相关的通信和访问。对于云原生应用程序,每个微服务不仅需要与集群内的其他微服务通信,而且在某些情况下还需要与外部服务(例如,SaaS 服务、API 或驻留在私有数据中心的应用程序)进行通信。
当谈到 Kubernetes 集群内的网络连接时,默认情况下所有 pod 都可以相互通信。一个好的安全原则是识别每个工作负载的功能,这就是 DevOps 最佳实践派上用场的地方。现在我们已经根据身份(微服务的功能,例如 storefront-compliance)确定了要提供授权和访问的组件,下一步是创建最小权限访问的策略。这将确保只有某些工作负载可以与某些其他工作负载通信,并根据端口、服务帐户等验证一组相关条件。(持续验证,从未信任)
我们通过这个过程所取得的成果便是,能够在发生安全漏洞时有效地减少攻击面。我们对从工作负载发送到工作负载的流量的控制越多,当需要隔离受感染的工作负载时,我们对恶意软件的横向移动的控制就越多。