在本章中,我们将了解如何掌握 Docker 发布的关于安全发现的项目,以便了解您的环境。此外,我们将了解如何安全地报告您遇到的任何安全发现,以确保 Docker 有机会在问题公开和广泛传播之前缓解它。在本章中,我们将涵盖以下主题:
- Docker 安全监控
- 常见漏洞和暴露 ( CVE )
- 邮件表
- 安全报告
- 负责任的披露
- 安全报告
- 其他 Docker 资源
- Docker 公证人
- 硬件签名
- 阅读材料
在本部分,我们将了解一些监控与您可能使用的任何 Docker 产品相关的安全问题的方法。当您使用各种产品时,您需要能够意识到出现的安全问题(如果有的话),以便能够降低这些风险,从而保护您的环境和数据的安全。
要理解什么是 Docker CVE,你首先需要知道什么是 CVE。CVE 实际上是一个由 MITRE 公司维护的系统。这些被用作基于 CVE 号码提供信息的公开方式,该号码专用于每个漏洞以便于参考。这使得国家数据库中的所有漏洞都有一个来自 MITRE 公司的 CVE 号码。要了解更多关于简历的信息,你可以在维基百科上找到:
https://en . Wikipedia . org/wiki/Common _ 漏洞 _ 和 _ 暴露
维基百科的文章解释了一些事情,比如他们如何给出 CVE 数字,以及它们都遵循的格式。
现在你知道什么是简历了,你可能已经拼凑出什么是 Docker 简历了。它们是与 Docker 安全事件或问题直接相关的简历。要了解更多关于 Docker 简历或查看当前 Docker 简历列表,请访问https://www.docker.com/docker-cve-database。
每当为 Docker 产品创建 CVE 时,此列表都会更新。正如你所看到的,这个列表非常小,因此,这可能是一个不会每天增长,甚至不会每月增长的列表。
跟踪或讨论生态系统中任何 Docker 产品的安全相关问题的另一种方法是加入他们的邮件列表。目前,他们有两个邮件列表,你可以加入或跟随。
第一个是开发者列表,你可以加入或者跟随。这是一个列表,用于帮助向 Docker 产品提供代码或使用下面提供的 Docker 代码库开发产品的人员:
https://groups.google.com/forum/#!forum/docker-dev
第二个列表是用户列表。这个列表是为那些,你猜对了,可能有安全相关问题的各种 Docker 产品的用户准备的。您可以从已提交的讨论中进行搜索,加入现有对话,或提出新的问题,这些问题将由以下论坛的邮件列表中的人回答:
https://groups.google.com/forum/#!forum/docker-user
在询问一些与安全相关的问题之前,您需要阅读以下部分,以确保您没有暴露任何可能诱使攻击者的现有安全问题。
报告 Docker 安全问题与监控 Docker 的安全问题同样重要。虽然报告这些问题很重要,但是当您发现安全问题并希望报告它们时,您应该遵循某些标准。
当披露安全相关问题时,不仅对于 Docker,而且对于任何产品,都有一个术语叫做责任披露,每个人都应该遵守。负责任的披露是一种协议,它允许产品的开发者或维护者在向公众披露问题之前有足够的时间为安全问题提供解决方案。
要了解更多关于负责任的披露,您可以访问https://en.wikipedia.org/wiki/Responsible_disclosure。
记得设身处地为负责代码的团队着想。如果这是你的代码,你难道不希望有人给你一个漏洞的通知,这样你就有足够的时间在问题被披露之前解决它,从而引起广泛的恐慌,并让大量的电子邮件充斥收件箱。
目前报告安全问题的方法是给 Docker 安全团队发电子邮件,尽可能多地向他们提供有关安全问题的信息。虽然这些并不是 Docker 可能推荐的具体项目,但大多数其他安全专业人员在报告安全问题时都希望看到一些一般准则,例如:
- 发现安全问题的产品和版本
- 重现问题的方法
- 当时使用的操作系统,加上版本
- 您能提供的任何其他信息
请记住,你从一开始提供的信息越多,团队就必须从一开始就掌握问题的真相并更积极地解决问题,从而在最后做出更快的反应。
要报告任何与 Docker 相关的产品的安全问题,请确保将任何信息通过电子邮件发送至<[security@docker.com](mailto:security@docker.com)>
如果您正在寻找一些其他项目,我们已经在第 1 章中介绍了一些额外的项目,值得进行快速回顾。请务必回顾第 1 章、保护 Docker 主机以获得下一部分将提供的项目或链接的更多细节。
让我们快速浏览一下Docker 公证员,但要了解更多关于 Docker 公证员的信息,您可以查看第 2 章、保护 Docker 组件或以下网址中的信息:
https://github.com/docker/notary
Docker 公证人允许您通过使用建议您保持离线的私钥进行签名来发布您的内容。使用这些密钥对您的内容进行签名有助于确保其他人知道他们正在使用的内容实际上来自于它所说的人——您——并且内容是可信的,假设用户信任您。
Docker 公证员有几个关键目标,我认为这些目标很重要,需要在下面指出:
- 可生存的密钥泄露
- 新鲜度保证
- 可配置的信任阈值
- 签署授权
- 现有分配的使用
- 不受信任的镜像和传输
重要的是要知道 Docker 公证人也有一个服务器和客户端组件。要使用公证人,您必须熟悉命令行环境。前面的链接将为您分解它,并为您演示如何设置和使用每个组件。
类似于之前的 Docker 公证部分,让我们快速了解一下硬件签名,因为它是一个非常重要的功能,必须充分理解。
Docker 还允许硬件签名。这是什么意思?从上一节中,我们看到您可以使用高度安全的密钥对您的内容进行签名,允许其他人验证该信息来自其声称的人,这最终为每个人提供了极大的安心。
硬件签名通过允许您添加另一层代码签名,将这一点提升到了一个全新的水平。通过引入一个硬件设备,Yubikey——一个 USB 硬件——你可以使用你的私钥(记得在某个地方保持它们的安全和离线)以及一个要求你在签署代码时点击它的硬件。这证明了你是一个人,因为当你在签署代码的时候,你必须身体接触到 YubiKey。
关于公证员硬件签名部分的更多信息,值得一读他们在以下网址发布该功能时的公告:
https://blog . docker . com/2015/11/docker-content-trust-yubikey/
有关使用 YubiKeys 和 Docker 公证员的视频演示,请访问以下 YouTube 网址:
https://youtu . be/flfffthrzq?t=1 时 21 分 M23 秒
要了解更多关于 YubiKeys 的信息,请访问他们的网站,网址如下:
还有一些额外的阅读材料可以帮助确保您的重点是监控整个 Docker 生态系统的安全方面。
回顾第 4 章、 Docker Bench for Security ,我们介绍了 Docker Bench,这是一个适用于您整个 Docker 环境的扫描应用。这对于帮助指出您可能存在的任何安全风险非常有用。
我还发现了一个很棒的免费 Docker 安全电子书。这本书将涵盖潜在的安全问题,以及您可以用来保护容器环境的工具和技术。免费的还不错吧?!你可以在以下网址找到这本书:
https://www.openshift.com/promotions/docker-security.html
更多信息,请参考以下容器安全简介白皮书:
您也可以参考Docker 容器最终指南白皮书,如下所示:
最后两项——《容器安全简介》白皮书和*《Docker 容器最终指南》*是直接从 Docker 那里创建的,因此,它们包含与理解容器的结构直接相关的信息,并将大量 Docker 信息分解到一个中心位置,您可以下载或打印出来并随时保存。它们还帮助您了解容器的各个层,以及它们如何帮助保持您的环境和应用彼此安全。
虽然这不是一个安全相关的工具,但它是一个非常有用的 Docker 工具,并且更新非常频繁。令人敬畏的 Docker 是所有 Docker 项目的精选列表。它允许其他人向精选列表提交请求。该列表包括那些希望开始使用 Docker 的人的主题;有用的文章;深度文章;网络文章;以及关于使用多服务器 Docker 环境的文章、云基础设施、提示和时事通讯,这个列表还在继续。要查看该项目及其包含的所有内容的精彩程度,请访问以下网址:
https://github . com/veggienjk/awesome Docker
在本章中,我们研究了监控和报告 Docker 安全问题的多种方法。我们看了一些邮件列表,你可以加入监视 Docker CVE 列表。我们还回顾了使用 Docker 公证来签署您的映像,以及使用硬件签名来利用硬件项目,如 YubiKeys。我们还考虑了使用负责任的披露,这让 Docker 有机会在向公众发布之前修复任何与安全相关的问题。
在下一章中,我们将研究如何使用一些 Docker 工具。这些工具可用于保护 Docker 环境。我们将研究命令行工具以及您可以利用的图形用户界面工具。我们将考虑在您的环境中利用 TLS,使用只读容器,利用内核命名空间和控制组,并降低风险,同时注意 Docker 守护程序的攻击面。