연습 - 기존 VM 디스크 암호화
신규 스타트업 기업을 위해 재무 관리 앱을 개발한다고 가정해 보겠습니다. 모든 고객 데이터가 안전하게 보호되는지 확인하려고 합니다. 따라서 이 앱을 호스팅하는 서버의 모든 OS 및 데이터 디스크에 ADE(Azure Disk Encryption)를 구현하기로 결정했습니다. 규정 준수 요구 사항의 일부로 고유한 암호화 키 관리도 담당해야 합니다.
이 단원에서는 기존 VM(가상 머신)에서 디스크를 암호화하고 고유한 Azure Key Vault를 사용하여 암호화 키를 관리합니다.
환경 준비
Azure VM에 새로운 Windows VM을 배포하는 것으로 시작합니다.
Windows VM 배포
새 Windows VM을 만들고 배포하려면 오른쪽에 있는 Azure PowerShell 창을 사용합니다.
선택한 위치를 저장하려면 PowerShell 변수를 정의합니다. 리소스 그룹과 동일한 지역을 사용합니다.
$location = (Get-AzResourceGroup -name <rgn>[sandbox Resource Group]</rgn>).location
팁
복사 단추를 사용하여 클립보드에 명령을 복사할 수 있습니다. 붙여넣으려면 Cloud Shell 터미널에서 새 줄을 마우스 오른쪽 단추로 클릭하고 붙여넣기를 선택하거나 Shift+Insert 바로 가기 키(macOS의 경우 ⌘+V)를 사용합니다.
다음으로, 몇 가지 편리한 변수를 정의하여 VM의 이름 및 리소스 그룹을 캡처합니다. 여기서는 미리 만들어진 리소스 그룹을 사용하고 있습니다. 일반적으로
New-AzResourceGroup
을(를) 사용하여 구독에 새 리소스 그룹을 만듭니다.$vmName = "fmdata-vm01" $rgName = "<rgn>[sandbox Resource Group]</rgn>"
새 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를 지원하지 않습니다.
VM 배포가 완료되면 VM 정보를 변수에 캡처합니다. 이 변수를 사용하면 사용자가 만든 내용을 탐색할 수 있습니다.
$vm = Get-AzVM -Name $vmName -ResourceGroupName $rgName
다음 코드를 사용하면 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
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 디스크 암호화
이 데이터를 보호해야 하므로 디스크를 암호화합니다. 수행해야 하는 일부 단계가 있습니다.
키 자격 증명 모음을 만듭니다.
키 자격 증명 모음을 설정하여 디스크 암호화를 지원합니다.
키 자격 증명 모음에서 저장된 키를 사용하여 VM 디스크를 암호화하도록 Azure에 알립니다.
팁
각 단계를 개별적으로 살펴보겠지만, 사용자가 고유의 구독에서 이 작업을 수행하는 경우 이 모듈의 요약 섹션에 링크한 편리한 PowerShell 스크립트를 사용할 수 있습니다.
키 자격 증명 모음 만들기
Azure Key Vault를 만들려면 구독에서 서비스를 사용하도록 설정해야 합니다. 해당 서비스는 한 번만 사용하도록 설정하면 됩니다.
팁
구독에 따라 Register-AzResourceProvider
cmdlet을 사용하여 Microsoft.KeyVault 공급자를 사용하도록 설정할 수 있습니다. Azure 샌드박스 구독에서는 이 기능이 필요하지 않습니다.
새 키 자격 증명 모음의 이름을 지정합니다. 이름은 고유해야 하며 숫자, 영문자, 대시로 구성된 3-24자 사이이면 됩니다. 끝에 몇 가지 임의의 숫자를 추가하여 다음 1234를 바꿉니다.
$keyVaultName = "mvmdsk-kv-1234"
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을 사용합니다. 이 간단한 연습이 완료되면 데이터를 삭제할 예정이므로 이 단계는 건너뛰도록 하겠습니다.
키 자격 증명 모음 정보를 저장하려면 변수를 정의합니다.
$keyVault = Get-AzKeyVault ` -VaultName $keyVaultName ` -ResourceGroupName $rgName
그런 다음, VM 디스크를 암호화하려면
Set-AzVmDiskEncryptionExtension
cmdlet"을 실행합니다.VolumeType
매개 변수를 사용하면 암호화할 디스크를 지정할 수 있습니다. [모두 | OS | 데이터] 기본값은 모두입니다. 일부 Linux 배포에 대한 데이터 디스크만 암호화할 수 있습니다.- 스냅샷이 없는 경우 관리 디스크에
SkipVmBackup
플래그를 제공할 수 있습니다.
Set-AzVmDiskEncryptionExtension ` -ResourceGroupName $rgName ` -VMName $vmName ` -VolumeType All ` -DiskEncryptionKeyVaultId $keyVault.ResourceId ` -DiskEncryptionKeyVaultUrl $keyVault.VaultUri ` -SkipVmBackup
이 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
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 확장을 위해 디스크를 올바르게 분할, 포맷 및 탑재해야 합니다.