yhfwww
- 关注
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
大多数情况下,Docker 容器是安全的,但是你不可能充分了解每个可能的新的或者旧的漏洞,它们就是容器安全的突破口。本文中,我们将从介绍 Docker 和 Docker 容器的含义开始,进一步讨论为什么必须保护 Docker 容器,以及探讨了确保 Docker 容器安全的几种方法。
近年来,许多组织在其生产和开发环境中采用 Docker,任何使用 Docker 的组织都是时候重视保护 Docker 容器的重要性了。 在本文中,我将重点介绍保护 Docker 容器时应遵循的最佳实践。不过,首先要是要复习下什么是Docker,什么是Docker容器,它有什么作用,以及Docker安全的基础知识。
什么是Docker?
Docker 是一种容器化软件,可以使用它来创建、部署和管理容器。这些容器能够在任何操作系统上运行,使其易于使用且更加可靠。Docker 也是一种开源软件。
什么是 Docker 容器?
Docker 容器是从Docker镜像 (Docker Image) 创建的应用程序,它将应用程序与其依赖项捆绑在一起。这是一种可靠的跨平台传输应用程序的方式,不会出现任何问题,因为它是独立于平台的。 Docker 运行在各种操作系统上,例如 Linux、Windows 和 Mac 操作系统。开发人员使用 Docker 来容器化他们的应用程序,因为它易于使用,而且每个从 Docker 镜像生成的容器都是独立于平台的。这样开发人员就不必担心依赖问题。 下图是Docker 工作原理的直观表示:
Docker 运行客户端-服务器应用程序,它是 Docker 客户端、主机和注册表的集合。
Docker客户端触发命令,宿主机运行Docker守护进程,Docker注册表用于存储Docker镜像。
Docker的优势
以下是使用 Docker 进行软件开发的一些优势:
- Docker 使开发容器化应用程序变得更加容易
- 与其他技术相比,它可以让更多的应用程序在相同的硬件上运行
- 比其他技术更容易管理和部署应用程序的能力
- 良好的拓展性
Docker 安全
容器是构成云原生的基础,因此保护它们免受可能的攻击是整个容器生命周期中的一项关键和重要活动,该过程应该保护从主机到网络的所有区域。以下,将介绍一些最佳实践,用于保护 Docker 容器安全。
保持的 Docker 和 Docker 主机更新
更新通常是因为需要改进或需要解决特定缺陷而进行的。这同样适用于这里Docker,因为 Docker 和 Docker 主机都应该始终是最新的。每个更新都带有保护 Docker 和主机所必需的安全升级。因此,建议使用更新的操作系统和容器化软件来避免安全问题。
以非 root 用户身份操作容器
默认情况下,Docker 容器以 root 用户身份运行,但以 root 用户身份运行 Docker 容器会产生各种安全风险。这里的危险是,如果您的应用程序以某种方式被外部用户入侵,则在容器内运行的其他应用程序也容易面临同样的被入侵风险。 那么,如何以非 root 用户身份运行容器呢?继续往下,首先,我们使用 -u 选项和useradd添加用户 。然后我们使用USER命令来切换用户,如下:
FROM ubuntu RUN useradd -u 1234 my-user USER my-user
上面的 Dockerfile 拉取 Ubuntu 基础镜像并创建一个用户 ID 1234和名称my-user。然后使用USER 命令更改为新用户。
使用私人和独立的注册表
私有注册表是一个为Docker引擎提供注册表API的应用程序,使得其可以处理镜像。这使你可以完全控制镜像的管理方式,并提供更高级的功能,有助于确保安全。可以将其托管在自己的本地基础设施或各种其他第三方注册表服务上,例如 Azure Container Registry、Google Container Registry 和 Amazon ECR。使用私有注册表带来的一些优势包括:
- 独特的图像扫描工具,用于识别妥协和未修补的漏洞
- 自定义身份验证和日志记录
- 能够平衡负载并进行更多配置更改
当你比较私人注册表和公共注册表时,你会发现公共注册表只提供基本的服务,使你处于含有恶意代码的镜像的风险中,并且从长远来看,留下的容器环境广泛存在数据泄露的风险。
配置资源配额
资源配额由 Docker 在每个容器的基础上配置,允许您限制容器可以消耗的资源数量。
以下是配置资源限制的优点:
- 在容器上配置资源配额可以提高 Docker 环境的效率。也防止了环境中整体容器的资源不平等。
- 防止应用程序在主机上消耗超过其预期和公平份额的资源。
- 为容器编排器提供在集群中的主机上调度容器所需的关键信息。
- 根据资源使用情况向自动缩放控制器提供添加和删除容器化服务实例所需的关键信息。
Docker 镜像是用于在本地或云环境中启动 Docker 容器的文件。在验证镜像的完整性时,需要进行以下测试,包括:
- 使用受信任的镜像
- 定期扫描镜像
- 支持最小的基础镜像
使用可信的镜像
确保 Docker 基础镜像来自可信且可靠的来源。还应该确保源是最新的并且配置正确。
定期扫描镜像
定期扫描镜像不仅有助于防止它们出现漏洞,而且在维护 Docker 镜像的稳健安全配置文件方面也发挥着重要作用。扫描镜像可以通过审查关键文件并保持它们的最新安全补丁更新来完成。
全文完
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
