연습 - 기존 VM 디스크 암호화

완료됨

신규 스타트업 기업을 위해 재무 관리 앱을 개발한다고 가정해 보겠습니다. 모든 고객 데이터가 안전하게 보호되는지 확인하려고 합니다. 따라서 이 앱을 호스팅하는 서버의 모든 OS 및 데이터 디스크에 ADE(Azure Disk Encryption)를 구현하기로 결정했습니다. 규정 준수 요구 사항의 일부로 고유한 암호화 키 관리도 담당해야 합니다.

이 단원에서는 기존 VM(가상 머신)에서 디스크를 암호화하고 고유한 Azure Key Vault를 사용하여 암호화 키를 관리합니다.

환경 준비

Azure VM에 새로운 Windows VM을 배포하는 것으로 시작합니다.

Windows VM 배포

새 Windows VM을 만들고 배포하려면 오른쪽에 있는 Azure PowerShell 창을 사용합니다.

  1. 선택한 위치를 저장하려면 PowerShell 변수를 정의합니다. 리소스 그룹과 동일한 지역을 사용합니다.

    $location = (Get-AzResourceGroup -name <rgn>[sandbox Resource Group]</rgn>).location
    

    복사 단추를 사용하여 클립보드에 명령을 복사할 수 있습니다. 붙여넣으려면 Cloud Shell 터미널에서 새 줄을 마우스 오른쪽 단추로 클릭하고 붙여넣기를 선택하거나 Shift+Insert 바로 가기 키(macOS의 경우 ⌘+V)를 사용합니다.

  2. 다음으로, 몇 가지 편리한 변수를 정의하여 VM의 이름리소스 그룹을 캡처합니다. 여기서는 미리 만들어진 리소스 그룹을 사용하고 있습니다. 일반적으로 New-AzResourceGroup을(를) 사용하여 구독에 리소스 그룹을 만듭니다.

    $vmName = "fmdata-vm01"
    $rgName = "<rgn>[sandbox Resource Group]</rgn>"
    
  3. 새 VM을 만들려면 New-AzVm을(를) 사용합니다.

    New-AzVm `
        -ResourceGroupName $rgName `
        -Name $vmName `
        -Location $location `
        -OpenPorts 3389
    

    Cloud Shell에서 메시지가 표시되면 VM의 사용자 이름과 암호를 입력합니다. 이 정보는 VM에 대한 초기 계정으로 사용됩니다.

    참고 항목

    많은 옵션을 제공하지 않았으므로 이 명령은 일부 기본값을 사용할 것입니다. 구체적으로, 크기가 Standard_DS1_v2로 설정된 Windows 2016 Server 이미지를 만듭니다. VM 크기를 지정하려는 경우 기본 계층 VM에서는 ADE를 지원하지 않습니다.

  4. VM 배포가 완료되면 VM 정보를 변수에 캡처합니다. 이 변수를 사용하면 사용자가 만든 내용을 탐색할 수 있습니다.

    $vm = Get-AzVM -Name $vmName -ResourceGroupName $rgName
    
  5. 다음 코드를 사용하면 VM에 연결된 OS 디스크를 확인할 수 있습니다.

    $vm.StorageProfile.OSDisk
    
    OsType                  : Windows
    EncryptionSettings      :
    Name                    : fmdata-vm01_OsDisk_1_6bcf8dcd49794aa785bad45221ec4433
    Vhd                     :
    Image                   :
    Caching                 : ReadWrite
    WriteAcceleratorEnabled :
    CreateOption            : FromImage
    DiskSizeGB              : 127
    ManagedDisk             : Microsoft.Azure.Management.Compute.Models.ManagedDiskP
                              arameters
    
  6. OS 디스크(및 데이터 디스크)에서 암호화의 현재 상태를 확인합니다.

    Get-AzVmDiskEncryptionStatus  `
        -ResourceGroupName $rgName `
        -VMName $vmName
    

    디스크가 현재 암호화되지 않은 것을 확인합니다.

    OsVolumeEncrypted          : NotEncrypted
    DataVolumesEncrypted       : NotEncrypted
    OsVolumeEncryptionSettings :
    ProgressMessage            : No Encryption extension or metadata found on the VM
    

변경을 시작해봅시다.

Azure Disk Encryption을 사용하여 VM 디스크 암호화

이 데이터를 보호해야 하므로 디스크를 암호화합니다. 수행해야 하는 일부 단계가 있습니다.

  1. 키 자격 증명 모음을 만듭니다.

  2. 키 자격 증명 모음을 설정하여 디스크 암호화를 지원합니다.

  3. 키 자격 증명 모음에서 저장된 키를 사용하여 VM 디스크를 암호화하도록 Azure에 알립니다.

각 단계를 개별적으로 살펴보겠지만, 사용자가 고유의 구독에서 이 작업을 수행하는 경우 이 모듈의 요약 섹션에 링크한 편리한 PowerShell 스크립트를 사용할 수 있습니다.

키 자격 증명 모음 만들기

Azure Key Vault를 만들려면 구독에서 서비스를 사용하도록 설정해야 합니다. 해당 서비스는 한 번만 사용하도록 설정하면 됩니다.

