你当前正在访问 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 的声明,如此处针对 SGXAMD 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 类型产品/服务:

常见问题(FAQ)

是否可以使用非机密计算产品/服务执行 SKR?

否。 附加到 SKR 的策略仅识别与基于硬件的 TEE 关联的 MAA 声明。

是否可以自带证明提供程序或服务,并使用 AKV 的这些声明来验证和发布?

否。 AKV 目前仅识别 MAA 并与之集成。

是否可以使用 AKV SDK 执行密钥发布?

是的。 最新 SDK 与 7.3 AKV API 的支持密钥发布集成。

是否可以共享密钥发布策略的一些示例?

可以,此处列出了 TEE 类型的详细示例。

是否可以附加包含证书和机密的策略的 SKR 类型?

否。 目前没有。

参考

SKR 策略示例

通过配备了容器挎斗的机密容器安全密钥发布的 Azure 容器实例

基于 AMD SEV-SNP 的 CVM 应用程序及安全密钥发布示例

AKV REST API 与 SKR 详细信息

Azure Key Vault 安全密钥发布策略语法

AKV SDK