范围广泛的企业工作负载和云原生应用程序使用 Docker 容器运行。因此,Docker 容器安全已成为云工作负载安全最重要的方面之一,保护 Docker 容器对于想要保持强大安全态势的企业来说是必须的。在这里,我们将仔细研究这个流行的容器平台、常见的 Docker 容器安全问题、最佳实践以及专为提高现代企业的容器安全性而构建的工具。
什么是码头工人?
Docker 是一个容器平台,它使开发人员和系统管理员能够将应用程序及其所有依赖项打包到一个标准化的代码单元中。Docker 容器允许企业在各种环境中将应用程序作为独立进程运行,从超大规模云平台到本地共享机器。由于该平台的敏捷性、易用性和可扩展性,Docker 容器已成为现代云原生基础设施的主要组成部分。
Docker 的工作原理
Docker 的工作原理是为企业提供一个标准平台来运行代码。它将给定应用程序所需的所有必需的二进制文件、库和依赖项打包在一个不可变的容器映像中。
Docker 容器镜像可以通过称为 Dockerfiles 的文本文件创建。创建映像后,它们可以根据需要多次实例化,以在容器引擎(如 Docker Engine 或 Podman)之上运行工作负载作为 Docker 容器。因为它们轻量级、快速、易于实例化和高度可扩展,与在虚拟机或裸机服务器上运行的成熟操作系统相比,容器更适合许多 CI\CD 工作流和云原生微服务架构。
Docker 容器安全
Docker 的流行也使其成为攻击者的高价值目标。正如将带有 Monero 加密货币矿工的恶意容器镜像发布到 Docker Hub 等公共容器注册表等威胁以及Docker cp 漏洞 (CVE-2018-15664)等更细微的安全问题所证明的那样,企业必须考虑整个常见 Docker 生态系统中的威胁以确保他们的容器安全。让我们来看看运行 Docker 容器的企业面临的一些最严重的容器安全威胁,以及可以帮助 DevSecOps 团队缓解这些威胁的最佳实践。
Docker 安全问题
根据 Docker 的说法,企业应该考虑四个主要方面的 Docker 安全审查。他们是:
- 内核安全
- Docker 守护进程攻击面
- 配置挑战
- 内核强化功能及其对 Docker 容器的影响
除了这些 Docker 安全考虑之外,企业还必须考虑其容器映像的来源、给定容器使用的库和二进制文件、已知漏洞的修补程序,以及容器配置和通信的复杂性。
考虑到所有这些,企业在评估其安全状况时需要考虑的一些最重要的 Docker 安全问题是:
- 不安全的容器镜像:无论它们是配置错误还是完全恶意的,从存储库中提取和部署不安全的镜像都可以立即降低企业安全状况。一个典型的例子:对 Docker Hub 上 400 万个公开可用容器的扫描发现6,000 个是恶意的,超过一半存在严重漏洞。
- 攻击面:容器中开放的网络端口、文件、库和依赖项越多,攻击面就越大。容器中未使用或不必要的组件不仅会增加膨胀,还会增加攻击者的潜在入口点数量。
- 使用特权标志: privileged标志允许 Docker 容器以完全特权运行并绕过设备 cgroup 控制器中的限制。此标志的使用应仅限于一组非常狭窄的用例。
- 主机环境的安全性:容器引擎在其上运行的底层内核和主机操作系统中的漏洞可能会使企业工作负载面临风险。如果企业控制了Docker宿主机环境,宿主机环境的加固和打补丁是必须的。
- 容器编排安全:Kubernetes (K8s) 等编排平台使企业能够有效地管理和部署容器。因此,K8s 安全是 Docker 容器安全的一个重要方面。
- 容器可见性:可见性是安全的一个基本方面。然而,传统的监控和安全扫描工具并不总是能够提供对容器工作负载的精细可见性。
Docker 安全最佳实践
为了限制他们暴露于常见的 Docker 容器安全问题,企业可以遵循几种 Docker 安全最佳实践。除了有效的补丁管理和转移安全性等基础知识外,以下是一些最重要的内容:
- 遵循最小特权原则:安全策略和配置应确保容器和用户只能执行他们完成工作所需的最少功能集。从战术角度来看,这意味着企业应该采取以下步骤:实施细粒度的 IAM 策略、以无根模式运行容器、使用最少的基础容器镜像、锁定网络层并且不暴露 Docker 守护程序套接字、限制或限制使用–privileged标志,并尽可能使用只读文件系统。
- 只运行受信任的容器:限制从 Docker 容器注册表中提取的容器的使用仅限受信任和签名(例如使用签名标签和 Docker 内容信任)图像可以大大减少企业暴露于易受攻击的容器图像。
- 应用资源配额:资源配额限制 Docker 容器可以消耗的资源量(例如 CPU 和 RAM)。配置资源配额可以限制攻击者在容器遭到破坏时消耗主机资源或影响其他服务的能力。
- 尽可能隔离容器:因为容器在 Linux 环境中作为进程运行,所以有多种可用的解决方案可以让企业防止内核逃逸并提高容器之间的逻辑隔离。对于维护自己主机环境的企业,使用 AppArmor、cgroups、Linux 命名空间或 SELinux 等解决方案可以帮助保护 Docker 环境。
- 主动监控和扫描:跨CI\CD 管道的端到端扫描和主动监控使企业能够快速检测威胁、识别容器映像中的漏洞并快速修复问题。提供企业检测 Docker 容器安全问题所需的精细可见性的工具是此最佳实践的必要条件。