Linux VM에 대한 Azure Disk Encryption 시나리오

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

Linux 가상 머신(VM)용 Azure Disk Encryption은 Linux의 DM-Crypt 기능을 활용하여 OS 디스크 및 데이터 디스크의 전체 디스크 암호화를 제공합니다. 또한, EncryptFormatAll 기능을 이용하는 경우에는 임시 디스크의 암호화를 제공합니다.

Azure Disk Encryption은 Azure Key Vault와 통합되어 디스크 암호화 키와 비밀을 제어하고 관리하는 작업을 지원합니다. 서비스에 관한 개요는 Linux VM용 Azure 디스크 암호화를 참고하세요.

필수 조건

디스크 암호화는 지원되는 VM 크기와 운영 체제의 가상 머신에만 적용될 수 있습니다. 또한 아래와 같은 필수적인 조건도 충족해야 합니다.

모든 경우에서 스냅샷을 만들거나 또는 디스크를 암호화하기 전에 백업을 만들어야 합니다. 백업은 암호화 도중에 예기치 않은 오류가 발생할 경우 복구 옵션을 사용할 수 있습니다. 암호화가 수행되기 전에 관리 디스크가 있는 VM은 백업해야 합니다. 백업이 완료되면 Set-AzVMDiskEncryptionExtension cmdlet을 사용하여 -skipVmBackup 매개 변수를 지정함으로써 관리 디스크를 암호화할 수 있습니다. 암호화된 VM을 백업하고 복원하는 방법에 대한 자세한 내용은 Azure Backup 문서를 참조하세요.

제한 사항

이전에 VM을 암호화하기 위하여 Microsoft Entra ID에서 Azure 디스크 암호화를 사용한 적이 있다면 VM을 암호화할 때 이 옵션을 계속 사용하여야 합니다. 상세 정보는 Microsoft Entra ID(이전 릴리스)를 포함한 Azure 디스크 암호화를 참고하세요.

Linux OS 볼륨을 암호화하는 경우, VM은 사용할 수 없는 것으로 간주해야 합니다. 암호화 프로세스 중에 액세스해야 할 모든 열린 파일을 차단하는 문제를 방지하려면 암호화가 진행 중일 때 SSH 로그인을 하지 말 것을 적극 권장합니다. 진행률을 확인하려면 Get-AzVMDiskEncryptionStatus PowerShell cmdlet을 사용하거나 vm encryption show CLI 명령을 사용합니다. 해당 프로세스는 30GB OS 볼륨을 처리하기까지 몇 시간이 걸리며 데이터 볼륨을 암호화하기까지 추가적인 시간이 소요될 수 있습니다. 데이터 볼륨 암호화 시간은 encrypt format all 옵션이 사용되지 않는 한 데이터 볼륨의 크기 및 수량에 비례합니다.

Linux VM에서 암호화 사용 안 함은 데이터 볼륨에 관해서만 지원됩니다. OS 볼륨이 암호화된 경우 해당 설정은 데이터 또는 OS 볼륨에서 지원되지 않습니다.

Azure 디스크 암호화는 다음과 같은 Linux 시나리오, 기능 및 기술에 대해 작동하지 않습니다.

  • 클래식 VM 만들기 방법을 통해 만든 VM 또는 기본 계층 VM을 암호화
  • OS 드라이브가 암호화된 경우 Linux VM의 OS 드라이브 또는 데이터 드라이브에서 암호화를 사용하지 않도록 설정
  • Linux Virtual Machine Scale Sets용 OS 드라이브 암호화.
  • Linux VM에서 사용자 지정 이미지 암호화
  • 온-프레미스 키 관리 시스템과의 통합
  • Azure 파일(공유 파일 시스템)
  • NFS(네트워크 파일 시스템)
  • 동적 볼륨
  • 사용 후 삭제 OS 디스크
  • DFS, GFS, DRDB, CephFS와 같은 공유/분산 파일 시스템의 암호화
  • 암호화된 VM을 다른 구독 또는 지역으로 이동
  • 암호화된 VM의 이미지 또는 스냅샷을 만들어 추가 VM을 배포하는 데 사용합니다.
  • 커널 크래시 덤프(kdump)
  • Oracle ACFS(ASM 클러스터 파일 시스템)
  • 고성능 컴퓨팅 VM 크기 또는 스토리지 최적화 VM 크기에서와 같은 NVMe 디스크
  • "중첩된 탑재 지점" 즉, 단일 경로 내 여러 탑재 지점(예: "/1stmountpoint/data/2stmountpoint")이 있는 VM
  • 데이터 드라이브가 OS 폴더 위에 탑재된 VM입니다.
  • 데이터 디스크를 사용하여 루트(OS 디스크) 논리 볼륨이 확장된 VM입니다.
  • 쓰기 가속기 디스크가 있는 M 시리즈 VM
  • 호스트에서 암호화 또는 고객 관리형 키를 사용한 서버 쪽 암호화(SSE + CMK)로 암호화된 디스크가 있는 VM에 ADE 적용. 데이터 디스크에 SSE + CMK를 적용하거나 ADE로 암호화된 VM에 SSE + CMK가 구성된 데이터 디스크를 추가하는 것도 지원되지 않는 시나리오입니다.
  • ADE로 암호화되었거나 ADE로 암호화된 적이 있는 VM을 호스트에서 암호화 또는 고객 관리형 키를 사용한 서버 쪽 암호화로 마이그레이션.
  • 장애 조치(failover) 클러스터에서 VM 암호화
  • Azure 울트라 디스크 암호화
  • 프리미엄 SSD v2 디스크 암호화.
  • 비밀이 있는 구독의 VM 암호화는 DENY 효과와 함께 지정된 최대 유효 기간 정책을 사용하도록 설정해야 합니다.

