빠른 시작: Azure CLI를 사용하여 기밀 VM 만들기
적용 대상: ✔️ Linux VM ✔️ Windows VM
이 빠른 시작에서는 Azure CLI(Azure 명령줄 인터페이스)를 사용하여 Azure에서 기밀 VM(기밀 가상 머신)을 배포하는 방법을 보여 줍니다. Azure CLI는 명령줄 또는 스크립트를 통해 Azure 리소스를 만들고 관리하는 데 사용됩니다.
사전 요구 사항
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.38.0 이상이 필요합니다. az--version
을 실행하여 버전을 찾습니다. 설치 또는 업그레이드해야 하는 경우 Azure CLI 설치를 참조하세요.
리소스 그룹 만들기
az group create 명령을 사용하여 리소스 그룹을 만듭니다. Azure 리소스 그룹은 Azure 리소스가 배포 및 관리되는 논리적 컨테이너입니다. 다음 예제에서는 northeurope 위치에 myResourceGroup이라는 리소스 그룹을 만듭니다.
참고 항목
일부 위치에서는 기밀 VM을 사용할 수 없습니다. 현재 지원되는 위치는 Azure 지역별 사용 가능한 VM 제품을 참조하세요.
az group create --name myResourceGroup --location northeurope
플랫폼 관리형 키를 사용하여 기밀 가상 머신 만들기
az vm create 명령을 사용하여 VM을 만듭니다.
다음 예제에서는 myVM이라는 VM을 만들고 azureuser라는 사용자 계정을 추가합니다. --generate-ssh-keys
매개 변수는 SSH 키를 자동으로 생성하고 이를 기본 키 위치(~/.ssh)에 배치하는 데 사용됩니다. 특정 키 집합을 대신 사용하려면 --ssh-key-values
옵션을 사용합니다.
size
의 경우 기밀 VM 크기를 선택합니다. 자세한 정보는 지원되는 기밀 VM 제품군을 참조하세요.
OS 디스크 기밀 암호화가 없는 경우 VMGuestStateOnly
를 선택합니다. 또는 플랫폼 관리형 키를 사용한 OS 디스크 기밀 암호화의 경우 DiskWithVMGuestState
를 선택합니다. 보안 부팅은 기본적으로 사용하도록 설정되어 있지만 VMGuestStateOnly
에서는 선택 사항입니다. 자세한 내용은 보안 부팅 및 vTPM을 참조하세요을 참조하세요. 호스트의 디스크 암호화 및 암호화에 대한 자세한 내용은 기밀 OS 디스크 암호화 및 호스트에서 암호화를 참조하세요.
az vm create \
--resource-group myResourceGroup \
--name myVM \
--size Standard_DC4es_v5 \
--admin-username <azure-username> \
--admin-password <azure-password> \
--enable-vtpm true \
--image "Canonical:0001-com-ubuntu-confidential-vm-jammy:22_04-lts-cvm:latest" \
--public-ip-sku Standard \
--security-type ConfidentialVM \
--os-disk-security-encryption-type VMGuestStateOnly \
--enable-secure-boot true
VM과 지원 리소스를 만드는 데 몇 분이 걸립니다. 다음 예제 출력은 VM 만들기 작업이 완료되었음을 보여줍니다.
{
"fqdns": "",
"id": "/subscriptions/<guid>/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachines/myVM",
"location": "northeurope",
"macAddress": "<MAC-address>",
"powerState": "VM running",
"privateIpAddress": "10.20.255.255",
"publicIpAddress": "192.168.255.255",
"resourceGroup": "myResourceGroup",
"zones": ""
}
나중에 사용할 수 있도록 publicIpAddress
를 기록해 둡니다.
고객 관리형 키를 사용하여 기밀 가상 머신 만들기
기밀 디스크 암호화 집합을 만들려면 Azure Key Vault 또는 Azure Key Vault 관리형 HSM(하드웨어 보안 모듈)의 두 옵션을 사용할 수 있습니다. 보안 및 규정 준수 요구 사항에 따라 두 옵션 중 하나를 선택할 수 있습니다. 그러나 표준 SKU는 지원되지 않는다는 점에 유의해야 합니다. 다음 예제에서는 Azure Key Vault Premium을 사용합니다.
- 테넌트에게 기밀 VM 서비스 주체
Confidential VM Orchestrator
를 부여합니다. 이 단계에서는 전역 관리자이거나 사용자 액세스 관리자 RBAC 역할이 있어야 합니다. 아래 명령을 실행하려면 Microsoft Graph SDK를 설치합니다.
Connect-Graph -Tenant "your tenant ID" Application.ReadWrite.All
New-MgServicePrincipal -AppId bf7b6499-ff71-4aa2-97a4-f372087be7f0 -DisplayName "Confidential VM Orchestrator"
- az keyvault create 명령을 사용하여 Azure Key Vault를 만듭니다. 가격 책정 계층의 경우 프리미엄(HSM 지원 키에 대한 지원 포함)을 선택합니다. 이 키 자격 증명 모음에 소유자 역할이 있는지 확인합니다.
az keyvault create -n keyVaultName -g myResourceGroup --enabled-for-disk-encryption true --sku premium --enable-purge-protection true --enable-rbac-authorization false
get
및release
키 자격 증명 모음에Confidential VM Orchestrator
권한을 부여합니다.
$cvmAgent = az ad sp show --id "bf7b6499-ff71-4aa2-97a4-f372087be7f0" | Out-String | ConvertFrom-Json
az keyvault set-policy --name keyVaultName --object-id $cvmAgent.Id --key-permissions get release
- az keyvault key create를 사용하여 키 자격 증명 모음에 키를 만듭니다. 키 형식의 경우 RSA-HSM을 사용합니다.
az keyvault key create --name mykey --vault-name keyVaultName --default-cvm-policy --exportable --kty RSA-HSM
- az disk-encryption-set create를 사용하여 디스크 암호화 집합을 만듭니다. 암호화 유형을
ConfidentialVmEncryptedWithCustomerKey
로 설정합니다.
$keyVaultKeyUrl=(az keyvault key show --vault-name keyVaultName --name mykey--query [key.kid] -o tsv)
az disk-encryption-set create --resource-group myResourceGroup --name diskEncryptionSetName --key-url $keyVaultKeyUrl --encryption-type ConfidentialVmEncryptedWithCustomerKey
- az key vault set-policy를 사용하여 키 자격 증명 모음에 대한 디스크 암호화 집합 리소스 액세스 권한을 부여합니다.
$desIdentity=(az disk-encryption-set show -n diskEncryptionSetName -g myResourceGroup --query [identity.principalId] -o tsv)
az keyvault set-policy -n keyVaultName -g myResourceGroup --object-id $desIdentity --key-permissions wrapkey unwrapkey get
- 디스크 암호화 집합 ID를 사용하여 VM을 만듭니다.
$diskEncryptionSetID=(az disk-encryption-set show -n diskEncryptionSetName -g myResourceGroup --query [id] -o tsv)
- az vm create 명령을 사용하여 VM을 만듭니다. 고객 관리형 키를 사용한 OS 디스크 기밀 암호화의 경우
DiskWithVMGuestState
를 선택합니다. 보안 부팅을 사용하도록 설정하는 것은 선택 사항이지만 권장됩니다. 자세한 내용은 보안 부팅 및 vTPM을 참조하세요을 참조하세요. 디스크 암호화에 대한 자세한 내용은 기밀 OS 디스크 암호화를 참조하세요.
az vm create \
--resource-group myResourceGroup \
--name myVM \
--size Standard_DC4as_v5 \
--admin-username <azure-user> \
--admin-password <azure-password> \
--enable-vtpm true \
--enable-secure-boot true \
--image "Canonical:0001-com-ubuntu-confidential-vm-focal:20_04-lts-cvm:latest" \
--public-ip-sku Standard \
--security-type ConfidentialVM \
--os-disk-security-encryption-type DiskWithVMGuestState \
--os-disk-secure-vm-disk-encryption-set $diskEncryptionSetID \
VM과 지원 리소스를 만드는 데 몇 분이 걸립니다. 다음 예제 출력은 VM 만들기 작업이 완료되었음을 보여줍니다.
{
"fqdns": "",
"id": "/subscriptions/<guid>/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachines/myVM",
"location": "eastus",
"macAddress": "<MAC-address>",
"powerState": "VM running",
"privateIpAddress": "10.20.255.255",
"publicIpAddress": "192.168.255.255",
"resourceGroup": "myResourceGroup",
"zones": ""
}
나중에 사용할 수 있도록 publicIpAddress
를 기록해 둡니다.
Microsoft Azure Attestation 샘플 앱을 통해 AMD 기반 CVM 연결 및 증명
게스트 증명 API와 함께 사용하기 위한 샘플 애플리케이션을 C++에서 사용하려면 다음 단계를 사용합니다. 이 예제에서는 Linux 기밀 가상 머신을 사용합니다. Windows의 경우 Windows 빌드 지침을 참조하세요.
공용 IP 주소를 사용하여 기밀 VM에 로그인합니다.
샘플 Linux 애플리케이션을 복제합니다.
build-essential
패키지를 설치합니다. 이 패키지는 샘플 애플리케이션을 컴파일하는 데 필요한 모든 것을 설치합니다.
sudo apt-get install build-essential
- 아래에 패키지를 설치합니다.
sudo apt-get install libcurl4-openssl-dev
sudo apt-get install libjsoncpp-dev
sudo apt-get install libboost-all-dev
sudo apt install nlohmann-json3-dev
증명 패키지를 다운로드합니다.
증명 패키지를 설치합니다.
<version>
을 다운로드한 버전으로 바꿉니다.
sudo dpkg -i azguestattestation1_<latest-version>_amd64.deb
- 위의 패키지가 설치되면 아래 단계를 사용하여 앱을 빌드하고 실행합니다.
cd confidential-computing-cvm-guest-attestation/cvm-attestation-sample-app
sudo cmake . && make
sudo ./AttestationClient -o token
- 웹 토큰을 JSON으로 변환하려면 아래 단계를 사용합니다.
sudo ./AttestationClient -o token>> /attestation_output
JWT=$(cat /attestation_output)
echo -n $JWT | cut -d "." -f 1 | base64 -d 2>/dev/null | jq .
echo -n $JWT | cut -d "." -f 2 | base64 -d 2>/dev/null | jq .