Linux VM용 Microsoft Entra ID(이전 릴리스)를 사용하여 Azure Disk Encryption을 위한 키 자격 증명 모음 만들기 및 구성

적용 대상: ✔️ Linux VM ✔️ 유연한 확장 집합

Azure Disk Encryption의 새 릴리스에서는 VM 디스크 암호화를 사용하도록 설정하는 Microsoft Entra 애플리케이션 매개 변수를 제공하기 위한 요구 사항을 제거합니다. 새 릴리스를 사용하면 암호화 단계를 사용하는 동안 더 이상 Microsoft Entra 자격 증명을 제공할 필요가 없습니다. 모든 새 VM은 새 릴리스를 사용하여 Microsoft Entra 애플리케이션 매개 변수 없이 암호화되어야 합니다. 새 릴리스를 사용하여 VM 디스크 암호화를 설정하는 지침을 보려면 Azure Disk Encryption을 참조하세요. Microsoft Entra 애플리케이션 매개 변수를 사용하여 이미 암호화된 VM도 여전히 지원되며 Microsoft Entra 구문을 사용하여 계속 유지 관리되어야 합니다.

Azure Disk Encryption은 Azure Key Vault를 사용하여 키 디스크 암호화 키와 비밀을 제어하고 관리합니다. 키 자격 증명 모음에 대한 자세한 내용은 Azure Key Vault 시작키 자격 증명 모음 보안을 참조하세요.

Microsoft Entra ID(이전 릴리스)에서 Azure Disk Encryption과 함께 사용할 키 자격 증명 모음을 만들고 구성하는 과정은 다음 세 단계로 구성됩니다.

  1. 키 자격 증명 모음을 생성합니다.
  2. Microsoft Entra 애플리케이션과 서비스 주체를 설정합니다.
  3. Microsoft Entra 앱에 대한 키 자격 증명 모음 액세스 정책을 설정합니다.
  4. Key Vault에 대한 고급 액세스 정책을 설정합니다.

원할 경우 KEK(키 암호화 키)를 생성하거나 가져올 수도 있습니다.

도구를 설치하고 Azure에 연결하는 방법에 대한 단계는 기본 Azure Disk Encryption에 대한 키 자격 증명 모음 만들기 및 구성 문서를 참조하세요.

키 자격 증명 모음 만들기

Azure Disk Encryption은 Azure Key Vault와 통합되어 키 자격 증명 모음 구독에서 디스크 암호화 키 및 비밀을 제어하고 관리할 수 있습니다. Azure Disk Encryption에 대한 키 자격 증명 모음을 만들거나 기존 키 자격 증명 모음을 사용할 수 있습니다. 키 자격 증명 모음에 대한 자세한 내용은 Azure Key Vault 시작키 자격 증명 모음 보안을 참조하세요. Resource Manager 템플릿, Azure PowerShell 또는 Azure CLI를 사용하여 키 자격 증명 모음을 만들 수 있습니다.

Warning

암호화 비밀이 지역 경계를 넘지 않도록 하려면 Azure Disk Encryption에서 Key Vault와 VM을 동일한 지역에 공동 배치해야 합니다. 암호화할 VM과 동일한 지역에 있는 Key Vault를 만들고 사용합니다.

PowerShell을 사용하여 키 자격 증명 모음 만들기

New-AzKeyVault cmdlet을 사용하여 Azure PowerShell을 통해 키 자격 증명 모음을 만들 수 있습니다. Key Vault에 대한 추가 cmdlet은 Az.KeyVault를 참조하세요.

  1. 필요한 경우 New-AzResourceGroup을 사용하여 새 리소스 그룹을 만듭니다. 데이터 센터 위치를 나열하려면 Get-AzLocation을 사용합니다.

    # Get-AzLocation
    New-AzResourceGroup –Name 'MyKeyVaultResourceGroup' –Location 'East US'
    
  2. New-AzKeyVault를 사용하여 새 키 자격 증명 모음을 만듭니다.

    New-AzKeyVault -VaultName 'MySecureVault' -ResourceGroupName 'MyKeyVaultResourceGroup' -Location 'East US'
    
  3. 나중에 디스크를 암호화할 때 사용하기 위해 반환되는 자격 증명 모음 이름, 리소스 그룹 이름, 리소스 ID, 자격 증명 모음 URI개체 ID를 적어 둡니다.

