【.com速译】Kubernetes安全是很多组织面临的问题。根据2020年TechRepublic报告,94%的受访者表示他们的组织在过去12个月中经历过涉及Kubernetes和容器环境的安全事件。将近一半(44%)的组织通过延迟将应用程序部署到生产环境来应对这些事件。这些发现表明,安全是寻求将容器和Kubernetes应用程序部署到生产环境中的组织的首要任务,并且需要继续如此。为了尽可能顺利地部署,组织需要了解整个应用程序开发生命周期的安全性和合规性要求。这意味着将安全性集成到容器生命周期的三个阶段:构建、部署和运行时。第1阶段:构建在应用程序开发生命周期的构建阶段存在的漏洞在运行时修复起来会变得更加困难和昂贵。这就是组织在构建阶段关注容器安全性的重要性。他们可以通过遵循几个安全最佳实践来做到这一点:构建安全镜像:这里要记住的重要一点是让容器尽可能简单。组织应避免使用具有操作系统包管理器或外壳的容器映像。此类资源可能包含漏洞,从而允许攻击者获得访问权限。他们还应该努力从容器中删除调试工具和其他不必要的组件,这些程序中的缺陷也可能为恶意攻击者打开大门。最小化攻击面:组织需要仔细研究容器的基本元素。为此,他们应该确保他们运行的是最新版本的容器。这样做将有助于最大限度地减少漏洞。此外,他们应该利用图像扫描工具来扫描容器中是否存在潜在的安全漏洞。该工具应该能够针对容器化应用程序使用的语言类型扫描操作系统包和第三方运行时库中的漏洞。如果该工具检测到漏洞,组织应利用漏洞管理工具确定适当修复的优先级。如果组织认为不需要(立即)修复漏洞,还可以选择使用白名单规则来确保漏洞不会影响安全团队。第二阶段:部署组织需要在部署之前保护其Kubernetes基础设施。这项工作应从确保组织对其网络有足够的可见性开始。HelpNetSecurity(https://www.helpnetsecurity.com/2019/06/17/runtime-container-security/)阐明了可见性对于保护容器的重要性:SecuringNetworkswithDeepVisibilityandProtectionto这是至关重要的,因为网络是防止恶意攻击者访问工作负载的第一道防线。同时,网络是保护数据不被泄露的最后一道防线。在第一道和最后一道防线之间,网络可见性和适当的网络控制可以防止内部东西向流量中的攻击升级。在可见性方面,除了准确了解可以访问哪些资源外,组织还需要准确了解每种资源的部署位置和部署方式。然后,他们可以利用网络策略来调整在pod和集群之间传输的流量。正如Kubernetes在官方网站上所说的那样,pod默认情况下是不隔离的,因此可以接受来自任何来源的流量。幸运的是,组织可以通过创建网络策略来限制这些流量。组织也不应忘记在部署阶段扫描图像。获得这些扫描的结果后,您需要对它们采取行动。例如,如果容器镜像缺少扫描结果或存在已知漏洞,组织可以使用这些扫描结果和准入控制器来拒绝应用程序的部署。第三阶段:运行时最后但并非最不重要的一点是,组织需要在运行时阶段处理容器安全问题。可见性和图像扫描在这个阶段仍然很重要。但是,组织需要牢记一些重要的区别。StackRox解释了图像扫描在构建和运行时阶段之间有何不同(https://www.stackrox.com/post/2020/04/container-image-security-beyond-vulnerability-scanning/):在生产系统上运行时,您可以利用用于构建和编译应用程序的构建工具。请记住,容器应被视为瞬态临时实体。永远不要计划“修补”或更改正在运行的容器。构建新映像并替换过时的容器部署。使用多阶段Dockerfile使软件编译远离运行时映像。同样,组织确保其运行时容器安全的唯一方法是确保网络上的异常行为无处可藏。HelpNetSecurity解释说,因此,组织需要能够在第7层检查网络数据包。这样做时,组织还将能够利用深度数据包检查(DPI)和其他类型的技术来帮助发现更微妙的攻击.原标题:Build,Deploy,Runtime:The3StagesofKubernetesSecurity,作者:DavidBisson
