使用 Jenkins 构建在 Docker 容器内运行的 Docker 镜像

Kon*_*ngh 5 security jenkins docker

我正在阅读这篇关于设置 Jenkins 在 Docker 容器内运行的文章,以便 Jenkins 能够自行构建 Docker 镜像。尽管该解决方案有效,但正如作者指出的那样,存在一些安全问题。

主要的安全问题在于 Jenkins 需要运行 Docker 命令,这需要在 Jenkins 容器内挂载 Docker 套接字(另外 Jenkins 需要 sudo 才能运行 Docker 命令)。因此,任何有权访问 Jenkins Web 界面的人都可以运行任何具有主机系统完全访问权限的命令(通过运行 docker 容器)。

因此,我想知道是否有人有一些想法可以使此设置更加安全。对我来说,不在 Docker 容器内运行 Jenkins(而是直接在主机系统上)似乎并不更安全,因为 Jenkins 仍然需要能够执行 Docker 命令(使用 sudo)来构建新映像,从而使 Jenkins 用户仍然能够启动任何任意容器。使用防火墙是限制可以访问 Jenkins 的 IP 的选项,但我希望可能有其他一些解决方案来降低安全风险。

编辑 我忘了提到 Jenkins 还应该能够在同一台机器上启动(新创建的)容器。

Yuv*_*uva 0

Docker 远程 API 公开了各种端点来处理图像,例如创建、列出、检查等,请参阅https://docs.docker.com/engine/reference/api/docker_remote_api_v1.24/#/images

调用端点https://docs.docker.com/engine/reference/api/docker_remote_api_v1.24/#/create-an-image作为构建步骤可能有助于从 Dockerfile 构建映像。