Azure CLI를 사용하여 키 자격 증명 모음 만들기

az keyvault 명령을 사용하여 Azure CLI를 통해 키 자격 증명 모음을 관리할 수 있습니다. 키 자격 증명 모음을 만들려면 az keyvault create를 사용합니다.

  1. 필요한 경우 az group create를 사용하여 새 리소스 그룹을 만듭니다. 위치를 나열하려면 az account list-locations를 사용합니다.

    # To list locations: az account list-locations --output table
    az group create -n "MyKeyVaultResourceGroup" -l "East US"
    
  2. az keyvault create를 사용하여 새 키 자격 증명 모음을 만듭니다.

    az keyvault create --name "MySecureVault" --resource-group "MyKeyVaultResourceGroup" --location "East US"
    
  3. 나중에 사용하기 위해 반환되는 자격 증명 모음 이름(name), 리소스 그룹 이름, 리소스 ID(ID), 자격 증명 모음 URI개체 ID를 적어 둡니다.

Resource Manager 템플릿을 사용하여 키 자격 증명 모음 만들기

Resource Manager 템플릿을 사용하여 키 자격 증명 모음을 만들 수 있습니다.

  1. Azure 빠른 시작 템플릿에서 Azure에 배포를 선택합니다.
  2. 구독, 리소스 그룹, 리소스 그룹 위치, Key Vault 이름, 개체 ID, 약관 및 규약을 선택한 다음, 구매를 선택합니다.

Microsoft Entra 앱과 서비스 주체 설정

Azure에서 실행 중인 VM에서 암호화를 사용하도록 설정해야 하는 경우 Azure Disk Encryption이 암호화 키를 생성하고 Key Vault에 기록합니다. 키 자격 증명 모음에서 암호화 키를 관리하려면 Microsoft Entra 인증이 필요합니다. 이 목적을 위해 Microsoft Entra 애플리케이션을 만듭니다. 인증을 위해 클라이언트 암호 기반 인증 또는 클라이언트 인증서 기반 Microsoft Entra 인증을 사용할 수 있습니다.

Azure PowerShell을 사용하여 Microsoft Entra 앱 및 서비스 주체 설정

다음 명령을 실행하려면 Azure PowerShell 모듈을 가져와 사용합니다.

  1. New-AzADApplication PowerShell cmdlet을 사용하여 Microsoft Entra 애플리케이션을 만듭니다. MyApplicationHomePage 및 MyApplicationUri는 원하는 값이 될 수 있습니다.

    $aadClientSecret = "My AAD client secret"
    $aadClientSecretSec = ConvertTo-SecureString -String $aadClientSecret -AsPlainText -Force
    $azureAdApplication = New-AzADApplication -DisplayName "My Application Display Name" -HomePage "https://MyApplicationHomePage" -IdentifierUris "https://MyApplicationUri" -Password $aadClientSecretSec
    $servicePrincipal = New-AzADServicePrincipal –ApplicationId $azureAdApplication.ApplicationId -Role Contributor
    
  2. $azureAdApplication.ApplicationId는 Microsoft Entra ClientID이고, $aadClientSecret은 나중에 Azure Disk Encryption을 사용하도록 설정하는 데 사용할 클라이언트 암호입니다. Microsoft Entra 클라이언트 암호를 적절하게 보호합니다. $azureAdApplication.ApplicationId를 실행하면 ApplicationID가 표시됩니다.

Azure CLI를 사용하여 Microsoft Entra 앱 및 서비스 주체 설정

az ad sp 명령을 사용하여 Azure CLI를 통해 서비스 주체를 관리할 수 있습니다. 자세한 내용은 Azure 서비스 주체 만들기를 참조하세요.

  1. 새 서비스 주체를 만듭니다.

    az ad sp create-for-rbac --name "ServicePrincipalName" --password "My-AAD-client-secret" --role Contributor --scopes /subscriptions/<subscription_id>
    
  2. 반환된 appId는 다른 명령에 사용되는 Microsoft Entra ClientID입니다. az keyvault set-policy에 사용할 SPN이기도 합니다. 암호는 나중에 Azure Disk Encryption을 사용하도록 설정하는 데 사용해야 하는 클라이언트 비밀입니다. Microsoft Entra 클라이언트 암호를 적절하게 보호합니다.

