다음을 통해 공유


Azure PowerShell을 사용하여 Virtual Machine Scale Set에서 OS 및 연결된 데이터 디스크 암호화

중요합니다

Azure Disk Encryption은 2028년 9월 15일에 사용 중지될 예정입니다. 해당 날짜까지 중단 없이 Azure Disk Encryption을 계속 사용할 수 있습니다. 2028년 9월 15일에 ADE 사용 워크로드가 계속 실행되지만 VM을 다시 부팅한 후 암호화된 디스크의 잠금이 해제되지 않아 서비스가 중단됩니다.

호스트 에서 암호화 를 사용하여 새 VM을 사용할 수 있습니다. 서비스 중단을 방지하려면 모든 ADE 지원 VM(백업 포함)은 사용 중지 날짜 이전에 호스트에서 암호화로 마이그레이션해야 합니다. 자세한 내용은 Azure Disk Encryption에서 호스트의 암호화로 마이그레이션 을 참조하세요.

Azure PowerShell 모듈은 PowerShell 명령줄 또는 스크립트에서 Azure 리소스를 만들고 관리하는 데 사용됩니다. 이 문서에서는 Azure PowerShell을 사용하여 Virtual Machine Scale Set을 만들고 암호화하는 방법을 보여 줍니다. Virtual Machine Scale Set에 Azure Disk Encryption을 적용하는 방법에 대한 자세한 내용은 Virtual Machine Scale Sets용 Azure Disk Encryption을 참조하세요.

Azure Cloud Shell

Azure는 브라우저를 통해 사용할 수 있는 대화형 셸 환경인 Azure Cloud Shell을 호스트합니다. Cloud Shell에서 Bash 또는 PowerShell을 사용하여 Azure 서비스 작업을 수행할 수 있습니다. 로컬 환경에 아무 것도 설치할 필요 없이 Azure Cloud Shell의 미리 설치된 명령을 사용하여 이 문서의 코드를 실행할 수 있습니다.

Azure Cloud Shell을 시작하려면 다음을 수행합니다.

Option 예제/링크
코드 또는 명령 블록의 오른쪽 상단에서 시도를 선택합니다. 시도를 선택해도 코드 또는 명령이 Cloud Shell에 자동으로 복사되지 않습니다. Azure Cloud Shell의
https://shell.azure.com으로 이동하거나 Cloud Shell 시작 단추를 선택하여 브라우저에서 Cloud Shell을 엽니다. 단추를 사용하여 Azure Cloud Shell을 시작합니다.
Azure Portal의 오른쪽 위에 있는 메뉴 모음에서 Cloud Shell 단추를 선택합니다. Azure Portal의 Cloud Shell 단추를 보여 주는 스크린샷

Azure Cloud Shell을 사용하려면:

  1. Cloud Shell을 시작합니다.

  2. 코드 블록(또는 명령 블록)에서 복사 단추를 선택하여 코드 또는 명령을 복사합니다.

  3. Windows 및 Linux에서 Ctrl+Shift+V 선택하거나 macOS에서 Cmd+Shift+V 선택하여 코드 또는 명령을 Cloud Shell 세션에 붙여넣습니다.

  4. Enter를 선택하여 코드 또는 명령을 실행합니다.

디스크 암호화에 사용할 수 있는 Azure Key Vault 만들기

Azure Key Vault는 애플리케이션 및 서비스에서 안전하게 구현할 수 있는 키, 비밀 또는 암호를 저장할 수 있습니다. 암호화 키는 소프트웨어 보호를 사용하여 Azure Key Vault에 저장되거나 FIPS 140 유효성이 검사 된 표준으로 인증된 HSM(하드웨어 보안 모듈)에서 키를 가져오거나 생성할 수 있습니다. 이러한 암호화 키는 VM에 연결된 가상 디스크를 암호화하고 암호 해독하는 데 사용됩니다. 이러한 암호화 키의 제어권을 유지하고 해당 사용을 감사할 수 있습니다.

New-AzKeyVault를 사용하여 Key Vault를 만듭니다. Key Vault를 디스크 암호화에 사용할 수 있도록 하려면 EnabledForDiskEncryption 매개 변수를 설정합니다. 다음 예제에서는 리소스 그룹 이름, Key Vault 이름 및 위치에 대한 변수도 정의합니다. 고유한 Key Vault 이름을 제공합니다.

$rgName="myResourceGroup"
$vaultName="myuniquekeyvault"
$location = "EastUS"

New-AzResourceGroup -Name $rgName -Location $location
New-AzKeyVault -VaultName $vaultName -ResourceGroupName $rgName -Location $location -EnabledForDiskEncryption

기존 Key Vault 사용

이 단계는 디스크 암호화와 함께 사용하려는 기존 Key Vault가 있는 경우에만 필요합니다. 이전 섹션에서 Key Vault를 만든 경우 이 단계를 건너뜁니다.

Set-AzKeyVaultAccessPolicy를 사용하여 디스크 암호화에 대한 확장 집합과 동일한 구독 및 지역에서 기존 Key Vault를 사용하도록 설정할 수 있습니다. 다음과 같이 $vaultName 변수에서 기존 Key Vault의 이름을 정의합니다.

$vaultName="myexistingkeyvault"
Set-AzKeyVaultAccessPolicy -VaultName $vaultName -EnabledForDiskEncryption

스케일 세트 생성

중요합니다

