【问题标题】:Docker Security: Whether just blocking port is sufficient?Docker 安全:仅仅阻塞端口是否足够?
【发布时间】:2020-06-25 14:45:49
【问题描述】:
我有一个小问题。我试图通过限制来自 docker 网络外部的访问来保护 docker 容器中的 MongoDB(顺便说一句,我正在使用 docker-compose)。我只是简单地从 docker-compose mongo 服务中删除了端口并且它工作正常,我无法从外部访问它。但这足够了吗?这是正确的决定吗?也许有人有其他解决方案。
【问题讨论】:
标签:
mongodb
docker
docker-compose
【解决方案1】:
从安全角度来看,您可以遵循以下一些最佳做法:
-
首选最小基础镜像:您选择的基础镜像也可能存在漏洞,您可以在选择基础镜像之前寻找安全漏洞。选择最小的基础镜像,因为它可以确保漏洞更少。
-
最低权限用户: 如果 Dockerfile 中没有指定用户,默认情况下容器使用 root 权限运行。要限制访问,请在 docker 映像中创建专用用户和用户组。
-
签署和验证镜像: 我们在生产环境中运行 docker 镜像,因此在使用之前对 docker 镜像进行身份验证非常重要。您应该签署您的 docker 镜像,并且在运行之前您还应该对其进行验证。
-
使用安全软件和 linter: 使用安全软件扫描您的 docker 镜像是否存在漏洞,您还可以使用 linter 静态分析您的 Dockerfile 并在存在安全漏洞时发出警告。
-
不要将敏感信息泄露给 Docker 映像: 机密信息必须保存在 Dockerfile 之外。如果您复制密钥,则它们会缓存在中间 docker 容器中,为避免此问题,您可以使用多阶段构建或 docker secret 命令。
致谢:感谢 Liran Tal 和 Omer Levi Hevroni 提供blog。我从他们的博客中学到了这些最佳做法,请访问此博客了解更多详细信息和一些最佳做法。