Azure Portal을 통해 Microsoft Entra 앱 및 서비스 주체 설정

포털을 사용하여 리소스에 액세스할 수 있는 Microsoft Entra 애플리케이션 및 서비스 주체 만들기 문서의 단계를 사용하여 Microsoft Entra 애플리케이션을 만듭니다. 아래에 나열된 각 단계는 수행할 문서 섹션으로 바로 이동합니다.

  1. 필요한 권한 확인
  2. Microsoft Entra 애플리케이션 만들기
    • 애플리케이션을 만들 때 원하는 이름과 로그온 URL을 사용할 수 있습니다.
  3. 애플리케이션 ID 및 인증 키 가져오기
    • 인증 키는 클라이언트 암호이며, Set-AzVMDiskEncryptionExtension에 대한 AadClientSecret로 사용됩니다.
      • 인증 키는 애플리케이션에서 자격 증명으로 Microsoft Entra ID에 로그인하는 데 사용됩니다. Azure Portal에서 이 비밀은 키라고 하지만, 키 자격 증명 모음과는 아무런 관련이 없습니다. 이 비밀을 적절하게 보호하세요.
    • 애플리케이션 ID는 나중에 Set-AzVMDiskEncryptionExtension에 대한 AadClientId 및 Set-AzKeyVaultAccessPolicy에 대한 ServicePrincipalName으로 사용됩니다.

Microsoft Entra 앱에 대한 키 자격 증명 모음 액세스 정책 설정

지정된 Key Vault에 암호화 비밀을 쓰려면 Key Vault에 비밀을 쓸 수 있는 권한이 있는 Microsoft Entra 애플리케이션의 클라이언트 ID와 클라이언트 암호가 Azure Disk Encryption에 필요합니다.

참고 항목

Azure Disk Encryption을 사용하려면 Microsoft Entra 클라이언트 응용 프로그램에 대해 WrapKey 및 권한 설정 액세스 정책을 구성해야 합니다.

Azure PowerShell을 사용하여 Microsoft Entra 앱에 대한 키 자격 증명 모음 액세스 정책 설정

Microsoft Entra 애플리케이션에는 자격 증명 모음의 키 또는 비밀에 액세스할 수 있는 권한이 필요합니다. –ServicePrincipalName 매개 변수 값으로 클라이언트 ID(애플리케이션이 등록될 때 생성됨)를 사용하여 Set-AzKeyVaultAccessPolicy cmdlet으로 애플리케이션에 권한을 부여합니다. 자세한 내용은 블로그 게시물 Azure Key Vault - 단계별을 참조하세요.

  1. PowerShell을 사용하여 AD 애플리케이션에 대한 키 자격 증명 모음 액세스 정책을 설정합니다.

    $keyVaultName = 'MySecureVault'
    $aadClientID = 'MyAadAppClientID'
    $KVRGname = 'MyKeyVaultResourceGroup'
    Set-AzKeyVaultAccessPolicy -VaultName $keyVaultName -ServicePrincipalName $aadClientID -PermissionsToKeys 'WrapKey' -PermissionsToSecrets 'Set' -ResourceGroupName $KVRGname
    

Azure CLI를 사용하여 Microsoft Entra 앱에 대한 키 자격 증명 모음 액세스 정책 설정

az keyvault set-policy를 사용하여 액세스 정책을 설정합니다. 자세한 내용은 CLI 2.0을 사용하여 Key Vault 관리를 참조하세요.

다음 명령을 사용하여 비밀 및 래핑 키를 가져오려면 Azure CLI 액세스를 통해 만든 서비스 주체에게 액세스 권한을 부여합니다.

az keyvault set-policy --name "MySecureVault" --spn "<spn created with CLI/the Azure AD ClientID>" --key-permissions wrapKey --secret-permissions set

