网络绑定磁盘加密 (NBDE) 允许您加密物理机和虚拟机硬盘的根卷,而无需在重新启动机器时手动输入密码。
为了解网络绑定磁盘加密 (NBDE) 在保护边缘服务器静态数据方面的优势,请将不使用 Clevis 的密钥托管和 TPM 磁盘加密与运行 Red Hat Enterprise Linux (RHEL) 系统上的 NBDE 进行比较。
下表列出了一些关于每个加密解决方案的威胁模型和复杂性的权衡。
场景 | 密钥托管 | TPM 磁盘加密(不使用 Clevis) | NBDE |
---|---|---|---|
防止单磁盘被盗 |
X |
X |
X |
防止整个服务器被盗 |
X |
X |
|
系统可以独立于网络重新启动 |
X |
||
无需定期重新加密 |
X |
||
密钥绝不会通过网络传输 |
X |
X |
|
受 OpenShift 支持 |
X |
X |
密钥托管是存储加密密钥的传统系统。网络上的密钥服务器存储具有加密引导磁盘的节点的加密密钥,并在查询时返回它。密钥管理、传输加密和身份验证方面的复杂性使其成为引导磁盘加密的不合理选择。
尽管 Red Hat Enterprise Linux (RHEL) 提供了密钥托管,但基于密钥托管的磁盘加密设置和管理是一个手动过程,不适用于 OpenShift Container Platform 自动化操作(包括节点的自动添加),并且当前不受 OpenShift Container Platform 支持。
可信平台模块 (TPM) 磁盘加密最适合数据中心或远程受保护位置的安装。全盘加密实用程序(如 dm-crypt 和 BitLocker)使用 TPM 绑定密钥加密磁盘,然后将 TPM 绑定密钥存储在连接到节点主板的 TPM 中。此方法的主要优点是没有外部依赖性,并且节点能够在启动时无需任何外部交互即可解密其自身磁盘。
如果从节点中窃取磁盘并在外部进行分析,TPM 磁盘加密可以防止数据解密。但是,对于不安全的位置,这可能还不够。例如,如果攻击者窃取了整个节点,则攻击者可以在启动节点时拦截数据,因为节点会解密其自身的磁盘。这适用于具有物理 TPM2 芯片的节点以及具有虚拟可信平台模块 (VTPM) 访问权限的虚拟机。
网络绑定磁盘加密 (NBDE) 以安全且匿名的方式将加密密钥绑定到网络上的外部服务器或一组服务器。这并非密钥托管,因为节点不会存储加密密钥或将其通过网络传输,但在其他方面行为类似。
Clevis 和 Tang 是提供网络绑定加密的通用客户端和服务器组件。Red Hat Enterprise Linux CoreOS (RHCOS) 将这些组件与 Linux 通用密钥设置磁盘格式 (LUKS) 结合使用,以加密和解密根和非根存储卷,从而实现网络绑定磁盘加密。
节点启动时,它会尝试通过执行加密握手来联系预定义的一组 Tang 服务器。如果它可以访问所需的 Tang 服务器数量,则节点可以构建其磁盘解密密钥并解锁磁盘以继续启动。如果节点由于网络中断或服务器不可用而无法访问 Tang 服务器,则节点将无法启动并无限期地继续重试,直到 Tang 服务器再次可用。由于密钥实际上与节点在网络中的存在相关联,因此试图访问静止数据的攻击者需要同时获取节点上的磁盘以及对 Tang 服务器的网络访问权限。
下图说明了 NBDE 的部署模型。
下图说明了 NBDE 在重新引导期间的行为。
以下组件和技术实现了网络绑定磁盘加密 (NBDE)。
Tang 是一个用于将数据绑定到网络存在的服务器。当节点绑定到某个安全网络时,它使包含数据的节点可用。Tang 是无状态的,不需要传输层安全 (TLS) 或身份验证。与密钥托管解决方案不同(密钥服务器存储所有加密密钥并了解每个加密密钥),Tang 从不与任何节点密钥交互,因此它永远不会从节点获取任何识别信息。
Clevis 是一个用于自动解密的可插入框架,它提供 Linux 通用密钥设置磁盘格式 (LUKS) 卷的自动解锁功能。Clevis 包运行在节点上,并提供该功能的客户端。
Clevis 插件 是 Clevis 框架的一个插件。共有三种插件类型:
将磁盘加密绑定到 TPM2。
将磁盘加密绑定到 Tang 服务器以启用 NBDE。
允许更复杂的其他插件组合。它允许更细致的策略,例如:
必须能够访问这三台 Tang 服务器中的至少一台
必须能够访问这五台 Tang 服务器中的至少三台
必须能够访问 TPM2 和这三台 Tang 服务器中的至少一台
规划 Tang 服务器环境时,请考虑 Tang 服务器的物理位置和网络位置。
Tang 服务器的地理位置相对不重要,只要它们能够从未经授权的访问或盗窃中得到适当的保护,并提供运行关键服务所需的可用性和可访问性即可。
只要 Tang 服务器始终可用,带有 Clevis 客户端的节点就不需要本地 Tang 服务器。灾难恢复需要冗余电源和到 Tang 服务器的冗余网络连接,无论其位置如何。
任何可以访问 Tang 服务器的节点都可以解密其自己的磁盘分区或由同一 Tang 服务器加密的任何其他磁盘。
选择 Tang 服务器的网络位置,以确保从给定主机允许或不允许网络连接可以用于解密权限。例如,防火墙保护措施可能会禁止来自任何类型的访客或公共网络的访问,或禁止来自建筑物非安全区域的任何网络接口的访问。
此外,请保持生产网络和开发网络之间的网络隔离。这有助于定义适当的网络位置并增加额外的安全层。
不要在负责解锁它们的同一资源(例如,相同的 `rolebindings.rbac.authorization.k8s.io` 集群)上部署 Tang 服务器。但是,Tang 服务器集群和其他安全资源可以是一个有用的配置,以支持多个附加集群和集群资源。
可用性、网络和物理位置方面的需求决定了要使用多少个 Tang 服务器,而不是服务器容量方面的任何考虑。
Tang 服务器不维护使用 Tang 资源加密的数据的状态。Tang 服务器要么完全独立,要么仅共享其密钥材料,这使得它们可以很好地扩展。
Tang 服务器处理密钥材料有两种方式:
多个 Tang 服务器共享密钥材料
您必须在同一 URL 后面负载均衡共享密钥的 Tang 服务器。配置可以像轮询 DNS 一样简单,也可以使用物理负载均衡器。
您可以从单个 Tang 服务器扩展到多个 Tang 服务器。当 Tang 服务器共享密钥材料和同一 URL 时,扩展 Tang 服务器不需要在节点上重新加密钥或重新配置客户端。
客户端节点设置和密钥轮换只需要一台 Tang 服务器。
多个 Tang 服务器生成自己的密钥材料
您可以在安装时配置多个 Tang 服务器。
您可以在负载均衡器后面扩展单个 Tang 服务器。
在客户端节点设置或密钥轮换期间,所有 Tang 服务器都必须可用。
当客户端节点使用默认配置启动时,Clevis 客户端会联系所有 Tang 服务器。只有 _n_ 个 Tang 服务器必须在线才能继续解密。_n_ 的默认值为 1。
Red Hat 不支持更改 Tang 服务器行为的安装后配置。