这是 OWASP Docker Top 10。它是一份正在进行中的工作。
本文档描述了构建安全容器化环境时最重要的 10 个安全要点。如果你从零开始,可以把它当作一份规格说明书;也可以把它交给为你做这项工作的外包承包商。
它也可以用于审计或加固现有安装环境,但尤其在这种情况下,你应该尽早开始考虑安全问题。最好是在设计阶段。到后期,要么很难更改你已做的某些决策,要么这些更改会在金钱或时间上付出高昂代价。
尽管这份文档的名称与 OWASP Top 10 相似,但它其实很不一样。首先,它并非像 OWASP Top 10 那样基于收集到的数据来讨论风险。其次,这里的 10 个要点更类似于(主动性的)控制措施。
本指南面向开发人员、审计人员、架构师、系统与网络工程师。如上所述,你也可以将本指南用于外部承包商,以便在合同中加入正式的技术要求。信息安全管理人員应该也会感兴趣,以达成基线安全要求并做得更好。
这 10 个要点(见本段下文)大多涉及系统与网络安全,以及系统与网络架构。作为开发人员,你不必成为这些领域的专家——这正是本指南存在的意义。但如上所述,最好尽早开始思考并处理这些问题。请不要只是直接开始构建。
其中一个要点不应被误解:补丁管理并不是一个技术要点。它是一个管理流程。最后但同样重要的是,对于之前对容器化不太担忧的技术或信息安全管理层来说,本文档也能让他们洞悉其中涉及的风险。
Docker 环境中的安全性似乎常常被误解。威胁究竟应该是什么,一直/仍然是一个争议很大的问题。因此,在进入 Docker Top 10 要点之前,需要先构建威胁模型,这在本文档中会先行阐述。这不仅能帮助理解各种安全影响,还能让你有能力对任务进行优先级排序。
请参阅 CONTRIBUTING.md。为了便于对开放性问题进行贡献,请将你的 PR 提交到相应的开发分支(D06_dev、D07_dev、……)。
只要你安装了 Docker 和 docker-compose,就可以自己构建一份 PDF 版本。
docker-compose run --rm build
该 PDF 不会在此仓库中频繁更新,否则会阻塞本仓库。
尽管这个项目的名称带有“Docker”一词,但它只需很少的抽象就可以用于其他容器解决方案。Docker 目前是最流行的一种,因此目前深入细节主要聚焦于 Docker。这一点将来可能会改变。
如果你在一台服务器上运行超过 3 个容器,你可能已经有了一套编排解决方案来管理它们。此类工具的_特定_安全陷阱目前不在本文档范围内。这并不意味着本指南只涉及手动管理的一个或几个容器——恰恰相反。它仅表示,我们是在这样一个编排环境中审视容器(包括其网络和宿主机系统),而不是关注例如 Kubernetes、Swarm、Rancher 或 OKD/OpenShift 的特殊陷阱。
老实说,对我们人类而言,数字 10 听起来朗朗上口;而在整合所有这些内容时,我们认为这 10 个是最重要的。