AWS Nitro Enclaves

在 EC2 实例内创建隔离的虚拟机,通过加密证明(Attestation)和 KMS 集成安全处理敏感数据的功能

概述

AWS Nitro Enclaves 是一项从 EC2 实例的 CPU 和内存中划分出完全隔离的虚拟机(Enclave)的功能。Enclave 没有网络接口和存储,与父实例的通信仅限于 vsock(虚拟套接字),即使管理员也无法直接访问内部数据。通过将加密证明(Attestation)文档用作 KMS 条件密钥,可构建仅特定 Enclave 镜像能获取解密密钥的机制,适用于 PII 处理和金融数据加密运算等需要高度机密性的工作负载。

Nitro Hypervisor 隔离模型重新定义信任边界

传统安全模型建立在 OS 和 Hypervisor 管理员可以访问内存数据的前提上。Nitro Enclaves 颠覆了这一前提,提供了即使与父实例 OS 也隔离的执行环境。Enclave 由 Nitro Hypervisor 直接管理,在独立于父实例内核和驱动程序的内存空间中运行。完全没有外部网络连接,与父实例的唯一通信路径是 vsock(Virtio Socket)。这种设计确保即使父实例被入侵,Enclave 内的数据仍然受到保护。Azure 提供 Confidential Computing 作为类似的机密计算功能,但 Nitro Enclaves 可以添加到现有 EC2 实例而无需采购专用硬件,降低了实际采用门槛。Enclave 启动使用 nitro-cli 工具,标准工作流是从 Docker 镜像构建 Enclave Image File(EIF)并执行。

通过 Attestation 和 KMS 条件密钥实现零信任解密

Nitro Enclaves 的核心是加密证明。Enclave 启动时,Nitro Hypervisor 生成包含 Enclave 镜像 PCR(Platform Configuration Register)值的签名 Attestation 文档。PCR0 表示镜像哈希,PCR1 表示内核哈希,PCR2 表示应用程序哈希,以加密方式证明这些值未被篡改。在 KMS 密钥策略中设置 kms:RecipientAttestation:PCR0 等条件密钥,可使只有匹配指定 PCR 值的 Enclave 才能调用 Decrypt API。这实现了零信任解密——仅当合法代码在合法环境中运行时才允许解密。机密计算相关书籍(Amazon)详细介绍了基于证明的密钥管理模式。实践中,构建 CI/CD 管道来构建 EIF 并自动将其 PCR 值反映到 KMS 策略中,可消除每次部署时手动更新策略的需要。

PII 处理和金融工作负载的实现模式

Nitro Enclaves 的典型用例是 PII 令牌化和金融数据加密运算。PII 处理中,父实例通过 vsock 将加密的个人信息发送到 Enclave,Enclave 从 KMS 获取解密密钥进行解密和处理,然后仅将令牌化结果返回给父实例。这种设计确保明文 PII 永远不会留在父实例的内存或磁盘中。在金融领域,它被用作 HSM(硬件安全模块)的替代方案进行加密密钥操作。使用 ACM for Nitro Enclaves,可以运行将 SSL/TLS 证书私钥限制在 Enclave 内的 Web 服务器,大幅降低私钥泄露风险。Enclave 资源分配从父实例的 CPU 核心和内存中划分,因此父实例的规格需要考虑额外的 Enclave 资源。Nitro Enclaves 在任何基于 Nitro 的实例上均无额外费用,实际采用的成本门槛很低。

共有するXB!