빠른 시작: Azure CLI를 사용하여 AMD 기반 기밀 VM 만들기
적용 대상: ✔️ Linux VM ✔️ Windows VM
이 빠른 시작에서는 Azure CLI(Azure Command-Line Interface)를 사용하여 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.0.30 이상이 필요합니다. az--version
을 실행하여 버전을 찾습니다. 설치 또는 업그레이드해야 하는 경우 Azure CLI 설치를 참조하세요.
리소스 그룹 만들기
az group create 명령을 사용하여 리소스 그룹을 만듭니다. Azure 리소스 그룹은 Azure 리소스가 배포 및 관리되는 논리적 컨테이너입니다. 다음 예제에서는 eastus 위치에 myResourceGroup이라는 리소스 그룹을 만듭니다.
참고
일부 위치에서는 기밀 VM을 사용할 수 없습니다. 현재 지원되는 위치는 Azure 지역별 사용 가능한 VM 제품을 참조하세요.
az group create --name myResourceGroup --location eastus
플랫폼 관리형 키를 사용하여 기밀 가상 머신 만들기
az vm create 명령을 사용하여 VM을 만듭니다.
다음 예제에서는 myVM이라는 VM을 만들고 azureuser라는 사용자 계정을 추가합니다. 매개 변수는 --generate-ssh-keys
SSH 키를 자동으로 생성하고 기본 키 위치(~/.ssh)에 배치하는 데 사용됩니다. 특정 키 집합을 대신 사용하려면 --ssh-key-values
옵션을 사용합니다.
의 경우 size
기밀 VM 크기를 선택합니다. 자세한 정보는 지원되는 기밀 VM 제품군을 참조하세요.
OS 디스크 기밀 암호화를 선택 VMGuestStateOnly
하지 않습니다. 또는 플랫폼 관리형 키를 사용하여 OS 디스크 기밀 암호화를 선택합니다 DiskWithVMGuestState
. 보안 부팅을 사용하도록 설정하는 것은 선택 사항이지만 권장됩니다. 자세한 내용은 보안 부팅 및 vTPM을 참조하세요. 디스크 암호화에 대한 자세한 내용은 기밀 OS 디스크 암호화를 참조하세요.
az vm create \
--resource-group myResourceGroup \
--name myVM \
--generate-ssh-keys \
--size Standard_DC4as_v5 \
--admin-username <azure-username> \
--admin-password <azure-password> \
--enable-vtpm 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 VMGuestStateOnly \
--enable-secure-boot true \
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
를 기록해 둡니다.
고객 관리형 키를 사용하여 기밀 가상 머신 만들기
Azure Key Vault 또는 Azure Key Vault관리형 HSM(하드웨어 보안 모듈)을 사용하여 기밀 디스크 암호화 집합을 만듭니다. 보안 및 규정 준수 요구 사항에 따라 두 옵션 중 하나를 선택할 수 있습니다. 다음 예제에서는 Azure Key Vault Premium을 사용합니다.
- 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
- 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 샘플 앱을 통해 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 .