도구 설치 및 Azure에 연결

Azure Disk Encryption은 Azure CLIAzure PowerShell을 통해 사용하고 관리할 수 있습니다. 이렇게 하려면 도구를 로컬로 설치하고 Azure 구독에 연결해야 합니다.

Azure CLI 2.0은 Azure 리소스를 관리하기 위한 명령줄 도구입니다. CLI는 데이터를 유연하게 쿼리하고, 장기 실행 작업을 비차단 프로세스로 지원하고, 쉽게 스크립팅할 수 있도록 설계되었습니다. Azure CLI 설치의 단계에 따라 로컬에 설치할 수 있습니다.

Azure CLI에서 Azure 계정에 로그인하려면 az login 명령을 사용합니다.

az login

로그인할 테넌트를 선택하려면 다음을 사용합니다.

az login --tenant <tenant>

구독이 여러 개이고 특정 구독을 지정하려는 경우 az account list를 사용하여 구독 목록을 가져오고 az account set으로 지정합니다.

az account list
az account set --subscription "<subscription name or ID>"

자세한 내용은 Azure CLI 2.0 시작을 참조하세요.

기존 또는 실행 중인 Linux VM에서 암호화를 사용

이 시나리오에서는 Resource Manager 템플릿, PowerShell cmdlet 또는 CLI 명령을 사용하여 암호화를 사용하도록 설정할 수 있습니다. 가상 머신 확장에 대한 스키마 정보가 필요한 경우 Linux용 Azure Disk Encryption 확장 문서를 참조하세요.

Important

Azure Disk Encryption을 사용하기 전에 외부에 관리 디스크 기반 VM 인스턴스에 대해 스냅샷을 만들고 백업해야 합니다. 관리 디스크에 대한 스냅샷은 포털에서 만들거나 Azure Backup을 통해 만들 수 있습니다. Backup은 암호화 중에 예기치 않은 오류가 발생할 경우 복구 옵션으로 사용할 수 있습니다. 백업을 만들면 Set-AzVMDiskEncryptionExtension cmdlet에 -skipVmBackup 매개 변수를 지정하여 관리 디스크를 암호화하는 데 사용할 수 있습니다. 백업이 만들어지고 이 매개 변수가 지정되지 않으면 관리 디스크 기반 VM에 대한 Set-AzVMDiskEncryptionExtension 명령은 실패하게 됩니다.

암호화하거나 암호화를 사용하지 않도록 설정하면 VM이 다시 부팅될 수 있습니다.

암호화를 사용하지 않도록 설정하려면 암호화 사용 안 함 및 암호화 확장 제거를 참조하세요.

Azure CLI 명령줄 도구를 설치하고 사용하여 암호화된 VHD에서 디스크 암호화를 사용할 수 있습니다. Azure Cloud Shell과 함께 브라우저에서 사용하거나 로컬 컴퓨터에 설치하여 PowerShell 세션에서 사용할 수 있습니다. Azure에서 기존 또는 실행 중인 Linux VM에 암호화를 사용하도록 설정하려면 다음 CLI 명령을 사용합니다.

