你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
Microsoft Azure 证明是一个统一的解决方案,用于远程验证平台的可信度和在该平台中运行的二进制文件的完整性。 该服务支持对由受信任平台模块 (TPM) 提供支持的平台进行证明,同时还能证明受信任执行环境 (TEE) 的状态,例如 Intel® Software Guard Extensions (SGX) 飞地、基于虚拟化的安全性 (VBS) 飞地、受信任平台模块 (TPM)、Azure VM 的受信任启动和 Azure 机密 VM。
认证是用于在受信任的平台上正确地实例化软件二进制文件的过程。 然后,远程信赖方可以确信只有此类软件在受信任的硬件上运行。 Azure 证明是一个统一的面向客户的认证服务和框架。
Azure 鉴证支持先进的安全范式,如 Azure 机密计算和智能边缘保护。 该服务从计算实体接收证据,将其转换为一组声明,针对可配置策略验证它们,并为基于声明的应用程序(例如信赖方和审核机构)生成加密证明。
Azure 证明支持对基于 AMD SEV-SNP 的机密 VM (CVM) 进行平台证明和来宾证明。 基于 Azure 证明的平台证明在 CVM 的关键路径启动期间自动进行,无需客户操作。 有关来宾证明的更多信息,请参阅宣布机密 VM 的来宾证明正式发布。
用例
Azure 证明为多种环境和各种不同的用例提供全面的证明服务。
机密 VM 上的 AMD SEV-SNP 证明
Azure 机密 VM (CVM) 基于采用 SEV-SNP 技术的 AMD 处理器。 CVM 提供了使用平台管理的密钥和客户管理的密钥的 VM OS 磁盘加密选项,并且将磁盘加密密钥绑定到虚拟机的 TPM。 CVM 启动时,包含来宾 VM 固件度量的 SNP 报告将发送到 Azure 证明。 该服务会验证度量并颁发一个用于从托管 HSM 或 Azure 密钥保管库 释放密钥的证明令牌。 这些密钥用于解密来宾 VM 的 vTPM 状态、解锁 OS 磁盘并启动 CVM。 每次进行 CVM 启动时都会自动执行证明和密钥释放过程,该过程可确保 CVM 仅在成功证明硬件后启动。
机密容器上的 AMD SEV-SNP 证明
Azure 机密容器基于采用 SEV-SNP 技术的 AMD 处理器。 机密容器托管在Azure 容器实例和Azure Kubernetes 服务(预览版)上,提供在 SEV-SNP 受保护的受信任执行环境中运行容器组的功能,该环境将容器组与容器管理控制平面和其他正在运行的容器隔离开来。 机密容器中的证明涉及到直接从处理器提取 AMD 硬件证明报告。 可以使用 SKR sidecar 容器 完成此任务,也可以将其直接编译到应用程序逻辑中。 然后,可以将硬件报告与 Azure 证明 和 托管 HSM 或高级版 Azure 密钥保管库(AKV) 进行交换,以获取机密。 你还可以根据需要向自己的密钥保管库系统提供硬件报告。
受信任启动证明
Azure 客户可以通过为虚拟机 (VM) 启用受信任启动来阻止 Bootkit 和 Rootkit 感染。 如果 VM 启用了安全启动和 vTPM,并安装了来宾验证扩展,则会将 vTPM 度量定期提交到 Azure 验证,以监控启动完整性。 证明失败表示可能存在恶意软件,通过 Microsoft Defender for Cloud 的“警报和推荐”可向客户显示恶意软件。
Azure 密钥保管库 发布策略可以验证来自任何符合规范的 Microsoft Azure 证明 证明机构的令牌,包括受信任启动 VM 发出的 vTPM 度量启动声明(secureboot、x-ms-azurevm-attested-pcr-values.*),而不仅仅是硬件 TEE 声明。 请参阅通过基于证明的安全密钥发布保护 Azure VM 上的知识产权。
TPM 证明
基于受信任的平台模块 (TPM) 的证明对于提供平台状态证明至关重要。 TPM 用作信任根和安全协处理器,为度量(证据)提供加密有效性。 具有 TPM 的设备可以依靠证明来证明启动完整性未受损害,并且可以使用声明来检测启动期间的功能状态启用。
客户端应用程序可设计为利用 TPM 认证,方法是将安全敏感的任务指定为仅在验证平台安全后才执行。 这样,此类应用程序就可以利用 Azure 证明定期在平台中建立信任并访问敏感数据。
SGX enclave 证明
Intel® Software Guard Extensions (SGX) 指硬件级隔离,这只在一些英特尔 CPU 型号上受支持。 SGX 使代码可以在清理过的隔离舱(称为 SGX enclave)中运行。 然后,通过硬件管理访问和内存权限,利用适当的隔离将攻击面降至最小。
通过委派在这些 enclave 内执行的安全敏感任务,可以将客户端应用程序设计为利用 SGX enclave。 这样,此类应用程序就可以利用 Azure 证明定期在 enclave 中建立信任并访问敏感数据。
英特尔® 至强® 可扩展处理器仅支持基于 ECDSA 的证明解决方案以远程方式证明 SGX enclave。 利用基于 ECDSA 的证明模型,Azure 证明支持对英特尔® 至强® E3 处理器和基于英特尔® 至强® 可扩展处理器的服务器平台的验证。
注意
若要使用 Azure 证明执行对基于英特尔® 至强® 可扩展处理器的服务器平台的证明,用户需要安装 Azure DCAP 版本 1.10.0 或更高版本。
Open Enclave 认证
Open Enclave (OE) 是一系列库,旨在为开发人员创建统一的 enclaving 抽象,以开发基于 TEE 的应用程序。 它提供了一个可最大程度降低平台特异性的通用安全应用模型。 Microsoft 将其视为普及基于硬件的 enclave 技术(例如 SGX)和增加它们在 Azure 上的使用的方法。
OE 使 enclave 证据的特定验证要求实现了标准化。 因此,OE 有资格作为非常适合 Azure 证明的证明使用者。
Azure 证明在 TEE 中运行
Azure 证明对于机密计算场景至关重要,因为它可执行以下操作:
- 验证 enclave 证据是否有效。
- 根据客户定义的策略评估 enclave 证据。
- 管理和存储特定于租户的策略。
- 生成并签署信赖方用来与 enclave 交互的令牌。
为了在运行层面将 Microsoft 排除在可信计算基(TCB)之外,Azure 证明 的关键操作(如证明报告验证、令牌生成、策略评估和令牌签名)被迁移到基于 AMD SEV-SNP 的机密容器中。
为什么使用 Azure 证明
Azure 证明是用于证明 TEE 的首选服务,因为它具有以下优势:
- 用于证明多种环境(如 TPM、SGX 飞地和 VBS 飞地)的统一框架。
- 允许创建自定义证明提供程序和配置策略来限制令牌生成。
- 在 TEE 中实现时,保护其数据在使用过程中的安全。
- 高可用性服务。
如何使用 Azure 证明建立信任
- 验证证明令牌是否由 Azure 证明生成 - 使用自签名证书对 Azure 证明生成的证明令牌进行签名。 签名证书 URL 通过 OpenID 元数据终结点公开。 信赖方可以检索签名证书并执行证明令牌的签名验证。 有关详细信息,请参阅 代码示例。
- 验证Azure 证明是否在 SEV-SNP 容器中运行 - 令牌签名证书包含有关运行Azure 证明的 TEE 的信息。 该 TEE 凭据是一份 SEV-SNP 报告。 信赖方可以通过本地验证报表来检查Azure 证明是否在有效的 TEE 中运行。 有关代码示例,请参阅 SEV-SNP。
- 使用签名证明令牌的密钥验证 Azure 证明 TEE 报表的绑定 - 信赖方可以验证签名证明令牌的公钥的哈希是否与Azure 证明 TEE 报表的报告数据字段匹配。 有关详细信息,请参阅 代码示例。
- 验证 Azure 证明 代码度量是否与 Azure 已发布值匹配 - 嵌入在证明令牌签名证书中的 TEE 附件包括 Azure 证明 的 TEE 代码度量。 信赖方可以通过将证明令牌签名证书中从 TEE 附属信息检索到的特定值与 Azure 证明团队提供的值进行比较,来验证报告是否属于 Azure 证明。 对于 SEV-SNP,应验证 HOST_DATA。 有关详细信息,请参阅 代码示例。 如果有兴趣执行此验证,请在Azure 支持页上提交请求。 在计划轮换这些特定值时,Azure 认证团队会与你联系。
- 获得构建来源保证 - Azure 证明已集成到 Microsoft 的签名透明度 (MST) 中。 MST 在不可变的防篡改账本中记录代码签名。 MST 服务提供符合加密验证、符合 SCITT 的收据,这些收据提供对Azure 证明部署的清晰可见性,从而增强信任、可审核性和法规遵从性。 若要了解有关 MST 以及如何验证构建产物的更多信息,请参阅 关于 Microsoft 签名透明度分类账。
标识有效 Azure 证明实例的值应会在轮换代码签名证书时或安全更新需要新策略版本时更改。 Azure 证明 团队对每次计划内轮换都遵循以下推出时间表:
- Azure 证明 团队会将新值通知相关使用者,并给予两个月的宽限期来实施相应的代码更改。
- 在两个月的宽限期之后,Azure 证明开始使用新值。
- 通知日期后的三个月,Azure 证明会停止使用旧值。
对于计划外轮换,包括安全更新所需的轮换,Azure 认证团队会在一个月的宽限期内传达新值。
业务连续性和灾难恢复 (BCDR) 支持
Azure 证明的业务连续性和灾难恢复 (BCDR) 使您能够减轻因某个区域发生重大可用性问题或灾难事件导致的服务中断。
在正常情况下,部署在两个区域的群集会独立运行。 如果某个区域出现故障或中断,则会发生以下情况:
- Azure 证明 BCDR 将提供无缝故障转移,客户无需执行任何额外的步骤即可恢复。
- 该区域的 Azure 流量管理器检测到运行状况探测已降级,并将终结点切换到配对区域。
- 现有连接无法正常工作,并收到内部服务器错误或超时问题。
- 所有控制平面操作均被阻止。 客户无法在主区域中创建证明提供程序。
- 所有数据平面操作(包括证明调用和策略配置)均由次要区域提供。 客户可以使用与主要区域对应的原始 URI 继续处理数据平面操作。