阅读时间:4分钟
国家标准与技术研究院(NIST)特殊的容器安全出版物提供了一个全面审查重大风险的一个容器系统的核心组件。最明显的关注的对象之一(和许多其他的事情要保持良好的安全专业在晚上),当然,在你的平台上运行的容器。
集装箱安全显然是至关重要的应用程序和数据。这是一个复杂的主题,但是思考的方法之一是把它分成三个组成部分,和一个简单的咒语:
构建安全的容器,把他们从一个值得信赖的注册表和部署“最小特权”,然后在运行时保护他们。
虽然这可能是一个粗略的简化(适合一个1000字的博客),它为我们提供了一个框架来评估控制和保证我们已经开始在容器时图像。
构建安全的容器
集装箱图像是由层,可读/可写的层含有特定代码或配置(HTML资产,定义二进制文件,python脚本等)之上的一堆read-only-layers包含基础形象,软件工具和库。
监测漏洞
任何一个这些层——从基础图像库和包你添加,可以包含漏洞。有些可能是微不足道的,有些可能是至关重要的。当我们分析容器使用棱镜云,不难发现多个漏洞在一个容器的形象。
显然还有其他错误配置你需要意识到,像在容器中存储私钥或其他秘密图像,或运行SSH守护进程。
好消息是,容器能扫描的图像,因此层清单可以解析和组件对已知的漏洞评估。这个过程应该是所有容器的一部分构建CI / CD管道,所以容器存储在注册中心至少有一个已知的漏洞。
自旧软件通常发现,新漏洞扫描与常规评估需要一个持续的过程的集装箱图像对最新的已知的漏洞。
基础设施代码
同样重要的是评估一个集装箱将在运行时部署(稍后我们将涉及一个主题在本博客)。你不想让你的容器作为根用户运行,与主机共享网络,例如,或不安全的文件系统挂载。这些属性定义为基础设施代码(IaC)文件,像Kubernetes YAML文件或一个AWS云形成的模板。
因为IaC文件越来越多也由开发人员编写应用程序代码,给他们工具扫描IaC字段之前他们是非常合理的,但不要停止扫描它们作为CI / CD的构建工作流的一部分。
CI / CD管道的最终结果应该是一个容器,以及执行所需的功能,有一个安全检查和测试,这样可以在一定程度上,信任。
值得信赖的注册中心和安全部署
NIST SP 800 - 190个国家:
“组织应该保持一套可信的图像和注册中心和确保只有从这组图片允许运行在他们的环境,从而减少风险的不可信或恶意组件部署。”
Kubernetes将,然而,通常运行任何容器的形象,从任何容器访问注册表。所以仅仅建立一个具体组织的容器注册不会足够了。
值得信赖的容器和注册
你需要建立机制来防止不可信的容器在集群中运行,通过指定信任注册,甚至值得信赖的形象。这可以通过使用一个入学控制器和相关规则,或作为一个更全面的容器安全运行时防御解决方案的一部分棱镜云。
停止不可信的容器在运行时,而不是在构建过程中,是很重要的。攻击是妥协的共同组成部分运行容器,然后使用pod的服务帐户和API服务器访问集群中的其他恶意的豆荚。
这一概念的身份和访问通向下一个关键领域。
安全的部署
有许多方面安全容器部署,这可能是广义容器是如何与当地的运行时容器引擎,潜在的计算节点和网络,以及它如何与Kubernetes交互控制平面,通过API。
自配置容器与运行时如何配置主要通过API这里是一种循环论证,但安全,我们的目标是练习“纵深防御”。
在我们构建阶段,如果我们有正确检查容器形象和IaC文件,然后配置我们的集装箱从可信平台只运行图像注册表,然后很多威胁应该减轻,但不能替代实时防御。
额外的控制
因为不是每个人都能够执行这样的严格规则(尽管,真的应该),后好”zero-trust的实践,国防部负责容器运行时平台应该仍然是一个关键的一部分,你的盔甲。例如,棱镜云部署专业吊舱到集群节点的扫描和分析一个容器的组成和配置在一个节点上启动时,当政策违反了和警报。
现在我们使用的控制,确保容器安全在构建和部署阶段,是时候考虑在生产运行时发生了什么。
防止应用程序和网络攻击
任何服务连接到网络可能是攻击,无论是面向internet。保护运行计划Kubernetes吊舱从网络和应用层攻击通过部署集装箱层面监控发现异常如新连接、进程或文件系统访问。
部署的混合下一代防火墙和一个原生云安全平台保护和监控你Kubernetes节点和豆荚给你实时检测和阻止一系列恶意软件的功能和应用程序层的威胁。
最后一点是正确的安全的底层基础设施Kubernetes部署。
与你的容器的旅程从代码到保护和安全生产,你可以更有信心,你的应用程序和数据是安全的(好吧,也许更少的危险)。