포털을 사용하여 Microsoft Entra 앱에 대한 키 자격 증명 모음 액세스 정책 설정

  1. 키 자격 증명 모음을 사용하여 리소스 그룹을 엽니다.
  2. Key Vault를 선택하고, 액세스 정책으로 이동한 다음, 새로 추가를 선택합니다.
  3. 보안 주체 선택 아래에서 사용자가 만든 Microsoft Entra 애플리케이션을 검색하여 선택합니다.
  4. 키 권한에 대해 암호화 작업 아래에서 키 래핑을 선택합니다.
  5. 비밀 권한에 대해 비밀 관리 작업 아래에서 설정을 선택합니다.
  6. 확인을 선택하여 액세스 정책을 저장합니다.

Azure Key Vault cryptographic operations - Wrap Key

Azure Key Vault Secret permissions - Set

Key Vault 고급 액세스 정책 설정

Azure 플랫폼은 VM을 부팅하고 볼륨을 해독할 수 있도록 Key Vault의 암호화 키 또는 비밀에 액세스해야 합니다. 키 자격 증명 모음에서 디스크 암호화를 사용하도록 설정하지 않으면 배포가 실패합니다.

Azure PowerShell을 사용하여 키 자격 증명 모음에 대한 고급 액세스 정책 설정

Set-AzKeyVaultAccessPolicy 키 자격 증명 모음 PowerShell cmdlet을 사용하여 키 자격 증명 모음에 대한 디스크 암호화를 사용하도록 설정합니다.

  • 디스크 암호화에 Key Vault 사용: Azure Disk Encryption에 EnabledForDiskEncryption이 필요합니다.

    Set-AzKeyVaultAccessPolicy -VaultName 'MySecureVault' -ResourceGroupName 'MyKeyVaultResourceGroup' -EnabledForDiskEncryption
    
  • 필요한 경우 배포에 Key Vault 사용: 이 Key Vault가 리소스를 만들 때(예: 가상 머신 만들기) 참조되는 경우 Microsoft. Compute 리소스 공급자에서 이 Key Vault로부터 비밀을 검색할 수 있도록 합니다.

     Set-AzKeyVaultAccessPolicy -VaultName 'MySecureVault' -ResourceGroupName 'MyKeyVaultResourceGroup' -EnabledForDeployment
    
  • 필요한 경우 템플릿 배포에 Key Vault 사용: 이 키 자격 증명 모음이 템플릿 배포에서 참조되는 경우 Azure Resource Manager에서 이 키 자격 증명 모음으로부터 비밀을 가져올 수 있도록 합니다.

    Set-AzKeyVaultAccessPolicy -VaultName 'MySecureVault' -ResourceGroupName 'MyKeyVaultResourceGroup' -EnabledForTemplateDeployment
    

Azure CLI를 사용하여 키 자격 증명 모음에 대한 고급 액세스 정책 설정

az keyvault update를 사용하여 키 자격 증명 모음에 대한 디스크 암호화를 사용하도록 설정합니다.

  • 디스크 암호화에 Key Vault 사용: Enabled-for-disk-encryption이 필요합니다.

    az keyvault update --name "MySecureVault" --resource-group "MyKeyVaultResourceGroup" --enabled-for-disk-encryption "true"
    
  • 필요한 경우 배포에 Key Vault 사용: Virtual Machines에서 자격 증명 모음으로부터 비밀로 저장된 인증서를 검색할 수 있도록 허용합니다.

    az keyvault update --name "MySecureVault" --resource-group "MyKeyVaultResourceGroup" --enabled-for-deployment "true"
    
  • 필요한 경우 템플릿 배포에 Key Vault 사용: Resource Manager에서 자격 증명 모음으로부터 비밀을 검색할 수 있도록 허용합니다.

    az keyvault update --name "MySecureVault" --resource-group "MyKeyVaultResourceGroup" --enabled-for-template-deployment "true"
    

