Crittografare una macchina virtuale Windows in AzureEncrypt a Windows virtual machine in Azure

Questo script crea un Azure Key Vault sicuro, le chiavi di crittografia, un'entità servizio di Azure Active Directory e una macchina virtuale (VM) Windows.This script creates a secure Azure Key Vault, encryption keys, Azure Active Directory service principal, and a Windows virtual machine (VM). La VM viene quindi crittografata usando la chiave di crittografia del Key Vault e le credenziali dell'entità servizio.The VM is then encrypted using the encryption key from Key Vault and service principal credentials.

Per eseguire questo esempio, verificare di aver installato l'ultima versione dell'interfaccia della riga di comando di Azure 2.0.To run this sample, make sure you have installed the latest Azure CLI 2.0. Per iniziare, eseguire az login per creare una connessione con Azure.To start, run az login to create a connection with Azure.

Questo esempio funziona in una shell Bash.This sample works in a Bash shell. Per le opzioni sull'esecuzione di script dell'interfaccia della riga di comando di Azure nel client Windows, vedere Running the Azure CLI in Windows (Esecuzione dell'interfaccia della riga di comando di Azure in Windows).For options on running Azure CLI scripts on Windows client, see Running the Azure CLI in Windows.

Se non si ha una sottoscrizione di Azure, creare un account gratuito prima di iniziare.If you don't have an Azure subscription, create a free account before you begin.

Script di esempioSample script

#!/bin/bash

# Provide your own unique Key Vault name
keyvault_name=<your_unique_keyvault_name>

# Register the Key Vault provider and create a resource group.
az provider register -n Microsoft.KeyVault
az group create --name myResourceGroup --location eastus

# Create a Key Vault for storing keys and enabled for disk encryption.
az keyvault create --name $keyvault_name --resource-group myResourceGroup --location eastus \
    --enabled-for-disk-encryption True

# Create a key within the Key Vault.
az keyvault key create --vault-name $keyvault_name --name myKey --protection software

# Create an Azure Active Directory service principal for authenticating requests to Key Vault.
# Read in the service principal ID and password for use in later commands.
read sp_id sp_password <<< $(az ad sp create-for-rbac --query [appId,password] -o tsv)

# Grant permissions on the Key Vault to the AAD service principal.
az keyvault set-policy --name $keyvault_name --spn $sp_id \
    --key-permissions all \
    --secret-permissions all

# Create a virtual machine.
az vm create \
    --resource-group myResourceGroup \
    --name myVM \
    --name myVM --image win2016datacenter \
    --admin-username azureuser \
    --admin-password myPassword12

# Encrypt the VM disks.
az vm encryption enable --resource-group myResourceGroup2 --name myVM \
  --aad-client-id $sp_id \
  --aad-client-secret $sp_password \
  --disk-encryption-keyvault $keyvault_name \
  --key-encryption-key myKey \
  --volume-type all

# Output how to monitor the encryption status and next steps.
echo "The encryption process can take some time. View status with:

    az vm encryption show --resource-group myResourceGroup --name myVM --query [osDisk] -o tsv

When encryption status shows \`Encrypted\`, restart the VM with:

    az vm restart --resource-group myResourceGroup --name myVM"

Pulire la distribuzioneClean up deployment

Eseguire questo comando per rimuovere il gruppo di risorse, la macchina virtuale e tutte le risorse correlate.Run the following command to remove the resource group, VM, and all related resources.

az group delete --name myResourceGroup

Spiegazione dello scriptScript explanation

Questo script usa i comandi seguenti per creare un gruppo di risorse, un insieme di credenziali delle chiavi di Azure, un'entità servizio, la macchina virtuale e tutte le risorse correlate.This script uses the following commands to create a resource group, Azure Key Vault, service principal, virtual machine, and all related resources. Ogni comando della tabella include collegamenti alla documentazione specifica del comando.Each command in the table links to command specific documentation.

ComandoCommand NoteNotes
az group createaz group create Consente di creare un gruppo di risorse in cui sono archiviate tutte le risorse.Creates a resource group in which all resources are stored.
az keyvault createaz keyvault create Crea un insieme di credenziali delle chiavi di Azure per archiviare i dati protetti, ad esempio le chiavi di crittografia.Creates an Azure Key Vault to store secure data such as encryption keys.
az keyvault key createaz keyvault key create Crea una chiave di crittografia in Key Vault.Creates an encryption key in Key Vault.
az ad sp create-for-rbacaz ad sp create-for-rbac Crea un'entità servizio di Azure Active Directory per autenticare in modo sicuro e controllare l'accesso alle chiavi di crittografia.Creates an Azure Active Directory service principal to securely authenticate and control access to encryption keys.
az keyvault set-policyaz keyvault set-policy Imposta le autorizzazioni in Key Vault per concedere l'accesso dell'entità servizio alle chiavi di crittografia.Sets permissions on the Key Vault to grant the service principal access to encryption keys.
az vm createaz vm create Consente di creare la macchina virtuale e la connette alla scheda di rete, alla rete virtuale, alla subnet e al gruppo di sicurezza di rete.Creates the virtual machine and connects it to the network card, virtual network, subnet, and NSG. Questo comando specifica anche l'immagine della macchina virtuale da usare e le credenziali di amministrazione.This command also specifies the virtual machine image to be used, and administrative credentials.
az vm encryption enableaz vm encryption enable Abilita la crittografia in una VM usando le credenziali dell'entità servizio e la chiave di crittografia.Enables encryption on a VM using the service principal credentials and encryption key.
az vm encryption showaz vm encryption show Mostra lo stato del processo di crittografia della VM.Shows the status of the VM encryption process.
az group deleteaz group delete Consente di eliminare un gruppo di risorse incluse tutte le risorse annidate.Deletes a resource group including all nested resources.

Passaggi successiviNext steps

Per altre informazioni sull'interfaccia della riga di comando di Azure, vedere la documentazione sull'interfaccia della riga di comando di Azure.For more information on the Azure CLI, see Azure CLI documentation.

Altri esempi di script dell'interfaccia della riga di comando della macchina virtuale sono reperibili nella documentazione della macchina virtuale Windows Azure.Additional virtual machine CLI script samples can be found in the Azure Windows VM documentation.