9.18. 使用 Trustee attestation 服务器自动解锁加密的卷
您可以通过信任密钥代理服务(KBS)使用远程测试来自动加密和解密 LUKS 卷。Clevis pin trustee 保护磁盘加密密钥。在发布密钥之前,您的平台必须向远程服务器证明其完整性。
机密计算工作负载要求磁盘加密密钥永远不会公开。不要将它们公开给基础架构提供商或任何不受信任的软件。在这些环境中,只能在平台通过远程测试证明其完整性后解密 LUKS 卷。
如果没有 信任ee pin,Clevis 无法将 LUKS 卷绑定到 Trustee attestation 服务器。Operator 必须实施标准 Clevis 和 LUKS 工具之外的自定义密钥检索工作流。
信任ee pin 解决了两个主要用例:
- 用于 OpenShift 的机密集群,集群节点在受信任的执行环境(TEEs)中运行。它们必须在测试后解锁加密的根卷。
- 带有 KubeVirt 或 OpenShift Virtualization 的机密虚拟机,在 TEEs 内运行的客户虚拟机必须在不需要 Operator 干预的情况下解密其虚拟磁盘。
在这两种情况下,Trustee 服务器都充当策略强制点。只有在验证平台时,才会发布磁盘加密。根据参考值检查认证证据。
RHEL 通过 clevis-pin- 软件包提供 Clevis pin 信任ee。当您使用 trustee 信任ee pin绑定 LUKS 卷时,Clevis 会将加密密钥存储在远程信任者服务器上。您只能在计算机通过测试后检索此密钥。这证明了在 genuine Trusted Execution Environment (TEE)中运行的。
trustee pin 通过 clevis-encrypt-trustee 和 clevis-decrypt-trustee 命令与标准 Clevis 框架集成。pin 还包括 60clevis-pin-trustee dracut 模块,用于在早期引导过程中自动解锁 root 卷。
管理员可以将 LUKS 加密卷绑定到 Trustee 服务器。使用 clevis luks bind -d < device> trustee ' <config> ' 命令。配置指定:
- 服务器 URL
- 加密密钥的资源路径
- 可选参数,如 TLS 证书、重试计数和测试数据
例 9.3. 将加密的卷绑定到 Trustee 服务器
以下命令将加密卷(位于 /dev/sda2) 绑定到服务器 https://trustee1.example.com 和 https://trustee2.example.com :
# clevis luks bind -d /dev/sda2 trustee '{"servers":[{"url":"https://trustee1.example.com:8080","cert":"/etc/pki/tls/certs/trustee1.pem"}, "url":"https://trustee2.example.com:8080","cert":"/etc/pki/tls/certs/trustee2.pem"}],"path":"default/mycluster/rootkey","num_retries":5,"initdata":"{\"cc_eventlog\":\"value1\"}"}'
绑定卷后,dracut initramfs 模块会在早期引导过程中自动解锁它。这会触发 trustee-attester 二进制文件。二进制文件执行远程测试,并从 Trustee KBS 检索解密密钥。标准 Clevis 命令与 trustee pin 一起工作: clevis luks list、clevis luks unbind 和 clevis luks unlock。您可以将 信任ee 与 SSS pin 中的其他 pins (tang 和 tpm2)合并。这可启用多因素或多策略解锁设置。