Azure Portal을 통해 키 자격 증명 모음에 대한 고급 액세스 정책 설정

  1. 키 자격 증명 모음을 선택하고, 액세스 정책, 클릭하여 고급 액세스 정책 표시로 차례로 이동합니다.
  2. 볼륨 암호화를 위해 Azure Disk Encryption에 대한 액세스 사용이라는 레이블이 있는 상자를 선택합니다.
  3. 필요한 경우 배포를 위해 Azure Virtual Machines에 대한 액세스 사용 및/또는 템플릿 배포를 위해 Azure Resource Manager에 대한 액세스 사용을 선택합니다.
  4. 저장을 선택합니다.

Azure key vault advanced access policies

주요 암호화 키 설정(선택 사항)

암호화 키에 대한 추가 보안 계층에 KEK(키 암호화 키)를 사용하려면 키 자격 증명 모음에 KEK를 추가합니다. Add-AzKeyVaultKey cmdlet을 사용하여 키 자격 증명 모음에 키 암호화 키를 만듭니다. 또한 온-프레미스 키 관리 HSM에서 KEK를 가져올 수도 있습니다. 자세한 내용은 Key Vault 설명서를 참조하세요. 키 암호화 키가 지정되면 Azure Disk Encryption에서 해당 키를 사용하여 Key Vault에 쓰기 전에 암호화 비밀을 래핑합니다.

Azure PowerShell을 사용하여 키 암호화 키 설정

PowerShell 스크립트를 사용하기 전에 스크립트의 단계를 이해할 수 있도록 Azure Disk Encryption 필수 구성 요소를 잘 알고 있어야 합니다. 샘플 스크립트는 사용자 환경에 맞게 변경해야 할 수도 있습니다. 이 스크립트는 모든 Azure Disk Encryption 필수 구성 요소를 만들고, 기존 IaaS VM을 암호화하여 키 암호화 키로 디스크 암호화 키를 래핑합니다.

# Step 1: Create a new resource group and key vault in the same location.
	 # Fill in 'MyLocation', 'MyKeyVaultResourceGroup', and 'MySecureVault' with your values.
	 # Use Get-AzLocation to get available locations and use the DisplayName.
	 # To use an existing resource group, comment out the line for New-AzResourceGroup

    $Loc = 'MyLocation';
    $KVRGname = 'MyKeyVaultResourceGroup';
    $KeyVaultName = 'MySecureVault';
    New-AzResourceGroup –Name  $KVRGname –Location $Loc;
    New-AzKeyVault -VaultName $KeyVaultName -ResourceGroupName $KVRGname -Location $Loc;
    $KeyVault = Get-AzKeyVault -VaultName $KeyVaultName -ResourceGroupName  $KVRGname;
    $KeyVaultResourceId = (Get-AzKeyVault -VaultName $KeyVaultName -ResourceGroupName  $KVRGname).ResourceId;
    $diskEncryptionKeyVaultUrl = (Get-AzKeyVault -VaultName $KeyVaultName -ResourceGroupName  $KVRGname).VaultUri;

# Step 2: Create the AD application and service principal.
	 # Fill in 'MyAADClientSecret', "<My Application Display Name>", "<https://MyApplicationHomePage>", and "<https://MyApplicationUri>" with your values.
	 # MyApplicationHomePage and the MyApplicationUri can be any values you wish.

	 $aadClientSecret =  'MyAADClientSecret';
    $aadClientSecretSec = ConvertTo-SecureString -String $aadClientSecret -AsPlainText -Force;
    $azureAdApplication = New-AzADApplication -DisplayName "<My Application Display Name>" -HomePage "<https://MyApplicationHomePage>" -IdentifierUris "<https://MyApplicationUri>" -Password $aadClientSecretSec
    $servicePrincipal = New-AzADServicePrincipal –ApplicationId $azureAdApplication.ApplicationId -Role Contributor;
    $aadClientID = $azureAdApplication.ApplicationId;

#Step 3: Enable the vault for disk encryption and set the access policy for the Microsoft Entra application.

	 Set-AzKeyVaultAccessPolicy -VaultName $KeyVaultName -ResourceGroupName $KVRGname -EnabledForDiskEncryption;
    Set-AzKeyVaultAccessPolicy -VaultName $keyVaultName -ServicePrincipalName $aadClientID -PermissionsToKeys 'WrapKey' -PermissionsToSecrets 'Set' -ResourceGroupName  $KVRGname;

