新闻动态
从云端到边缘确保容器安全


Scott McGregor

无论是在云端还是边缘,对于容器化环境来说,采取深度防护措施,从基础层面确保安全性是极其重要的。

容器化的意思是将应用软件与其所依赖的库或框架等组件全部打包在同一个实体之中——这样的实体就是一个容器。因为全部所需组件都已经被配置好了,所以可以到处部署并在任何基础设施上运行。此外,采用容器技术来运行应用软件,就能够独立于其所运行的操作系统。

容器技术,受益良多

所以,容器化的主要好处之一是可移植性。在今天的市场中,企业都希望通过容器技术来优化应用软件的开发和部署,从而控制好投资成本,而不是相互孤立地进行项目开发,然后再部署到各种类型的环境之中——由此可以避免“不兼容”问题引发的修改工作。无论是在操作系统层、CSP层或更高的层次上,容器化都可以帮助客户避免被厂商锁定。您可以让一个容器在云中运行,比如Amazon、Azure或谷歌云,并将相同的容器运行在任何CSP上,甚至在企业本地的一台内部机器上。这种一劳永逸的方法总是最有吸引力!还有一些我要强调的好处,例如快速部署、降低内部基础设施成本等。因为在相同的硬件上可以运行多个容器,并且可以做到应用系统隔离,就好像它是独占着整个系统。

容器技术相关风险

容器化伴随的一些风险也与其带来的好处直接相关。一个重要的风险是,当我们在同一主机或机器上运行多个容器时,在不同容器中运行的进程的通信和行为可能会互相察觉到彼此的存在。伴随这些通信和流量,可能还包括其他容器中的文件。在较小的非敏感环境中,这可能不是什么大问题。然而,在多个客户共享云服务提供商和主机的环境中,这些情况可能会带来一些疑虑。

另一个重要问题与容器本身的性质有关。容器由于具备可重用的映像而更易于使用。问题是,这些映像可能存在漏洞。黑客有时可以欺骗映像存储库,让用户觉得自己使用的是可信任映像,但实际这些映像已经存在漏洞。如果没有在设计早期就发现这些映像漏洞,这可能会将漏洞传播到容器运行的所有地方。由于图像是静态的,这些漏洞就会一直存在,除非得到修补或替换。如果易受攻击的映像没有被发现,就可能成为运行在各种系统上、各个容器中的其他映像的组成部分。

采取安全措施降低风险

安全措施最佳实践有多种来源。以下是我建议的两个来源:

  • 互联网安全中心(Center for Internet Security)的CIS Benchmarks(CIS基准指标)
  • 美国国家标准与技术研究院(National Institute of Standards and Technology,NIST)的 800-190 容器安全指南
这些文件中阐述了若干对策和控制措施。我将简要讨论两大类可用于应对前述风险的方法。

第一种方法与通信保密性有关。如前所述,我提到了一个容器能够察觉另一个容器的通信和流量。我们可以借助于Istio中的TLS或mTLS等技术。TLS使用加密和密钥管理功能以确保通信只能被预期的接收方阅读和理解。因此,即使在流量被泄露的情况下,这些流量对别的容器也将是无用的,因为它已经被加密。你还可以采用为特定实体划分流量的网络策略。

第二种方法主要用于实现内部容器安全控制。这些控件影响着底层容器的允许、特权和行为。它们针对恶意行为者获得容器访问权的情况提供保护,极大地限制了各种损害。有些比较流行的设置是runAsNonRoot(不能运行任何根级操作)、capabilities(可以具体控制容器本身使用哪些功能;采用一个仅限于关键能力的列表来帮助提高整体安全性)以及readOnlyRootFilesystem (防止恶意行为者的篡改行为)。

驱动容器技术应用的软件计划

云原生计算基金会(CNCF): CNCF是一个开源软件基金会,旨在促使云原生计算更加通用、标准化与普及。在此定义了一个模型,以便衡量项目的相对成熟度(“沙盒”、“孵化”或“结业”)。  
虽然有很多相关的开源计划,但我想特别介绍的是Kubernetes、Prometheus和Harbor。

  • Kubernetes: Kubernetes解决容器业务编排问题。
  • Prometheus: Prometheus System Monitoring Tool(Prometheus系统监控工具)监视环境中正在运行的容器,提供了一种更直接的方式来监视容器中正在进行的活动。
  • Harbor: The Harbor Image Repository(Harbor映像库)提供容器映像的安全管理功能。如前所述,这些对于确保容器应用软件的安全性非常重要。
请注意,专注于容器安全领域的开源项目很多。有各种工具可以用来评估容器和容器映像漏洞以及最佳实践的合规性。但我想强调的是这个重要项目:

Open Policy Agent Gatekeeper,它支持用户定义其环境中容器必须满足的各种安全条件,甚至允许您在系统周围设置一个围栏,任何容器如果不满足所定义的策略,就不允许它们在系统中运行。这类措施对于提高环境安全性大有帮助。

容器技术从边缘到云端的应用场景

在基础层面上,我们可以将云视为分散在不同位置的一组互连节点(可以是物理硬件设备或计算机)。应用软件、服务和程序运行在这些节点或设备上,并可通过互联网在任何地方调用。最初,这些节点都是位于数据中心的计算机,但我们现在已经看到大量的边缘节点。

部署在边缘的设备更小、更健壮、更接近用户,可以运行各类应用功能。例如,我们现在可以把汽车部件、电信系统和手持设备这类很小的装置看作边缘节点。以前只能在数据中心计算机上运行的容器,现在也可以在边缘节点上运行。

我们正在加速推进容器化,所以前面我提到的那些威胁普遍存在。还有一个重要问题——对于数据中心的节点我们配备了大量的安全性深度防御机制,然而当我们面对着边缘节点情况就大为不同。例如像手持设备这样小的设备,它们更容易被触及,也缺乏数据中心那样的防护机制。为了帮助消除潜在的安全威胁,我们利用各种硬件安全措施,如安全引导和反篡改技术。这就使恶意行为者即使能够触及系统也很难实施破坏。

对于任何想要进入智能系统领域并采用云原生技术(例如容器化)的企业,风河公司提供了安全性评估的大量方法和工具供您选择。根据您的目标,我们提供专属的向导和技术(包括开源代码),以便您用来提升应用安全性并实现转型。