Azure 기밀 VM에 대한 사용자 지정 이미지를 만드는 방법
적용 대상: ✔️ Linux VM
이 "방법"에서는 Azure CLI(Azure 명령줄 인터페이스)를 사용하여 Azure에서 기밀 VM(기밀 가상 머신)에 대한 사용자 지정 이미지를 만드는 방법을 보여 줍니다. Azure CLI는 명령줄 또는 스크립트를 통해 Azure 리소스를 만들고 관리하는 데 사용됩니다.
사용자 지정 이미지를 만들면 요구 사항을 충족하는 특정 소프트웨어, 설정 및 보안 조치를 사용하여 기밀 VM을 미리 구성할 수 있습니다. 기밀 VM과 호환되지 않는 Ubuntu 이미지를 가져오려면 아래 단계에 따라 이미지에 대한 최소 요구 사항을 확인할 수 있습니다.
사전 요구 사항
Azure 구독이 아직 없는 경우 시작하기 전에 Azure 체험 계정을 만듭니다.
Azure Cloud Shell 시작
Azure Cloud Shell은 이 문서의 단계를 실행하는 데 무료로 사용할 수 있는 대화형 셸입니다. 공용 Azure 도구가 사전 설치되어 계정에서 사용하도록 구성되어 있습니다.
Cloud Shell을 열려면 코드 블록의 오른쪽 위 모서리에 있는 사용해 보세요를 선택하기만 하면 됩니다. 또한 https://shell.azure.com/bash로 이동하여 별도의 브라우저 탭에서 Cloud Shell을 열 수도 있습니다. 복사를 선택하여 코드 블록을 복사하여 Cloud Shell에 붙여넣고, Enter를 선택하여 실행합니다.
CLI를 로컬에서 설치하여 사용하려면, 빠른 시작에 Azure CLI 버전 2.0.30 이상이 필요합니다. az --version
을 실행하여 버전을 찾습니다. 설치 또는 업그레이드해야 하는 경우 Azure CLI 설치를 참조하세요.
리소스 그룹 만들기
az group create 명령을 사용하여 리소스 그룹을 만듭니다. Azure 리소스 그룹은 Azure 리소스가 배포 및 관리되는 논리적 컨테이너입니다.
참고 항목
일부 위치에서는 기밀 VM을 사용할 수 없습니다. 현재 지원되는 위치는 Azure 지역별 사용 가능한 VM 제품을 참조하세요.
az group create --name $resourceGroupName --location eastus
Azure 기밀 VM에 대한 사용자 지정 이미지 만들기
Azure 지원 이미지 목록에서 선택한 Ubuntu 이미지를 사용하여 가상 머신을 만듭니다.
커널 버전이 5.15.0-1037-azure 이상인지 확인합니다. VM에 연결한 후 "uname -r"을 사용하여 커널 버전을 확인할 수 있습니다. 여기서는 이미지에 맞는 변경 내용을 추가할 수 있습니다.
가상 머신의 할당을 취소합니다.
az vm deallocate --name $vmname --resource-group $resourceGroupName
OS 디스크에 대한 SAS 토큰(공유 액세스 토큰)을 만들고 변수에 저장합니다. 이 OS 디스크는 기밀 VM과 동일한 리소스 그룹에 있을 필요가 없습니다.
disk_name=$(az vm show --name $vmname --resource-group $resourceGroupName | jq -r .storageProfile.osDisk.name) disk_url=$(az disk grant-access --duration-in-seconds 3600 --name $disk_name --resource-group $resourceGroupName | jq -r .accessSas)
내보낸 디스크를 저장할 스토리지 계정 만들기
- 스토리지 계정 만들기
az storage account create --resource-group ${resourceGroupName} --name ${storageAccountName} --location $region --sku "Standard_LRS"
- 스토리지 계정 내에 컨테이너를 만듭니다.
az storage container create --name $storageContainerName --account-name $storageAccountName --resource-group $resourceGroupName
- 스토리지 컨테이너에 대한 읽기 SAS 토큰(읽기 공유 액세스 토큰)을 생성하고 변수에 저장합니다.
container_sas=$(az storage container generate-sas --name $storageContainerName --account-name $storageAccountName --auth-mode key --expiry 2024-01-01 --https-only --permissions dlrw -o tsv)
- azcopy를 사용하여 OS 디스크를 스토리지 컨테이너에 복사합니다.
blob_url="https://${storageAccountName}.blob.core.windows.net/$storageContainerName/$referenceVHD" azcopy copy "$disk_url" "${blob_url}?${container_sas}"
기밀 지원 이미지 만들기
- Shared Image Gallery를 만듭니다.
az sig create --resource-group $resourceGroupName --gallery-name $galleryName
- 지원되는 SIG(공유 이미지 갤러리) 정의 기밀 VM을 만듭니다. 갤러리 이미지 정의, SIG 게시자 및 SKU에 대한 새 이름을 설정합니다.
az sig image-definition create --resource-group $resourceGroupName --location $region --gallery-name $galleryName --gallery-image-definition $imageDefinitionName --publisher $sigPublisherName --offer ubuntu --sku $sigSkuName --os-type Linux --os-state specialized --hyper-v-generation V2 --features SecurityType=ConfidentialVMSupported
- 스토리지 계정 ID를 가져옵니다.
storageAccountId=$(az storage account show --name $storageAccountName --resource-group $resourceGroupName | jq -r .id)
- SIG 이미지 버전을 만듭니다.
az sig image-version create --resource-group $resourceGroupName --gallery-name $galleryName --gallery-image-definition $imageDefinitionName --gallery-image-version $galleryImageVersion --os-vhd-storage-account $storageAccountId --os-vhd-uri $blob_url
- 이전 단계에서 만든 SIG 이미지 버전의 ID를 저장합니다.
galleryImageId=$(az sig image-version show --gallery-image-definition $imageDefinitionName --gallery-image-version $galleryImageVersion --gallery-name $galleryName --resource-group $resourceGroupName | jq -r .id)
기밀 VM 만들기
- az vm create 명령을 사용하여 VM을 만듭니다. 자세한 내용은 보안 부팅 및 vTPM을 참조하세요을 참조하세요. 디스크 암호화에 대한 자세한 내용은 기밀 OS 디스크 암호화를 참조하세요. 현재 기밀 VM은 DC 시리즈 및 EC 시리즈 VM 크기를 지원합니다.
az vm create \ --resource-group $resourceGroupName \ --name $cvmname \ --size Standard_DC4as_v5 \ --enable-vtpm true \ --enable-secure-boot true \ --image $galleryImageId \ --public-ip-sku Standard \ --security-type ConfidentialVM \ --os-disk-security-encryption-type VMGuestStateOnly \ --specialized