구독에 따라 Register-AzResourceProvider cmdlet을 사용하여 Microsoft.KeyVault 공급자를 사용하도록 설정할 수 있습니다. Azure 샌드박스 구독에서는 이 기능이 필요하지 않습니다.

  1. 새 키 자격 증명 모음의 이름을 지정합니다. 이름은 고유해야 하며 숫자, 영문자, 대시로 구성된 3-24자 사이이면 됩니다. 끝에 몇 가지 임의의 숫자를 추가하여 다음 1234를 바꿉니다.

    $keyVaultName = "mvmdsk-kv-1234"
    
  2. New-AzKeyVault를 사용하여 Azure Key Vault를 만듭니다.

    • VM과 동일한 리소스 그룹 위치에 배치했는지 확인합니다.
    • 디스크 암호화에 사용할 키 자격 증명 모음을 사용하도록 설정합니다.
    • 고유한 키 자격 증명 모음 이름을 지정합니다.
    New-AzKeyVault -VaultName $keyVaultName `
        -Location $location `
        -ResourceGroupName $rgName `
        -EnabledForDiskEncryption
    

    이 명령에서 액세스 권한이 없는 사용자에 대한 경고가 발생합니다.

    WARNING: Access policy is not set. No user or app have access permission to use this vault. This warning can occur if the vault was created by a service principal. To set access policies, use Set-AzKeyVaultAccessPolicy.
    

    VM의 암호화 키를 저장하는 데만 해당 자격 증명 모음을 사용하고 있으므로 경고는 정상적이며, 사용자는 이 데이터에 액세스할 필요가 없습니다.

디스크 암호화

디스크를 암호화할 준비가 거의 다 되었습니다. 암호화하기 전에 백업을 만들라는 경고가 여기에 표시됩니다.

Important

이것이 프로덕션 시스템이라면 Azure Backup을 사용하거나 스냅샷을 만들어서 관리 디스크의 백업을 수행해야 합니다. Azure Portal 또는 명령줄을 통해 스냅샷을 만들 수 있습니다. PowerShell에서는 New-AzSnapshot cmdlet을 사용합니다. 이 간단한 연습이 완료되면 데이터를 삭제할 예정이므로 이 단계는 건너뛰도록 하겠습니다.

  1. 키 자격 증명 모음 정보를 저장하려면 변수를 정의합니다.

    $keyVault = Get-AzKeyVault `
        -VaultName $keyVaultName `
        -ResourceGroupName $rgName
    
  2. 그런 다음, VM 디스크를 암호화하려면 Set-AzVmDiskEncryptionExtension cmdlet"을 실행합니다.

    • VolumeType 매개 변수를 사용하면 암호화할 디스크를 지정할 수 있습니다. [모두 | OS | 데이터] 기본값은 모두입니다. 일부 Linux 배포에 대한 데이터 디스크만 암호화할 수 있습니다.
    • 스냅샷이 없는 경우 관리 디스크에 SkipVmBackup 플래그를 제공할 수 있습니다.
    Set-AzVmDiskEncryptionExtension `
        -ResourceGroupName $rgName `
        -VMName $vmName `
        -VolumeType All `
        -DiskEncryptionKeyVaultId $keyVault.ResourceId `
        -DiskEncryptionKeyVaultUrl $keyVault.VaultUri `
        -SkipVmBackup
    
  3. 이 cmdlet은 VM을 오프라인으로 전환해야 하며, 작업을 완료하는 데 몇 분이 걸릴 수 있다는 경고를 표시합니다. 계속 진행합니다.

    Enable AzureDiskEncryption on the VM
    This cmdlet prepares the VM and enables encryption which may reboot the machine and takes 10-15 minutes to
    finish. Please save your work on the VM before confirming. Do you want to continue?
    [Y] Yes  [N] No  [S] Suspend  [?] Help (default is "Y"): Y
    
  4. cmdlet 실행이 완료되면 암호화 상태를 다시 확인합니다.

    Get-AzVmDiskEncryptionStatus  -ResourceGroupName $rgName -VMName $vmName
    

    이제 OS 디스크가 암호화되어야 합니다. Windows에서 볼 수 있는 모든 첨부 데이터 디스크도 암호화됩니다.

    OsVolumeEncrypted          : Encrypted
    DataVolumesEncrypted       : NoDiskFound
    OsVolumeEncryptionSettings : Microsoft.Azure.Management.Compute.Models.DiskEncryptionSettings
    ProgressMessage            : Provisioning succeeded
    

참고 항목

암호화를 자동으로 암호화하지 않으면 새 디스크가 추가됩니다. Set-AzVMDiskEncryptionExtension cmdlet을 다시 실행하여 새 디스크를 암호화할 수 있습니다. 이미 디스크가 암호화된 VM에 디스크를 추가하는 경우 새 번호를 순서대로 지정해야 합니다. 또한 운영 체제에 표시되지 않는 디스크는 암호화되지 않습니다. 디스크를 보려면 BitLocker 확장을 위해 디스크를 올바르게 분할, 포맷 및 탑재해야 합니다.