기밀 VM을 사용한 보안 키 릴리스 방법 가이드

아래 문서에서는 애플리케이션이 AMD SEV-SNP 기반 기밀 가상 머신으로 실행될 때 Azure Key Vault에서 보안 키 릴리스를 수행하는 방법을 설명합니다. 보안 키 릴리스 및 Azure 기밀 컴퓨팅에 대해 자세히 알아보려면 여기로 이동합니다.

SKR에서는 SKR을 수행하는 애플리케이션이 여기에 설명된 대로 MAA(Microsoft Azure Attestation)를 사용하여 원격 게스트 증명 흐름을 거쳐야 합니다.

전체 흐름 및 아키텍처

Azure Key Vault가 증명된 기밀 가상 머신에 대한 키를 해제하도록 허용하려면 따라야 하는 특정 단계가 있습니다.

  1. 기밀 가상 머신에 관리 ID를 할당합니다. 시스템이 할당한 관리 ID 또는 사용자가 할당한 관리 ID가 지원됩니다.
  2. Key Vault 액세스 정책을 설정하여 관리 ID에 "해제" 키 권한을 부여합니다. 정책은 기밀 가상 머신이 Key Vault에 액세스하고 릴리스 작업을 수행하도록 허용합니다. Key Vault 관리되는 HSM을 사용하는 경우 "관리되는 HSM 암호화 서비스 릴리스 사용자" 역할 멤버 자격을 할당합니다.
  3. 내보낼 수 있는 것으로 표시되고 연결된 릴리스 정책이 있는 Key Vault 키를 만듭니다. 키 릴리스 정책은 키를 증명된 기밀 가상 머신에 연결하고 키를 원하는 용도로만 사용할 수 있도록 합니다.
  4. 릴리스를 수행하려면 기밀 가상 머신에서 Key Vault로 HTTP 요청을 보냅니다. HTTP 요청에는 요청 본문에 기밀 VM 증명 플랫폼 보고서가 포함되어야 합니다. 증명된 플랫폼 보고서는 기밀 VM과 같은 신뢰할 수 있는 실행 환경 지원 플랫폼 상태의 신뢰성을 확인하는 데 사용됩니다. Microsoft Azure Attestation 서비스를 사용하여 증명된 플랫폼 보고서를 만들고 요청에 포함할 수 있습니다.

앞서 언급한 작업의 다이어그램으로, 수행할 작업입니다.

Azure Key Vault 배포

내보낼 수 있는 키로 AKV Premium 또는 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 배포" 방법에 대한 빠른 시작 지침을 따릅니다.

시스템이 할당한 관리 ID 사용

Azure 리소스의 관리 ID는 Microsoft Entra ID에서 자동으로 관리되는 ID를 Azure 서비스에 제공합니다. 이 ID를 사용하면 코드에 자격 증명이 없어도 Microsoft Entra 인증을 지원하는 모든 서비스에 인증할 수 있습니다.

CVM에서 시스템 할당 관리 ID를 사용하도록 설정하려면 계정에 가상 머신 기여자 역할 할당이 필요합니다. 다른 Microsoft Entra 디렉터리 역할 할당은 필요하지 않습니다.

  1. Azure에 로컬로 로그인하든지 또는 Azure Portal을 통해 로그인하든지 상관없이 VM을 포함하는 Azure 구독과 연결된 계정을 사용합니다.

  2. 시스템 할당 관리 ID를 사용하도록 설정하려면 템플릿을 편집기에 로드하고 관심 있는 Microsoft.Compute/virtualMachines 리소스를 찾은 다음 name: vmName 속성과 동일한 수준에서 "identity" 속성을 추가합니다. 다음 구문을 사용합니다.

       identity:{
         type: 'SystemAssigned'
       }
    
  3. 템플릿에 resource 세부 정보를 추가합니다.

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