Azure에서 az vm encryption enable 명령을 사용하여 실행 중인 가상 머신에서 암호화를 사용하도록 설정합니다.

  • 실행 중인 VM 암호화:

    az vm encryption enable --resource-group "MyVirtualMachineResourceGroup" --name "MySecureVM" --disk-encryption-keyvault "MySecureVault" --volume-type [All|OS|Data]
    
  • KEK를 사용하여 실행 중인 VM 암호화:

    az vm encryption enable --resource-group "MyVirtualMachineResourceGroup" --name "MySecureVM" --disk-encryption-keyvault  "MySecureVault" --key-encryption-key "MyKEK_URI" --key-encryption-keyvault "MySecureVaultContainingTheKEK" --volume-type [All|OS|Data]
    

    참고 항목

    disk-encryption-keyvault 매개 변수의 값에 대한 구문은 전체 식별자 문자열입니다./subscriptions/[subscription-id-guid]/resourceGroups/[resource-group-name]/providers/Microsoft.KeyVault/vaults/[keyvault-name]
    키 암호화-키 매개 변수의 값에 대한 구문은 https://[keyvault-name].vault.azure.net/keys/[kekname]/[kek-unique-id]에서와 같은 KEK의 전체 URI입니다.

  • 디스크가 암호화되어 있는지 확인: VM의 암호화 상태를 확인하려면 az vm encryption show 명령을 사용합니다.

    az vm encryption show --name "MySecureVM" --resource-group "MyVirtualMachineResourceGroup"
    

암호화를 사용하지 않도록 설정하려면 암호화 사용 안 함 및 암호화 확장 제거를 참조하세요.

Linux VM의 데이터 디스크에 EncryptFormatAll 기능 사용

EncryptFormatAll 매개 변수는 Linux 데이터 디스크가 암호화되는 시간을 줄여줍니다. 특정 기준을 충족하는 파티션은 현재 파일 시스템과 함께 형식이 지정된 다음, 명령 실행 전에 있던 위치로 되돌아가 다시 탑재됩니다. 조건을 충족하는 데이터 디스크를 제외하려면 명령을 실행하기 전에 분리할 수 있습니다.

이 명령을 실행한 후에는 이전에 탑재된 모든 드라이브의 형식이 지정되며, 암호화 계층은 현재 비어 있는 드라이브를 기반으로 하여 시작됩니다. 이 옵션을 선택하면 VM에 연결된 임시 디스크도 암호화됩니다. 임시 디스크가 초기화되면 다음 기회에 Azure Disk Encryption 솔루션에서 VM용으로 서식이 다시 지정되고 다시 암호화됩니다. 리소스 디스크가 암호화되면 Microsoft Azure Linux 에이전트에서 리소스 디스크를 관리할 수 없고 스왑 파일을 사용할 수 없으며 다만 스왑 파일을 수동으로 구성할 수는 있습니다.

Warning

VM의 데이터 볼륨에 필요한 데이터가 있는 경우 EncryptFormatAll을 사용하면 안됩니다. 디스크는 분리하여 암호화에서 제외할 수 있습니다. 프로덕션 VM에서 EncryptFormatAll을 시도하기 전에 먼저 테스트 VM에서 시도하여 이 기능 매개 변수와 그 의미를 이해해야 합니다. EncryptFormatAll 옵션은 데이터 디스크를 포맷하여 해당 데이터 디스크의 모든 데이터가 손실됩니다. 계속하기 전에 제외하려는 디스크가 제대로 분리되었는지 확인합니다.

암호화 설정을 업데이트하는 동안 이 매개 변수를 설정하면 실제로 암호화되기 전에 다시 부팅될 수 있습니다. 이 경우 fstab 파일에서 포맷하지 않으려는 디스크를 제거하는 것도 좋습니다. 마찬가지로 암호화 작업을 시작하기 전에 암호화 형식으로 포맷하려는 파티션을 fstab 파일에 추가해야 합니다.

EncryptFormatAll 조건

매개 변수에서 아래 조건을 모두 충족하는 경우 모든 파티션으로 이동하여 암호화합니다.

  • 루트/OS/부팅 파티션이 아닙니다.
  • 아직 암호화되지 않았습니다.
  • BEK 볼륨이 아닙니다.
  • RAID 볼륨이 아닙니다.
  • LVM 볼륨이 아닙니다.
  • 탑재되어 있습니다.

RAID 볼륨 또는 LVM 볼륨이 아닌, RAID 볼륨 또는 LVM 볼륨을 구성하는 디스크를 암호화합니다.