#Step 4: Create a new key in the key vault with the Add-AzKeyVaultKey cmdlet.
	 # Fill in 'MyKeyEncryptionKey' with your value.

	 $keyEncryptionKeyName = 'MyKeyEncryptionKey';
    Add-AzKeyVaultKey -VaultName $KeyVaultName -Name $keyEncryptionKeyName -Destination 'Software';
    $keyEncryptionKeyUrl = (Get-AzKeyVaultKey -VaultName $KeyVaultName -Name $keyEncryptionKeyName).Key.kid;

#Step 5: Encrypt the disks of an existing IaaS VM
	 # Fill in 'MySecureVM' and 'MyVirtualMachineResourceGroup' with your values.

	 $VMName = 'MySecureVM';
     $VMRGName = 'MyVirtualMachineResourceGroup';
    Set-AzVMDiskEncryptionExtension -ResourceGroupName $VMRGName -VMName $vmName -AadClientID $aadClientID -AadClientSecret $aadClientSecret -DiskEncryptionKeyVaultUrl $diskEncryptionKeyVaultUrl -DiskEncryptionKeyVaultId $KeyVaultResourceId -KeyEncryptionKeyUrl $keyEncryptionKeyUrl -KeyEncryptionKeyVaultId $KeyVaultResourceId;

인증서 기반 인증(선택 사항)

인증서 인증을 사용하려면 키 자격 증명 모음에 인증서를 업로드하고 이 인증서를 클라이언트에 배포할 수 있습니다. PowerShell 스크립트를 사용하기 전에 스크립트의 단계를 이해할 수 있도록 Azure Disk Encryption 필수 구성 요소를 잘 알고 있어야 합니다. 샘플 스크립트는 사용자 환경에 맞게 변경해야 할 수도 있습니다.


# Fill in "MyKeyVaultResourceGroup", "MySecureVault", and 'MyLocation' ('My location' only if needed)

  $KVRGname = 'MyKeyVaultResourceGroup'
  $KeyVaultName= 'MySecureVault'

  # Create a key vault and set enabledForDiskEncryption property on it.
  # Comment out the next three lines if you already have an existing key vault enabled for encryption. No need to set 'My location' in this case.

  $Loc = 'MyLocation'
  New-AzKeyVault -VaultName $KeyVaultName -ResourceGroupName $KVRGname -Location $Loc
  Set-AzKeyVaultAccessPolicy -VaultName $KeyVaultName -ResourceGroupName $KVRGname -EnabledForDiskEncryption

  #Setting some variables with the key vault information
  $KeyVault = Get-AzKeyVault -VaultName $KeyVaultName -ResourceGroupName $KVRGname
  $DiskEncryptionKeyVaultUrl = $KeyVault.VaultUri
  $KeyVaultResourceId = $KeyVault.ResourceId

  # Create the Microsoft Entra application and associate the certificate with it.
  # Fill in "C:\certificates\mycert.pfx", "Password", "<My Application Display Name>", "<https://MyApplicationHomePage>", and "<https://MyApplicationUri>" with your values.
  # MyApplicationHomePage and the MyApplicationUri can be any values you wish

  $CertPath = "C:\certificates\mycert.pfx"
  $CertPassword = "Password"
  $Cert = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2($CertPath, $CertPassword)
  $CertValue = [System.Convert]::ToBase64String($cert.GetRawCertData())

  $AzureAdApplication = New-AzADApplication -DisplayName "<My Application Display Name>" -HomePage "<https://MyApplicationHomePage>" -IdentifierUris "<https://MyApplicationUri>" -CertValue $CertValue
  $ServicePrincipal = New-AzADServicePrincipal -ApplicationId $AzureAdApplication.ApplicationId -Role Contributor

  $AADClientID = $AzureAdApplication.ApplicationId
  $aadClientCertThumbprint= $cert.Thumbprint

  Set-AzKeyVaultAccessPolicy -VaultName $keyVaultName -ServicePrincipalName $aadClientID -PermissionsToKeys 'WrapKey' -PermissionsToSecrets 'Set' -ResourceGroupName $KVRGname

  # Upload the pfx file to the key vault.
  # Fill in "MyAADCert".

  $KeyVaultSecretName = "MyAADCert"
  $FileContentBytes = get-content $CertPath -Encoding Byte
  $FileContentEncoded = [System.Convert]::ToBase64String($fileContentBytes)
          $JSONObject = @"
          {
              "data" : "$filecontentencoded",
              "dataType" : "pfx",
              "password" : "$CertPassword"
          }
