容器化导致许多企业和组织以不同方式开发和部署应用程序。Gartner最近的一份报告表明,到 2022 年,超过 75% 的全球组织将在生产中运行容器化应用程序,高于 2020 年的不到 30%。然而,尽管容器具有许多好处,但它们无疑仍然是网络攻击的来源曝光,如果没有适当的保护。
以前,网络安全意味着保护一个“边界”。通过引入新的复杂层,容器使这个概念过时了。容器化环境具有更多的抽象级别,这就需要使用特定的工具来解释、监控和保护这些新应用程序。
什么是容器安全?
容器安全性使用一组工具和策略来保护容器免受影响应用程序、基础设施、系统库、运行时等的潜在威胁。容器安全涉及为容器堆栈实施安全环境,其中包括以下内容:
- 容器镜像
- 容器引擎
- 容器运行时
- 注册表
- 主持人
- 协调器
大多数软件专业人士自动假设 Docker 和 Linux 内核是安全的,不受恶意软件的侵害,这是一个很容易被高估的假设。
5 大容器安全最佳实践
1.主机和操作系统安全
容器提供与主机的隔离,尽管它们共享内核资源。经常被忽视的是,这一方面使攻击者更难但并非不可能通过内核利用来破坏操作系统,从而获得对主机的 root 访问权限。
运行容器的主机需要通过确保底层主机操作系统是最新的来拥有自己的一组安全访问权限。例如,它正在运行最新版本的容器引擎。理想情况下,您将需要设置一些监控以提醒主机层上的任何漏洞。此外,选择一个“瘦操作系统”,这将加速您的应用程序部署并通过删除不必要的包并使您的操作系统尽可能小来减少攻击面。
本质上,在生产环境中,无需让人工管理员通过 SSH 连接到主机来应用任何配置更改。相反,最好通过 IaC 使用Ansible或Chef 来管理所有主机, 例如。这样,只有协调器才能持续访问运行和停止容器。
2. 容器漏洞扫描
应定期对您的容器或主机进行漏洞扫描,以检测和修复黑客可能用来访问您的基础设施的潜在威胁。一些容器注册表提供这种功能;当您的图像被推送到注册表时,它会自动扫描它以查找潜在的漏洞。
一种主动的方法是通过采用“左移”理念在 CI 管道中设置漏洞扫描,这意味着您在开发周期的早期实施安全性。同样,Trivy 将是实现这一目标的绝佳选择。
假设您正尝试对本地节点设置这种扫描。在这种情况下,Wazuh 是一个可靠的选择,它将记录每个事件并根据多个 CVE(常见漏洞和暴露)数据库验证它们。
3.容器注册安全
容器注册表提供了一种方便且集中的方式来存储和分发图像。通常会发现组织在其注册表中存储了数千个图像。由于注册表对于容器化环境的工作方式非常重要,因此必须妥善保护它。因此,您应该考虑花时间监控和防止未经授权访问您的容器注册表。
4. Kubernetes 集群安全
您可以采取的另一项措施是围绕您的容器编排加强安全性,例如防止来自过度特权帐户或网络攻击的风险。遵循最低特权访问模型,保护 pod 到 pod 通信将限制攻击造成的损害。在这种情况下,我们推荐的工具是Kube Hunter,它充当渗透测试工具。因此,它允许您在 Kubernetes 集群上运行各种测试,以便您可以开始采取措施来提高它的安全性。
你可能也对Kubescape感兴趣,它类似于 Kube Hunter;它会扫描您的 Kubernetes 集群、YAML 文件和 HELM 图表,为您提供风险评分:
5. 机密安全
容器或 Dockerfile 不应包含任何秘密。(证书、密码、令牌、API 密钥等)而且,我们仍然经常看到秘密被硬编码到源代码、图像或构建过程中。选择机密管理解决方案将使您能够将机密存储在安全、集中的保险库中。
结论
这些是您可以采取的一些主动安全措施来保护您的容器化环境。这一点至关重要,因为 Docker 出现的时间很短,这意味着其内置的管理和安全功能仍处于起步阶段。值得庆幸的是,好消息是可以使用多种工具轻松地在容器化环境中实现良好的安全性,例如我们在本文中列出的工具。