应用程序的容器化涉及将应用程序代码及其依赖项(所需的库、框架和配置文件)打包到虚拟容器中。这种方法促进了可移植性,并且可以在各种计算环境和基础设施中一致地工作,而不会降低效率。Docker是一个特别流行的容器平台。组织使用Docker开发具有以下特征的应用程序:高效优化高度可扩展的便携式敏捷Docker容器通过其轻量级运行时环境共享底层操作系统,以托管支持DevOps环境的应用程序。作为Cloud-Native框架的关键元素,Docker为您的软件开发生命周期(SDLC)带来了许多好处。然而,这些好处并非没有风险。您可能会面临复杂的情况,尤其是在保护Docker框架方面。默认情况下,Docker容器是安全的。但是,您必须了解可能存在的漏洞,以便采用防止潜在安全风险的方法。因此,在本文中,我们将探讨在三个关键领域保护基于Docker的架构的最佳实践:基础架构图像访问和身份验证让我们开始吧。1.保护Docker基础设施容器是可以托管应用程序的虚拟单元。为此,容器包含:代码二进制文件配置文件关联的依赖项由于容器是云原生设置的基础,因此在整个生命周期中保护它们免受潜在攻击媒介的侵害至关重要。保护此类框架的整体方法是不仅要保护Docker容器,还要保护它们的基础设施。让我们分解一下保护基础架构的最佳方法,看看它是如何工作的。定期更新您的Docker版本首先,确保您的Docker版本是最新的。过时的版本容易受到安全攻击。新版本通常包含补丁和错误修复,以解决旧版本中的漏洞。托管环境也是如此:确保支持应用程序是最新的并且没有已知的错误或安全漏洞。保持容器清洁规模化的容器环境扩大了攻击面,并且比精益设置更容易出现安全漏洞。为避免这种情况,请将您的容器配置为仅包含使它们按预期运行所需的组件:SoftwareBundleLibrary配置文件此外,您应该定期检查您的主机实例是否有未使用的容器和基础镜像,并丢弃那些未使用的容器和基础镜像.配置API和网络Docker引擎使用HTTPAPI通过网络进行通信。配置不当的API会带来黑客可以利用的安全漏洞。为避免这种情况,请通过安全地配置限制容器公开暴露的API来保护您的容器。一种方法是通过启用基于证书的身份验证来强制执行加密通信。(获取有关保护DockerAPI*的更多详细信息。)*LimitSystemResourceUsage对每个容器可以使用的基础设施资源的百分比设置限制。这些基础设施资源包括:CPUMemoryNetworkBa??ndwidthDocker使用控制组来限制不同进程之间的资源分配和分配。这种方法可以防止受损的容器消耗过多的资源,这些资源可能会在发生安全漏洞时中断服务的交付。保持主机隔离在不同主机上运行具有不同安全要求的容器。通过不同的命名空间保持容器的隔离可以保护关键数据免受全面攻击。这种方法也可以防止嘈杂的邻居在基于池的隔离上消耗过多的资源,影响其他容器的服务。限制容器功能默认情况下,Docker容器可以维护和获取运行其核心服务可能需要也可能不需要的额外特权。作为最佳实践,容器的权限应仅限于运行其应用程序所需的权限。为此,请使用以下命令从Docker容器中删除所有权限:copy$dockerrun--cap-dropALL然后,使用--cap-add标志向容器添加特定权限。这种方法限制Docker容器获得不必要的特权,这些特权可以在安全漏洞期间被利用。过滤系统调用应用系统调用过滤器,允许您选择容器可以对Linux内核进行哪些调用。这种方法实现了一个安全的计算模型,减少了可能的暴露点,从而避免了安全事件,尤其是内核漏洞的利用。2.保护Docker镜像现在,让我们转向基础架构之外的安全最佳实践。Docker镜像是用于创建容器和托管应用程序的可执行代码模板。Docker镜像由运行时库和根文件系统组成,使镜像成为Docker容器最重要的基础之一。以下是保护Docker镜像的一些最佳实践。使用可信镜像仅从最新且配置正确的可信来源获取Docker基础镜像。此外,通过启用DockerContentTrust功能过滤掉不安全和可疑的来源,确保您的Docker镜像已正确签名。定期扫描镜像维护可靠的Docker镜像安全配置文件并定期扫描它们以查找漏洞至关重要。除了在下载图像之前进行初始扫描之外,还要执行此操作以确保它们可以安全使用。使用常规图像扫描,您还可以通过以下方式最大限度地减少暴露:审计关键文件和目录使用最新的安全补丁更新它们支持最小的基础图像避免在较小的通用Docker图像之上使用较大的通用Docker图像,以最大限度地减少安全漏洞。这提供了两个有价值的结果:减少攻击面摆脱更容易受到黑客攻击的默认配置3.访问和身份验证管理Docker安全的最后一类涉及访问和身份验证。通过访问控制保护Docker守护进程通常被称为应用程序第一层安全。如果不保护Docker守护进程,一切都容易受到攻击:基本操作应用程序域业务功能实现最低特权用户默认情况下,Docker容器中的进程具有root权限,授予它们对容器和主机的管理访问权限。这会为容器和底层主机打开黑客可以利用的安全漏洞。为避免这些漏洞,请设置一个最低权限的用户,该用户仅授予运行容器所需的权限。或者,限制运行时配置以禁止使用特权用户。使用机密管理工具切勿将机密存储在Dockerfile中,这可能会被用户访问Dockerfile时放错位置、误用或危及整个框架的安全性。在第三方工具(如HashicorpVault)中安全地加密密钥是标准的最佳实践。您可以将此方法用于访问凭据以外的容器机密。限制对容器文件的直接访问临时容器需要一致的升级和错误修复。因此,每次用户访问此类容器文件时都会暴露它们。作为最佳实践,在容器外部维护容器日志。这大大减少了直接使用容器文件的一致性。它还使您的团队能够在不访问容器目录中的日志的情况下解决问题。启用加密通信将Docker守护进程的访问权限限制为仅少数关键用户。此外,通过对一般用户强制执行仅SSH访问来限制对容器文件的直接访问。使用TLS证书加密主机级通信。禁用未使用的端口并使默认端口仅供内部使用也很重要。结论确保Docker的安全可以保护您的IT环境,而IT环境的安全性是您绝不能忽视的关键任务。为了保护云原生框架,第一步始终是考虑框架关键元素的漏洞。因此,组织应该保持围绕容器及其底层基础设施的强大安全配置文件。虽然实现端到端安全的方法可能有所不同,但目标始终是考虑漏洞并采用最佳实践来降低风险。原文链接:https://www.bmc.com/blogs/docker-security-best-practices/
