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

使用机密 VM 的安全密钥发布操作指南

以下文章介绍了在使用基于 AMD 标准版V-SNP 的机密虚拟机运行时,如何从 Azure 密钥库执行安全密钥发布。 若要详细了解安全密钥发布和 Azure 机密计算,请转到此处。

SKR 要求执行 SKR 的应用程序应使用 Microsoft Azure 证明(MAA)通过远程来宾证明流,如此处所述

整体流和体系结构

若要允许 Azure 密钥库将密钥发布到经过证明的机密虚拟机,需要执行某些步骤:

  1. 将托管标识分配给机密虚拟机。 系统分配的托管标识或用户分配的托管标识受支持。
  2. 设置密钥库访问策略以授予托管标识“发布”密钥权限。 策略允许机密虚拟机访问密钥库并执行发布操作。 如果使用密钥库托管 HSM,请分配“托管 HSM 加密服务发布用户”角色成员身份。
  3. 创建标记为可导出且具有关联发布策略的密钥库密钥。 密钥发布策略将密钥关联到经过证明的机密虚拟机,并且密钥只能用于所需目的。
  4. 若要执行发布,请从机密虚拟机将 HTTP 请求发送到密钥库。 HTTP 请求必须在请求正文中包含机密 VM 证明的平台报告。 经过证明的平台报告用于验证已启用受信任执行环境的平台(如机密 VM)状态的可信度。 Microsoft Azure 证明 服务可用于创建经过证明的平台报表并将其包含在请求中。

Diagram of the aforementioned operations, which we'll be performing.

部署 Azure 密钥库

使用可导出密钥设置 AKV 高级版 或 AKV mHSM。 按照此处 设置 SKR 可导出密钥的详细说明操作

Bicep

@description('Required. Specifies the Azure location where the key vault should be created.')
param location string = resourceGroup().location

@description('Specifies the Azure Active Directory tenant ID that should be used for authenticating requests to the key vault. Get it by using Get-AzSubscription cmdlet.')
param tenantId string = subscription().tenantId

resource keyVault 'Microsoft.KeyVault/vaults@2021-11-01-preview' = {
  name: 'mykeyvault'
  location: location
  properties: {
    tenantId: tenantId
    sku: {
      name: 'premium'
      family: 'A'
    }
  }
}

ARM 模板

    {
      "type": "Microsoft.KeyVault/vaults",
      "apiVersion": "2021-11-01-preview",
      "name": "mykeyvault",
      "location": "[parameters('location')]",
      "properties": {
        "tenantId": "[parameters('tenantId')]",
        "sku": {
          "name": "premium",
          "family": "A"
        }
      }
    }

部署机密虚拟机

按照快速入门说明操作,了解如何“使用 ARM 模板部署机密 VM”

启用系统分配的托管标识

Azure 资源的托管标识在 Microsoft Entra ID 中为 Azure 服务提供了一个自动托管标识。 可以使用此标识向支持 Microsoft Entra 身份验证的任何服务进行身份验证,这样就无需在代码中插入凭据了。

若要在 CVM 上启用系统分配的托管标识,帐户需要 虚拟机参与者 角色分配。 不需要其他 Microsoft Entra 目录角色分配。

  1. 无论是在本地登录到 Azure 还是通过 Azure 门户登录,请使用与包含 VM 的 Azure 订阅关联的帐户。

  2. 若要启用系统分配的托管标识,请将模板加载到编辑器中,找到 Microsoft.Compute/virtualMachines 感兴趣的资源,并将该属性添加到 "identity" 与属性相同的级别 name: vmName 。 使用以下语法:

       identity:{
         type: 'SystemAssigned'
       }
    
  3. resource 详细信息添加到模板。

     resource confidentialVm 'Microsoft.Compute/virtualMachines@2021-11-01' = {
       name: vmName
       location: location
       identity:{
         type: 'SystemAssigned'
       }
       // other resource provider properties
     }