Kubernetes安全是许多组织面临的问题。在TechRepublic报道的2020年报告中,有94%的受访者表示,他们的组织在过去12个月中度过了涉及Kubernetes和容器环境的安全事件。将近一半(44%)的组织通过延迟将应用程序部署到生产中来响应这些事件。
这些发现表明,对于那些希望将容器和Kubernetes应用程序部署到生产中的组织来说,安全性是并且仍然需要继续优先考虑。为了使部署尽可能顺利地进行,组织必须了解整个应用程序开发生命周期的安全性和合规性要求。这意味着将安全性集成到容器生命周期的三个阶段:构建,部署和运行时。
阶段1:构建
应用程序开发生命周期的构建阶段中存在的漏洞在运行时可能变得更加困难且修复成本更高。这就是为什么组织在构建阶段专注于容器安全很重要的原因。他们可以通过遵循一些安全最佳实践来做到这一点:
- 构建安全映像:这里要记住的重要事情是使容器尽可能简单。组织应避免使用具有OS软件包管理器或Shell的容器映像。这些类型的资源可能包含漏洞,从而使攻击者有可能进入载体。他们还应努力从容器中删除调试工具和其他不必要的组件;这些程序中的缺陷也可能为恶意行为者敞开大门。
- 最小化攻击面:组织需要仔细查看其容器的必要元素。为此,他们应确保运行的是容器的最新版本。这样做将有助于最大程度地减少漏洞的出现。此外,他们应利用图像扫描仪扫描其容器中是否存在潜在的安全漏洞。此工具应能够扫描OS软件包和第三方运行时库中的错误,以查找容器化应用所使用的语言类型。如果该工具检测到错误,则组织应使用其漏洞管理工具来确定适当的修补程序的优先级。他们还可以选择使用白名单规则,以确保如果他们认为某个漏洞不能保证(立即)修复,则该错误不会破坏其安全团队。
阶段2:部署
组织需要在部署Kubernetes基础架构之前对其进行安全保护。这项工作应首先确保组织对其网络具有足够的可见性。帮助网络安全性阐明了可见性对于确保容器安全性的重要性:
通过深入的可见性和保护来保护网络至关重要,因为网络是防止恶意行为者到达工作负载的第一道防线。同时,网络是保护数据的最后一道防线。在第一道和最后一道防线之间,网络可见性和适当的网络控制可以防止内部东西向流量内的攻击不断升级。
在可见性方面,组织需要专门了解每种资源的部署,位置和方式以及可以访问的资源。然后,他们可以利用网络策略来调整在Pod和群集之间流动的流量。正如Kubernetes在其网站上指出的那样,默认情况下,pod是非隔离的,因此可以接受来自任何来源的流量。幸运的是,组织可以通过创建网络策略来限制这些通信流。
组织也不应忘记在部署阶段扫描映像。一旦获得了这些扫描的结果,就必须对其采取行动。例如,如果容器映像缺少扫描结果或存在已知漏洞,则他们可以与准入控制器一起使用这些扫描的发现来拒绝应用程序的部署。
阶段3:执行阶段
最后但并非最不重要的一点是,组织需要在运行时阶段对容器安全性进行投资。在此阶段,可见性和图像扫描仍然很重要。但是组织需要记住一些重要的差异。StackRox识别过程映像扫描在构建和运行阶段之间的区别:
在生产系统上运行时,可以利用用于生成和编译应用程序的构建工具。请记住,容器应被视为临时的临时实体。切勿计划“打补丁”或更改运行中的容器。构建一个新映像并替换过时的容器部署。使用多阶段Dockerfile使软件编译不受运行时映像的影响。
同样,组织可以确保其运行时容器安全的唯一方法是确保网络上的异常行为不会隐藏。Help Net Security解释说,组织因此需要在第7层检查网络数据包的能力。这样做,组织还可以利用深度数据包检查(DPI)和其他类型的技术来帮助检测更多信息。复杂的攻击。
声明: 此文观点不代表本站立场;转载须要保留原文链接;版权疑问请联系我们。