你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
安全密钥发布功能与 AKV 和 Azure 机密计算 (ACC)
安全密钥发布 (SKR) 是 Azure Key Vault (AKV) 托管 HSM 和高级产品/服务的功能。 使用安全密钥发布,可将受 HSM 保护的密钥从 AKV 发布到经过证明的受信任执行环境 (TEE),例如安全 Enclave、基于 VM 的 TEE 等。SKR 为数据解密/加密密钥额外添加了一层访问保护,在这种情况下,你可以针对具有已知配置的应用程序 + TEE 运行时环境,直接访问密钥材料。 对这些密钥的访问权限取决于在可导出密钥创建时定义的 SKR 策略。
通过 AKV 产品/服务提供 SKR 支持
采用 TEE 的总体安全密钥发布流
SKR 只能根据 Microsoft Azure 证明 (MAA) 生成的声明发布密钥。 SKR 策略定义与 MAA 声明紧密集成。
以下步骤适用于 AKV 高级版。
步骤 1:创建 Key Vault 高级版 HSM 支持
请遵循此处有关基于 Az CLI 的 AKV 创建的详细信息
请确保将 [--sku] 的值设置为“高级版”。
步骤 2:创建安全密钥释放策略
安全密钥发布策略是此处定义的 json 格式发布策略,除了用于授权发布密钥之外,还可以指定一组所需的声明。 此处的声明是基于 MAA 的声明,如此处针对 SGX 和 AMD SEV-SNP CVM 的引用。
请访问 TEE 的具体示例页以获取更多详细信息。 有关 SKR 策略语法的详细信息,请参阅 Azure Key Vault 安全密钥发布策略语法。
在设置 SKR 策略之前,请确保通过远程证明流运行 TEE 应用程序。 本教程未涵盖远程证明。
示例
{
"version": "1.0.0",
"anyOf": [ // Always starts with "anyOf", meaning you can multiple, even varying rules, per authority.
{
"authority": "https://sharedweu.weu.attest.azure.net",
"allOf": [ // can be replaced by "anyOf", though you cannot nest or combine "anyOf" and "allOf" yet.
{
"claim": "x-ms-isolation-tee.x-ms-attestation-type", // These are the MAA claims.
"equals": "sevsnpvm"
},
{
"claim": "x-ms-isolation-tee.x-ms-compliance-status",
"equals": "azure-compliant-cvm"
}
]
}
]
}
步骤 3:使用附加的 SKR 策略在 AKV 中创建可导出密钥
可在此处找到密钥类型和其他属性的确切详细信息。
az keyvault key create --exportable true --vault-name "vault name from step 1" --kty RSA-HSM --name "keyname" --policy "jsonpolicyfromstep3 -can be a path to JSON"
步骤 4:在 TEE 内运行的应用程序执行远程证明
此步骤可以根据你运行以下内容的 TEE 类型而定,包括你的应用程序 Intel SGX Enclave,或基于 AMD SEV-SNP 的机密虚拟机 (CVM),或采用 AMD SEV-SNP 在 CVM Enclave 中运行的 的机密容器等。
请遵循以下参考示例,了解 Azure 中各种 TEE 类型产品/服务:
- 基于 AMD EV-SNP 的 CVM 内的应用程序执行安全密钥发布
- 采用配备了 SKR 挎斗容器的 Azure 容器实例 (ACI) 的机密容器
- 基于 Intel SGX 的应用程序执行安全密钥发布 - 开源解决方案 Mystikos 实现
常见问题(FAQ)
是否可以使用非机密计算产品/服务执行 SKR?
否。 附加到 SKR 的策略仅识别与基于硬件的 TEE 关联的 MAA 声明。
是否可以自带证明提供程序或服务,并使用 AKV 的这些声明来验证和发布?
否。 AKV 目前仅识别 MAA 并与之集成。
是否可以使用 AKV SDK 执行密钥发布?
是的。 最新 SDK 与 7.3 AKV API 的支持密钥发布集成。
是否可以共享密钥发布策略的一些示例?
可以,此处列出了 TEE 类型的详细示例。
是否可以附加包含证书和机密的策略的 SKR 类型?
否。 目前没有。
参考
通过配备了容器挎斗的机密容器安全密钥发布的 Azure 容器实例