Azure에서 az vm encryption enable 명령을 사용하여 실행 중인 가상 머신에서 암호화를 사용하도록 설정합니다.

  • EncryptFormatAll을 사용하여 실행 중인 VM 암호화:

    az vm encryption enable --resource-group "MyVirtualMachineResourceGroup" --name "MySecureVM" --disk-encryption-keyvault "MySecureVault" --volume-type "data" --encrypt-format-all
    

LVM(논리 볼륨 관리자)에서 EncryptFormatAll 매개 변수 사용

LVM-on-crypt 설정을 사용하는 것이 좋습니다. 암호화 구성에 대한 LVM과 관련된 자세한 내용은 ADE 암호화된 디바이스에 LVM 및 RAID 구성을 참조하세요.

고객 암호화 VHD 및 암호화 키로 만든 새 VM

이 시나리오에서는 PowerShell cmdlet 또는 CLI 명령을 사용하여 암호화를 사용하도록 설정할 수 있습니다.

Azure Disk Encryption 동일 스크립트의 지침을 사용하여 Azure에서 사용할 수 있는 미리 암호화된 이미지를 준비합니다. 이미지를 만든 후 다음 섹션의 단계를 사용하여 암호화된 Azure VM을 만들 수 있습니다.

Important

Azure Disk Encryption을 사용하기 전에 외부에 관리 디스크 기반 VM 인스턴스에 대해 스냅샷을 만들고 백업해야 합니다. 포털에서 관리 디스크에 대한 스냅샷을 수행하거나 Azure Backup을 사용할 수 있습니다. Backup은 암호화 중에 예기치 않은 오류가 발생할 경우 복구 옵션으로 사용할 수 있습니다. 백업을 만들면 Set-AzVMDiskEncryptionExtension cmdlet에 -skipVmBackup 매개 변수를 지정하여 관리 디스크를 암호화하는 데 사용할 수 있습니다. 백업이 만들어지고 이 매개 변수가 지정되지 않으면 관리 디스크 기반 VM에 대한 Set-AzVMDiskEncryptionExtension 명령은 실패하게 됩니다.

암호화하거나 암호화를 사용하지 않도록 설정하면 VM이 다시 부팅될 수 있습니다.

Azure PowerShell을 사용하여 미리 암호화된 VHD가 있는 VM을 암호화

Set-AzVMOSDisk PowerShell cmdlet을 사용하여 암호화된 VHD에서 디스크 암호화를 사용하도록 설정할 수 있습니다. 아래 예제에서는 몇 가지 공통 매개 변수를 제공합니다.

$VirtualMachine = New-AzVMConfig -VMName "MySecureVM" -VMSize "Standard_A1"
$VirtualMachine = Set-AzVMOSDisk -VM $VirtualMachine -Name "SecureOSDisk" -VhdUri "os.vhd" Caching ReadWrite -Linux -CreateOption "Attach" -DiskEncryptionKeyUrl "https://mytestvault.vault.azure.net/secrets/Test1/514ceb769c984379a7e0230bddaaaaaa" -DiskEncryptionKeyVaultId "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myresourcegroup/providers/Microsoft.KeyVault/vaults/mytestvault"
New-AzVM -VM $VirtualMachine -ResourceGroupName "MyVirtualMachineResourceGroup"

새로 추가된 데이터 디스크에서 암호화 사용

az vm disk attach를 사용하거나 Azure Portal을 통해 새 데이터 디스크를 추가할 수 있습니다. 암호화하려면 먼저 새로 연결된 데이터 디스크를 탑재해야 합니다. 암호화가 진행되는 동안 드라이브를 사용할 수 없으므로 데이터 드라이브의 암호화를 요청해야 합니다.

VM이 이전에 "All"로 암호화된 경우에는 --volume-type 매개 변수가 "All"로 유지되어야 합니다. All은 OS 디스크 및 데이터 디스크 모두를 포함합니다. VM이 이전에 "OS" 볼륨 유형으로 암호화된 경우에는 OS와 새 데이터 디스크가 모두 포함되도록 --volume-type 매개 변수를 "All"로 변경해야 합니다. VM이 "Data" 볼륨 유형으로만 암호화된 경우에는 아래 설명처럼 "Data"로 유지하면 됩니다. VM에 새 데이터 디스크를 추가하고 연결하는 것으로는 암호화 준비에 충분하지 않습니다. 암호화를 사용하도록 설정하기 전에 새로 연결된 디스크를 포맷하고 VM 내에서 올바르게 마운트해야 합니다. Linux에서는 디스크를 영구 블록 디바이스 이름으로 /etc/fstab에 마운트해야 합니다.