"@

  $JSONObjectBytes = [System.Text.Encoding]::UTF8.GetBytes($jsonObject)
  $JSONEncoded = [System.Convert]::ToBase64String($jsonObjectBytes)

  #Set the secret and set the key vault policy for -EnabledForDeployment

  $Secret = ConvertTo-SecureString -String $JSONEncoded -AsPlainText -Force
  Set-AzKeyVaultSecret -VaultName $KeyVaultName -Name $KeyVaultSecretName -SecretValue $Secret
  Set-AzKeyVaultAccessPolicy -VaultName $KeyVaultName -ResourceGroupName $KVRGname -EnabledForDeployment

  # Deploy the certificate to the VM
  # Fill in 'MySecureVM' and 'MyVirtualMachineResourceGroup' with your values.

  $VMName = 'MySecureVM'
  $VMRGName = 'MyVirtualMachineResourceGroup'
  $CertUrl = (Get-AzKeyVaultSecret -VaultName $KeyVaultName -Name $KeyVaultSecretName).Id
  $SourceVaultId = (Get-AzKeyVault -VaultName $KeyVaultName -ResourceGroupName $KVRGName).ResourceId
  $VM = Get-AzVM -ResourceGroupName $VMRGName -Name $VMName
  $VM = Add-AzVMSecret -VM $VM -SourceVaultId $SourceVaultId -CertificateStore "My" -CertificateUrl $CertUrl
  Update-AzVM -VM $VM -ResourceGroupName $VMRGName

  #Enable encryption on the VM using Microsoft Entra client ID and the client certificate thumbprint

  Set-AzVMDiskEncryptionExtension -ResourceGroupName $VMRGName -VMName $VMName -AadClientID $AADClientID -AadClientCertThumbprint $AADClientCertThumbprint -DiskEncryptionKeyVaultUrl $DiskEncryptionKeyVaultUrl -DiskEncryptionKeyVaultId $KeyVaultResourceId

인증서 기반 인증 및 KEK(선택 사항)

인증서 인증을 사용하고 KEK로 암호화 키를 래핑하려면 아래 스크립트를 예로 사용할 수 있습니다. PowerShell 스크립트를 사용하기 전에 스크립트의 단계를 이해할 수 있도록 이전의 Azure Disk Encryption 필수 구성 요소를 모두 잘 알고 있어야 합니다. 샘플 스크립트는 사용자 환경에 맞게 변경해야 할 수도 있습니다.

Important

Microsoft Entra 인증서 기반 인증은 현재 Linux VM에서 지원되지 않습니다.

