Szybki start: wdrażanie poufnej maszyny wirtualnej przy użyciu szablonu usługi ARM
Aby szybko utworzyć poufnej maszyny wirtualnej platformy Azure, możesz użyć szablonu usługi Azure Resource Manager (szablonu usługi ARM). Poufne maszyny wirtualne działają na obu procesorach AMD wspieranych przez procesory AMD SEV-SNP i Intel wspierane przez intel TDX w celu uzyskania szyfrowania i izolacji pamięci maszyny wirtualnej. Aby uzyskać więcej informacji, zobacz Poufne omówienie maszyny wirtualnej.
W tym samouczku omówiono wdrażanie poufnej maszyny wirtualnej z konfiguracją niestandardową.
Wymagania wstępne
- Subskrypcja platformy Azure. Konta bezpłatnej wersji próbnej nie mają dostępu do maszyn wirtualnych używanych w tym samouczku. Jedną z opcji jest użycie subskrypcji z płatnością zgodnie z rzeczywistym użyciem.
- Jeśli chcesz wdrożyć z poziomu interfejsu wiersza polecenia platformy Azure, zainstaluj program PowerShell i zainstaluj interfejs wiersza polecenia platformy Azure.
Wdrażanie poufnego szablonu maszyny wirtualnej przy użyciu interfejsu wiersza polecenia platformy Azure
Można wdrożyć poufny szablon maszyny wirtualnej z opcjonalnym szyfrowaniem poufnym dysku systemu operacyjnego za pomocą klucza zarządzanego przez platformę.
Aby utworzyć i wdrożyć poufne maszyny wirtualne przy użyciu szablonu usługi ARM za pomocą interfejsu wiersza polecenia platformy Azure:
Zaloguj się do konta platformy Azure w interfejsie wiersza polecenia platformy Azure.
az login
Ustaw subskrypcję platformy Azure. Zastąp
<subscription-id>
ciąg identyfikatorem subskrypcji. Upewnij się, że używasz subskrypcji spełniającej wymagania wstępne.az account set --subscription <subscription-id>
Ustaw zmienne dla poufnej maszyny wirtualnej. Podaj nazwę wdrożenia (), grupę zasobów (
$deployName
$resourceGroup
), nazwę maszyny wirtualnej ($vmName
) i region platformy Azure ($region
). Zastąp przykładowe wartości własnymi informacjami.Uwaga
Poufne maszyny wirtualne nie są dostępne we wszystkich lokalizacjach. W przypadku aktualnie obsługiwanych lokalizacji zobacz , które produkty maszyn wirtualnych są dostępne w regionie świadczenia usługi Azure.
$deployName="<deployment-name>" $resourceGroup="<resource-group-name>" $vmName= "<confidential-vm-name>" $region="<region-name>"
Jeśli określona grupa zasobów nie istnieje, utwórz grupę zasobów o tej nazwie.
az group create -n $resourceGroup -l $region
Wdróż maszynę wirtualną na platformie Azure przy użyciu szablonu usługi ARM z niestandardowym plikiem parametrów i plikiem szablonu.
az deployment group create ` -g $resourceGroup ` -n $deployName ` -u "<json-template-file-path>" ` -p "<json-parameter-file-path>" ` -p vmLocation=$region ` vmName=$vmName
Definiowanie niestandardowego pliku parametrów
Podczas tworzenia poufnej maszyny wirtualnej za pomocą interfejsu wiersza polecenia platformy Azure (interfejs wiersza polecenia platformy Azure) należy zdefiniować niestandardowy plik parametrów. Aby utworzyć niestandardowy plik parametrów JSON:
Zaloguj się do konta platformy Azure za pomocą interfejsu wiersza polecenia platformy Azure.
Utwórz plik parametrów JSON. Na przykład
azuredeploy.parameters.json
.W zależności od używanego obrazu systemu operacyjnego skopiuj przykładowy plik parametrów systemu Windows lub przykładowy plik parametrów systemu Linux do pliku parametrów.
Edytuj kod JSON w pliku parametrów zgodnie z potrzebami. Na przykład zaktualizuj nazwę obrazu systemu operacyjnego (
osImageName
) lub nazwę użytkownika administratora (adminUsername
).Skonfiguruj ustawienie typu zabezpieczeń (
securityType
). WybierzVMGuestStateOnly
opcję braku poufnego szyfrowania dysku systemu operacyjnego. Możesz też wybraćDiskWithVMGuestState
opcję poufnego szyfrowania dysku systemu operacyjnego przy użyciu klucza zarządzanego przez platformę. W przypadku tylko jednostek SKU Intel TDX i obrazów opartych na systemie Linux klienci mogą wybraćNonPersistedTPM
typ zabezpieczeń do wdrożenia przy użyciu efemerycznej maszyny wirtualnej vTPM.NonPersistedTPM
W przypadku typu zabezpieczeń użyj minimalnej wartości "apiVersion": "2023-09-01" wMicrosoft.Compute/virtualMachines
pliku szablonu.Zapisz plik parametrów.
Przykładowy plik parametrów systemu Windows
Użyj tego przykładu, aby utworzyć niestandardowy plik parametrów dla poufnej maszyny wirtualnej z systemem Windows.
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"vmSize": {
"value": "Standard_DC2as_v5"
},
"osImageName": {
"value": "Windows Server 2022 Gen 2"
},
"securityType": {
"value": "DiskWithVMGuestState"
},
"adminUsername": {
"value": "testuser"
},
"adminPasswordOrKey": {
"value": "<your password>"
}
}
}
Przykładowy plik parametrów systemu Linux
Użyj tego przykładu, aby utworzyć niestandardowy plik parametrów dla poufnej maszyny wirtualnej opartej na systemie Linux.
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"vmSize": {
"value": "Standard_DC2as_v5"
},
"osImageName": {
"value": "Ubuntu 20.04 LTS Gen 2"
},
"securityType": {
"value": "DiskWithVMGuestState"
},
"adminUsername": {
"value": "testuser"
},
"authenticationType": {
"value": "sshPublicKey"
},
"adminPasswordOrKey": {
"value": <your SSH public key>
}
}
}
Uwaga
Zastąp odpowiednio wartość osImageName.
Wdrażanie poufnego szablonu maszyny wirtualnej przy użyciu poufnego szyfrowania dysku systemu operacyjnego za pomocą klucza zarządzanego przez klienta
Zaloguj się do konta platformy Azure za pomocą interfejsu wiersza polecenia platformy Azure.
az login
Ustaw subskrypcję platformy Azure. Zastąp
<subscription-id>
ciąg identyfikatorem subskrypcji. Upewnij się, że używasz subskrypcji spełniającej wymagania wstępne.az account set --subscription <subscription-id>
Udzielanie poufnej jednostki
Confidential VM Orchestrator
usługi maszyny wirtualnej dzierżawieW tym kroku musisz być administratorem globalnym lub musisz mieć rolę RBAC administratora dostępu użytkowników. Zainstaluj zestaw Microsoft Graph SDK , aby wykonać poniższe polecenia.
Connect-Graph -Tenant "your tenant ID" Application.ReadWrite.All New-MgServicePrincipal -AppId bf7b6499-ff71-4aa2-97a4-f372087be7f0 -DisplayName "Confidential VM Orchestrator"
Konfigurowanie magazynu kluczy platformy Azure. Aby zamiast tego użyć zarządzanego modułu HSM usługi Azure Key Vault, zobacz następny krok.
Utwórz grupę zasobów dla magazynu kluczy. Wystąpienie magazynu kluczy i poufne maszyny wirtualnej muszą znajdować się w tym samym regionie świadczenia usługi Azure.
$resourceGroup = <key vault resource group> $region = <Azure region> az group create --name $resourceGroup --location $region
Utwórz wystąpienie magazynu kluczy przy użyciu jednostki SKU w warstwie Premium i wybierz preferowany region. Standardowa jednostka SKU nie jest obsługiwana.
$KeyVault = <name of key vault> az keyvault create --name $KeyVault --resource-group $resourceGroup --location $region --sku Premium --enable-purge-protection
Upewnij się, że masz rolę właściciela w tym magazynie kluczy.
Nadaj
Confidential VM Orchestrator
uprawnienia iget
release
magazynowi kluczy.$cvmAgent = az ad sp show --id "bf7b6499-ff71-4aa2-97a4-f372087be7f0" | Out-String | ConvertFrom-Json az keyvault set-policy --name $KeyVault --object-id $cvmAgent.Id --key-permissions get release
(Opcjonalnie) Jeśli nie chcesz używać magazynu kluczy platformy Azure, możesz zamiast tego utworzyć zarządzany moduł HSM usługi Azure Key Vault.
Postępuj zgodnie z przewodnikiem Szybki start, aby utworzyć zarządzany moduł HSM usługi Azure Key Vault w celu aprowizowania i aktywowania zarządzanego modułu HSM usługi Azure Key Vault.
Włącz ochronę przed przeczyszczaniem w zarządzanym module HSM platformy Azure. Ten krok jest wymagany do włączenia wydania klucza.
az keyvault update-hsm --subscription $subscriptionId -g $resourceGroup --hsm-name $hsm --enable-purge-protection true
Nadaj
Confidential VM Orchestrator
uprawnienia zarządzanemu modułowi HSM.$cvmAgent = az ad sp show --id "bf7b6499-ff71-4aa2-97a4-f372087be7f0" | Out-String | ConvertFrom-Json az keyvault role assignment create --hsm-name $hsm --assignee $cvmAgent.Id --role "Managed HSM Crypto Service Release User" --scope /keys/$KeyName
Utwórz nowy klucz przy użyciu usługi Azure Key Vault. Aby zamiast tego użyć zarządzanego modułu HSM platformy Azure, zobacz następny krok.
Przygotuj i pobierz zasady wydania klucza na dysk lokalny.
Utwórz nowy klucz.
$KeyName = <name of key> $KeySize = 3072 az keyvault key create --vault-name $KeyVault --name $KeyName --ops wrapKey unwrapkey --kty RSA-HSM --size $KeySize --exportable true --policy "@.\skr-policy.json"
Uzyskaj informacje o utworzonym kluczu.
$encryptionKeyVaultId = ((az keyvault show -n $KeyVault -g $resourceGroup) | ConvertFrom-Json).id $encryptionKeyURL= ((az keyvault key show --vault-name $KeyVault --name $KeyName) | ConvertFrom-Json).key.kid
Wdróż zestaw szyfrowania dysków (DES) przy użyciu szablonu USŁUGI ARM DES (
deployDES.json
).$desName = <name of DES> $deployName = <name of deployment> $desArmTemplate = <name of DES ARM template file> az deployment group create ` -g $resourceGroup ` -n $deployName ` -f $desArmTemplate ` -p desName=$desName ` -p encryptionKeyURL=$encryptionKeyURL ` -p encryptionKeyVaultId=$encryptionKeyVaultId ` -p region=$region
Przypisz dostęp do klucza do pliku DES.
$desIdentity= (az disk-encryption-set show -n $desName -g $resourceGroup --query [identity.principalId] -o tsv) az keyvault set-policy -n $KeyVault ` -g $resourceGroup ` --object-id $desIdentity ` --key-permissions wrapkey unwrapkey get
(Opcjonalnie) Utwórz nowy klucz na podstawie zarządzanego modułu HSM platformy Azure.
Przygotuj i pobierz zasady wydania klucza na dysk lokalny.
Utwórz nowy klucz.
$KeyName = <name of key> $KeySize = 3072 az keyvault key create --hsm-name $hsm --name $KeyName --ops wrapKey unwrapkey --kty RSA-HSM --size $KeySize --exportable true --policy "@.\skr-policy.json"
Uzyskaj informacje o utworzonym kluczu.
$encryptionKeyURL = ((az keyvault key show --hsm-name $hsm --name $KeyName) | ConvertFrom-Json).key.kid
Wdrażanie des.
$desName = <name of DES> az disk-encryption-set create -n $desName ` -g $resourceGroup ` --key-url $encryptionKeyURL
Przypisz dostęp do klucza do des.
desIdentity=$(az disk-encryption-set show -n $desName -g $resourceGroup --query [identity.principalId] -o tsv) az keyvault set-policy -n $hsm ` -g $resourceGroup ` --object-id $desIdentity ` --key-permissions wrapkey unwrapkey get
Wdróż poufne maszyny wirtualnej przy użyciu klucza zarządzanego przez klienta.
Pobierz identyfikator zasobu des.
$desID = (az disk-encryption-set show -n $desName -g $resourceGroup --query [id] -o tsv)
Wdróż poufne maszyny wirtualnej przy użyciu poufnego szablonu arm maszyny wirtualnej dla środowiska Intel TDX i pliku parametrów wdrożenia (na przykład
azuredeploy.parameters.win2022.json
) przy użyciu klucza zarządzanego przez klienta.$deployName = <name of deployment> $vmName = <name of confidential VM> $cvmArmTemplate = <name of confidential VM ARM template file> $cvmParameterFile = <name of confidential VM parameter file> az deployment group create ` -g $resourceGroup ` -n $deployName ` -f $cvmArmTemplate ` -p $cvmParameterFile ` -p diskEncryptionSetId=$desID ` -p vmName=$vmName
Połącz się z zaufaną maszyną wirtualną, aby upewnić się, że tworzenie zakończyło się pomyślnie.