PowerShell 구문과 달리 CLI에서는 사용자가 암호화를 사용하도록 설정할 때 고유 시퀀스 버전을 제공하지 않아도 됩니다. CLI는 고유 시퀀스 버전 값을 자동으로 생성하여 사용합니다.

  • 실행 중인 VM의 데이터 볼륨 암호화:

    az vm encryption enable --resource-group "MyVirtualMachineResourceGroup" --name "MySecureVM" --disk-encryption-keyvault "MySecureVault" --volume-type "Data"
    
  • KEK를 사용하여 실행 중인 VM의 데이터 볼륨 암호화:

    az vm encryption enable --resource-group "MyVirtualMachineResourceGroup" --name "MySecureVM" --disk-encryption-keyvault  "MySecureVault" --key-encryption-key "MyKEK_URI" --key-encryption-keyvault "MySecureVaultContainingTheKEK" --volume-type "Data"
    

암호화 사용 안 함 및 암호화 확장 제거

Azure Disk Encryption 확장을 사용하지 않도록 설정하고 Azure Disk Encryption 확장을 제거할 수 있습니다. 이는 두 가지 별개의 작업입니다.

ADE를 제거하려면 먼저 암호화를 사용하지 않도록 설정한 다음 확장을 제거하는 것이 좋습니다. 사용하지 않도록 설정하지 않고 암호화 확장을 제거하면 디스크가 계속 암호화됩니다. 확장을 제거한 암호화를 사용하지 않도록 설정하면 암호 해독 작업을 수행하기 위해 확장이 다시 설치되고 두 번째 제거되어야 합니다.

Warning

OS 디스크가 암호화된 경우 암호화를 사용하지 않도록 설정할 수 없습니다. (OS 디스크는 원래 암호화 작업이 volumeType=ALL 또는 volumeType=OS를 지정하는 경우 암호화됩니다.)

암호화 사용하지 않도록 설정은 데이터 디스크가 암호화되지만 OS 디스크는 암호화되지 않은 경우에만 작동합니다.

암호화 사용 안 함

Azure PowerShell, Azure CLI 또는 Resource Manager 템플릿을 사용하여 암호화를 사용하지 않도록 설정할 수 있습니다. 암호화를 사용하지 않도록 설정해도 확장은 제거되지 않습니다(암호화 확장 제거 참조).

  • Azure PowerShell을 사용하여 디스크 암호화 사용 안 함: 암호화를 사용하지 않도록 설정하려면 Disable-AzVMDiskEncryption cmdlet을 사용합니다.

    Disable-AzVMDiskEncryption -ResourceGroupName "MyVirtualMachineResourceGroup" -VMName "MySecureVM" -VolumeType "data"
    
  • Azure CLI를 통한 암호화 사용 안 함: 암호화를 사용하지 않도록 설정하려면 az vm encryption disable 명령을 사용합니다.

    az vm encryption disable --name "MySecureVM" --resource-group "MyVirtualMachineResourceGroup" --volume-type "data"
    
  • Resource Manager 템플릿으로 암호화를 사용하지 않도록 설정:

    1. 실행 중인 Linux VM에서 디스크 암호화 사용 안 함 템플릿에서 Azure에 배포를 클릭합니다.
    2. 구독, 리소스 그룹, 위치, VM, 볼륨 유형, 약관 및 규약을 선택합니다.
    3. 구매를 클릭하여 실행 중인 Linux VM에서 디스크 암호화를 사용하지 않도록 설정합니다.

암호화 확장 제거

디스크의 암호를 해독하고 암호화 확장을 제거하려면 확장을 제거하기 전에 암호화를 사용하지 않도록 설정해야 합니다. 암호화 사용 안 함을 참조하세요.

Azure PowerShell 또는 Azure CLI를 사용하여 암호화 확장을 제거할 수 있습니다.

  • Azure PowerShell로 디스크 암호화 사용 안 함: 암호화를 제거하려면 Remove-AzVMDiskEncryptionExtension cmdlet을 사용합니다.

    Remove-AzVMDiskEncryptionExtension -ResourceGroupName "MyVirtualMachineResourceGroup" -VMName "MySecureVM"
    
  • Azure CLI로 암호화 사용 안 함: 암호화를 제거하려면 az vm extension delete 명령을 사용합니다.

    az vm extension delete -g "MyVirtualMachineResourceGroup" --vm-name "MySecureVM" -n "AzureDiskEncryptionForLinux"
    

다음 단계