# Fill in 'MyKeyVaultResourceGroup', 'MySecureVault', and 'MyLocation' (if needed)

   $KVRGname = 'MyKeyVaultResourceGroup'
   $KeyVaultName= 'MySecureVault'

   # Create a key vault and set enabledForDiskEncryption property on it.
   # Comment out the next three lines if you already have an existing key vault enabled for encryption.

   $Loc = 'MyLocation'
   New-AzKeyVault -VaultName $KeyVaultName -ResourceGroupName $KVRGname -Location $Loc
   Set-AzKeyVaultAccessPolicy -VaultName $KeyVaultName -ResourceGroupName $KVRGname -EnabledForDiskEncryption

   # Create the Azure AD application and associate the certificate with it.
   # Fill in "C:\certificates\mycert.pfx", "Password", "<My Application Display Name>", "<https://MyApplicationHomePage>", and "<https://MyApplicationUri>" with your values.
   # MyApplicationHomePage and the MyApplicationUri can be any values you wish

   $CertPath = "C:\certificates\mycert.pfx"
   $CertPassword = "Password"
   $Cert = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2($CertPath, $CertPassword)
   $CertValue = [System.Convert]::ToBase64String($cert.GetRawCertData())

   $AzureAdApplication = New-AzADApplication -DisplayName "<My Application Display Name>" -HomePage "<https://MyApplicationHomePage>" -IdentifierUris "<https://MyApplicationUri>" -CertValue $CertValue
   $ServicePrincipal = New-AzADServicePrincipal -ApplicationId $AzureAdApplication.ApplicationId -Role Contributor

   $AADClientID = $AzureAdApplication.ApplicationId
   $aadClientCertThumbprint= $cert.Thumbprint

   ## Give access for setting secrets and wraping keys
   Set-AzKeyVaultAccessPolicy -VaultName $keyVaultName -ServicePrincipalName $aadClientID -PermissionsToKeys 'WrapKey' -PermissionsToSecrets 'Set' -ResourceGroupName $KVRGname

   # Upload the pfx file to the key vault.
   # Fill in "MyAADCert".

   $KeyVaultSecretName = "MyAADCert"
   $FileContentBytes = get-content $CertPath -Encoding Byte
   $FileContentEncoded = [System.Convert]::ToBase64String($fileContentBytes)
           $JSONObject = @"
           {
               "data" : "$filecontentencoded",
               "dataType" : "pfx",
               "password" : "$CertPassword"
           }
"@

   $JSONObjectBytes = [System.Text.Encoding]::UTF8.GetBytes($jsonObject)
   $JSONEncoded = [System.Convert]::ToBase64String($jsonObjectBytes)

   #Set the secret and set the key vault policy for deployment

   $Secret = ConvertTo-SecureString -String $JSONEncoded -AsPlainText -Force
   Set-AzKeyVaultSecret -VaultName $KeyVaultName -Name $KeyVaultSecretName -SecretValue $Secret
   Set-AzKeyVaultAccessPolicy -VaultName $KeyVaultName -ResourceGroupName $KVRGname -EnabledForDeployment

   #Setting some variables with the key vault information and generating a KEK
   # FIll in 'KEKName'

   $KEKName ='KEKName'
   $KeyVault = Get-AzKeyVault -VaultName $KeyVaultName -ResourceGroupName $KVRGname
   $DiskEncryptionKeyVaultUrl = $KeyVault.VaultUri
   $KeyVaultResourceId = $KeyVault.ResourceId
   $KEK = Add-AzKeyVaultKey -VaultName $KeyVaultName -Name $KEKName -Destination "Software"
   $KeyEncryptionKeyUrl = $KEK.Key.kid



   # Deploy the certificate to the VM
   # Fill in 'MySecureVM' and 'MyVirtualMachineResourceGroup' with your values.

   $VMName = 'MySecureVM';
   $VMRGName = 'MyVirtualMachineResourceGroup';
   $CertUrl = (Get-AzKeyVaultSecret -VaultName $KeyVaultName -Name $KeyVaultSecretName).Id
   $SourceVaultId = (Get-AzKeyVault -VaultName $KeyVaultName -ResourceGroupName $KVRGName).ResourceId
   $VM = Get-AzVM -ResourceGroupName $VMRGName -Name $VMName
   $VM = Add-AzVMSecret -VM $VM -SourceVaultId $SourceVaultId -CertificateStore "My" -CertificateUrl $CertUrl
   Update-AzVM -VM $VM -ResourceGroupName $VMRGName

   #Enable encryption on the VM using Azure AD client ID and the client certificate thumbprint

   Set-AzVMDiskEncryptionExtension -ResourceGroupName $VMRGName -VMName $VMName -AadClientID $AADClientID -AadClientCertThumbprint $AADClientCertThumbprint -DiskEncryptionKeyVaultUrl $DiskEncryptionKeyVaultUrl -DiskEncryptionKeyVaultId $KeyVaultResourceId -KeyEncryptionKeyUrl $keyEncryptionKeyUrl -KeyEncryptionKeyVaultId $KeyVaultResourceId

다음 단계

Linux VM에서 Microsoft Entra ID로 Azure Disk Encryption 사용(이전 릴리스)