2023년 11월부터 PowerShell 및 Azure CLI를 사용하여 만들어진 VM Scale Sets는 오케스트레이션 모드가 지정되지 않은 경우 기본적으로 유연한 오케스트레이션 모드로 설정됩니다. 변경 사항과 수행해야 할 작업에 대한 자세한 내용은 VMSS PowerShell/CLI 고객을 위한 주요 변경 사항 - Microsoft Community Hub를 참조하세요.

먼저 Get-Credential을 사용하여 VM 인스턴스에 대한 관리자 사용자 이름 및 암호를 설정합니다.

$cred = Get-Credential

이제 New-AzVmss를 사용하여 Virtual Machine Scale Set을 만듭니다. 트래픽을 개별 VM 인스턴스로 배포하기 위해 부하 분산 장치도 생성됩니다. 부하 분산 장치는 TCP 포트 80에서 트래픽을 분산시키고, TCP 포트 3389에서 원격 데스크톱 트래픽을 허용하며, TCP 포트 5985에서 PowerShell 원격 트래픽을 허용하는 규칙을 포함하고 있습니다.

$vmssName="myScaleSet"

New-AzVmss `
    -ResourceGroupName $rgName `
    -VMScaleSetName $vmssName `
    -OrchestrationMode "flexible" `
    -Location $location `
    -VirtualNetworkName "myVnet" `
    -SubnetName "mySubnet" `
    -PublicIpAddressName "myPublicIPAddress" `
    -LoadBalancerName "myLoadBalancer" `
    -Credential $cred

암호화 사용

확장 집합에서 VM 인스턴스를 암호화하려면 먼저 Get-AzKeyVault를 사용하여 Key Vault URI 및 리소스 ID에 대한 몇 가지 정보를 가져옵니다. 이러한 변수는 Set-AzVmssDiskEncryptionExtension을 사용하여 암호화 프로세스를 시작하는 데 사용됩니다.

$diskEncryptionKeyVaultUrl=(Get-AzKeyVault -ResourceGroupName $rgName -Name $vaultName).VaultUri
$keyVaultResourceId=(Get-AzKeyVault -ResourceGroupName $rgName -Name $vaultName).ResourceId

Set-AzVmssDiskEncryptionExtension -ResourceGroupName $rgName -VMScaleSetName $vmssName `
    -DiskEncryptionKeyVaultUrl $diskEncryptionKeyVaultUrl -DiskEncryptionKeyVaultId $keyVaultResourceId -VolumeType "All"

메시지가 나타나면 y를 입력하여 확장 집합 VM 인스턴스에서 디스크 암호화 프로세스를 계속합니다.

KEK를 사용하여 키 래핑을 위한 암호화를 활성화하십시오.

가상 머신 확장 집합을 암호화할 때 보안 강화를 위해 키 암호화 키를 사용할 수도 있습니다.

$diskEncryptionKeyVaultUrl=(Get-AzKeyVault -ResourceGroupName $rgName -Name $vaultName).VaultUri
$keyVaultResourceId=(Get-AzKeyVault -ResourceGroupName $rgName -Name $vaultName).ResourceId
$keyEncryptionKeyUrl = (Get-AzKeyVaultKey -VaultName $vaultName -Name $keyEncryptionKeyName).Key.kid;

Set-AzVmssDiskEncryptionExtension -ResourceGroupName $rgName -VMScaleSetName $vmssName `
    -DiskEncryptionKeyVaultUrl $diskEncryptionKeyVaultUrl -DiskEncryptionKeyVaultId $keyVaultResourceId `
    -KeyEncryptionKeyUrl $keyEncryptionKeyUrl -KeyEncryptionKeyVaultId $keyVaultResourceId -VolumeType "All"

비고

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입니다.

암호화 진행률 확인

디스크 암호화 상태를 확인하려면 Get-AzVmssDiskEncryption을 사용합니다.

Get-AzVmssDiskEncryption -ResourceGroupName $rgName -VMScaleSetName $vmssName

VM 인스턴스가 암호화되면 EncryptionSummary 코드는 다음 예제 출력과 같이 ProvisioningState/succeeded 를 보고합니다.

ResourceGroupName            : myResourceGroup
VmScaleSetName               : myScaleSet
EncryptionSettings           :
  KeyVaultURL                : https://myuniquekeyvault.vault.azure.net/
  KeyEncryptionKeyURL        :
  KeyVaultResourceId         : /subscriptions/guid/resourceGroups/myResourceGroup/providers/Microsoft.KeyVault/vaults/myuniquekeyvault
  KekVaultResourceId         :
  KeyEncryptionAlgorithm     :
  VolumeType                 : All
  EncryptionOperation        : EnableEncryption
EncryptionSummary[0]         :
  Code                       : ProvisioningState/succeeded
  Count                      : 2
EncryptionEnabled            : True
EncryptionExtensionInstalled : True

암호화 사용 안 함

암호화된 VM 인스턴스 디스크를 더 이상 사용하지 않으려면 다음과 같이 Disable-AzVmssDiskEncryption 을 사용하여 암호화를 사용하지 않도록 설정할 수 있습니다.

Disable-AzVmssDiskEncryption -ResourceGroupName $rgName -VMScaleSetName $vmssName

다음 단계

  • 이 문서에서는 Azure PowerShell을 사용하여 가상 머신 확장 집합을 암호화했습니다. Azure CLI 또는 Azure Resource Manager 템플릿을 사용할 수도 있습니다.
  • 다른 확장이 프로비전된 후 Azure Disk Encryption을 적용하려면 확장 시퀀싱을 사용할 수 있습니다.