다음을 통해 공유


Azure CLI를 사용하여 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 리소스를 만들고 관리하는 데 Azure CLI가 사용됩니다. 이 빠른 시작에서는 Azure CLI를 사용하여 Virtual Machine Scale Set을 만들고 암호화하는 방법을 보여 줍니다. Virtual Machine Scale Set에 Azure Disk Encryption을 적용하는 방법에 대한 자세한 내용은 Virtual Machine Scale Sets용 Azure Disk Encryption을 참조하세요.

필수 조건

  • 이 문서에는 Azure CLI 버전 2.0.31 이상이 필요합니다. Azure Cloud Shell을 사용하는 경우 최신 버전이 이미 설치되어 있습니다.

확장 집합 만들기

확장 집합을 만들기 전에 az group create를 사용하여 먼저 리소스 그룹을 만드세요. 다음 예제에서는 eastus 위치에 myResourceGroup이라는 리소스 그룹을 만듭니다.

az group create --name myResourceGroup --location eastus

이제 az vmss create를 사용하여 Virtual Machine Scale Set을 만듭니다. 다음 예제에서는 변경 내용이 적용될 때 자동으로 업데이트되도록 설정된 myScaleSet 이라는 확장 집합을 만들고 ~/.ssh/id_rsa 없는 경우 SSH 키를 생성합니다. 32Gb 데이터 디스크는 각 VM 인스턴스에 연결되며 Azure 사용자 지정 스크립트 확장az vmss 확장 집합으로 데이터 디스크를 준비하는 데 사용됩니다.

중요합니다

ADE에서 지원되는 운영 체제를 선택해야 합니다. ADE에 대해 지원되는 OS입니다.

# Create a scale set with attached data disk
az vmss create \
  --resource-group myResourceGroup \
  --name myScaleSet \
  --orchestration-mode Flexible \
  --image <SKU Linux Image> \
  --admin-username azureuser \
  --generate-ssh-keys \
  --data-disk-sizes-gb 32

# Prepare the data disk for use with the Custom Script Extension
az vmss extension set \
  --publisher Microsoft.Azure.Extensions \
  --version 2.0 \
  --name CustomScript \
  --resource-group myResourceGroup \
  --vmss-name myScaleSet \
  --settings '{"fileUris":["https://raw.githubusercontent.com/Azure-Samples/compute-automation-configurations/master/prepare_vm_disks.sh"],"commandToExecute":"./prepare_vm_disks.sh"}'

확장 집합 리소스와 VM을 모두 만들고 구성하는 데 몇 분 정도 걸립니다.

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

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

고유한 keyvault_name 정의합니다. 그런 다음, az keyvault create를 사용하여 확장 집합과 동일한 구독 및 영역에 KeyVault를 만들고 --enabled-for-disk-encryption액세스 정책을 설정합니다.

# Provide your own unique Key Vault name
keyvault_name=myuniquekeyvaultname

# Create Key Vault
az keyvault create --resource-group myResourceGroup --name $keyvault_name --enabled-for-disk-encryption

기존 Key Vault 사용

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

고유한 keyvault_name 정의합니다. az keyvault update를 사용하여 KeyVault를 업데이트하십시오, 그런 다음 --enabled-for-disk-encryption 액세스 정책을 설정하십시오.

# Provide your own unique Key Vault name
keyvault_name=myuniquekeyvaultname

# Create Key Vault
az keyvault update --name $keyvault_name --enabled-for-disk-encryption

암호화 사용

비고

유연한 오케스트레이션 모드에서 Virtual Machine Scale Sets를 사용하는 경우 새 인스턴스만 암호화됩니다. 확장 집합의 기존 인스턴스는 개별적으로 암호화하거나 제거 및 교체해야 합니다.

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

# Get the resource ID of the Key Vault
vaultResourceId=$(az keyvault show --resource-group myResourceGroup --name $keyvault_name --query id -o tsv)

# Enable encryption of the data disks in a scale set
az vmss encryption enable \
    --resource-group myResourceGroup \
    --name myScaleSet \
    --disk-encryption-keyvault $vaultResourceId \
    --volume-type DATA

암호화 프로세스를 시작하는 데 1~2분 정도 걸릴 수 있습니다.

이전 단계에서 생성된 확장 집합의 업그레이드 정책이 자동으로 설정되어 있으므로, VM 인스턴스는 자동으로 암호화 프로세스를 시작합니다. 업그레이드 정책이 수동인 확장 집합에서 az vmss update-instances를 사용하여 VM 인스턴스에서 암호화 정책을 시작합니다.

KEK를 사용하여 암호화를 활성화하고 키를 래핑하세요.

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

# Get the resource ID of the Key Vault
vaultResourceId=$(az keyvault show --resource-group myResourceGroup --name $keyvault_name --query id -o tsv)

# Enable encryption of the data disks in a scale set
az vmss encryption enable \
    --resource-group myResourceGroup \
    --name myScaleSet \
    --disk-encryption-keyvault $vaultResourceId \
    --key-encryption-key myKEK \
    --key-encryption-keyvault $vaultResourceId \
    --volume-type 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입니다.

암호화 진행률 확인

디스크 암호화 상태를 확인하려면 az vmss encryption show를 사용합니다.

az vmss encryption show --resource-group myResourceGroup --name myScaleSet

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

[
  {
    "disks": [
      {
        "encryptionSettings": null,
        "name": "myScaleSet_myScaleSet_0_disk2_3f39c2019b174218b98b3dfae3424e69",
        "statuses": [
          {
            "additionalProperties": {},
            "code": "EncryptionState/encrypted",
            "displayStatus": "Encryption is enabled on disk",
            "level": "Info",
            "message": null,
            "time": null
          }
        ]
      }
    ],
    "id": "/subscriptions/guid/resourceGroups/MYRESOURCEGROUP/providers/Microsoft.Compute/virtualMachineScaleSets/myScaleSet/virtualMachines/0",
    "resourceGroup": "MYRESOURCEGROUP"
  }
]

암호화 사용 안 함

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

az vmss encryption disable --resource-group myResourceGroup --name myScaleSet

다음 단계

  • 이 문서에서는 Azure CLI를 사용하여 Virtual Machine Scale Set을 암호화했습니다. Azure PowerShell 또는 Azure Resource Manager 템플릿을 사용할 수도 있습니다.
  • 다른 확장이 프로비전된 후 Azure Disk Encryption을 적용하려면 확장 시퀀싱을 사용할 수 있습니다.
  • Linux 확장 집합 데이터 디스크 암호화에 대한 엔드투엔드 일괄 처리 파일 예제는 여기에서 찾을 수 있습니다. 이 예제에서는 리소스 그룹인 Linux 확장 집합을 만들고, 5GB 데이터 디스크를 탑재하고, Virtual Machine Scale Set을 암호화합니다.