你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

使用 Azure 容器实例上的机密容器的安全密钥发布 (ACI)

具有机密容器产品/服务的 Azure 密钥库(AKV)的安全密钥发布(SKR)流可以通过多种方式实现。 机密容器通过 Linux 内核运行来宾启发式公开 AMD 标准版V-SNP 设备,该内核在来宾固件中使用了我们称为直接 Linux 启动(DLB)的必要 Hyper-V 相关修补程序。 此平台不使用基于 AMD 标准版V-SNP 支持的机密 VM 的 vTPM 和 HCL。 此概念文档假定你打算在 Azure 容器支持中选择机密计算 SKU 来 运行容器

  • Azure 提供的侧车帮助程序容器
  • 使用容器应用程序的自定义实现

Azure 提供的 Side-Car 帮助程序容器

开放源代码的 GitHub 项目“机密侧车”详细介绍了如何生成此容器,以及准备和运行此侧车容器所需的参数/环境变量。 当前侧车实现提供了各种 HTTP REST API,主应用程序容器可用于从 AKV 提取密钥。 通过 Microsoft Azure 证明(MAA)的集成已内置。 可在此处的详细信息中找到运行侧车 SKR 容器的准备步骤。

主应用程序容器应用程序可以调用以下示例中定义的侧车 WEB API 终结点。 侧车在同一容器组中运行,是应用程序容器的本地终结点。 可在此处找到 API 的完整详细信息

key/release POST 方法需要采用以下格式的 JSON:

{	
    "maa_endpoint": "<maa endpoint>", //https://learn.microsoft.com/en-us/azure/attestation/quickstart-portal#attestation-provider
    "akv_endpoint": "<akv endpoint>", //AKV URI
    "kid": "<key identifier>" //key name,
    "access_token": "optional aad token if the command will run in a resource without proper managed identity assigned"
}

成功后, key/release POST 方法响应将采用以下 StatusOK 格式的标头和有效负载:

{
    "key": "<key in JSON Web Key format>"
}

出错时, key/release POST 方法响应会携带标头 StatusForbidden 和以下格式的有效负载:

{
    "error": "<error message>"
}

使用容器应用程序的自定义实现

若要执行扩展 Azure 密钥库 (AKV) - 安全密钥发布和 Microsoft Azure 证明(MAA)的功能的自定义容器应用程序,请使用以下内容作为高级参考流。 一种简单的方法是查看此 侧车 GitHub 项目中的当前侧车实现代码。

Image of the aforementioned operations, which you should be performing.

  1. 步骤 1: 使用可导出密钥设置 AKV 并附加发布策略。 此处的更多内容
  2. 步骤 2: 使用 Microsoft Entra ID 设置托管标识,并将其附加到 AKV。 此处的更多内容
  3. 步骤 3: 通过设置机密计算强制策略,在 ACI 中使用所需的参数部署容器应用程序。 此处的更多内容
  4. 步骤 4:在此步骤中,应用程序应通过执行 IOCTL Linux 套接字调用来提取 RAW AMD 标准版V-SNP 硬件报告。 无需任何来宾证明库才能执行此操作。 有关现有侧车 实现的详细信息
  5. 步骤 5:获取容器组的 AMD 标准版V-SNP 证书链。 这些证书是从 Azure 主机 IMDS 终结点传送的。 此处的更多内容
  6. 步骤 6: 将 SNP RAW 硬件报告和证书详细信息发送到 MAA,以便验证并返回声明。 此处的更多内容
  7. 步骤 7: 将 ACI 生成的 MAA 令牌和托管标识令牌发送到 AKV 以获取密钥发布。 此处的更多内容

从 AKV 提取密钥成功后,可以使用密钥对数据集进行解密或加密机密容器环境外的数据。

参考

具有机密容器部署的 ACI

使用加密 Blob 提取和解密的 Side-Car 实现与 SKR AKV 密钥

AKV SKR 与机密 VM 的 AMD 标准版V-SNP

Microsoft Azure 证明 (MAA)

SKR 策略示例