Šifrování disků s operačním systémem a připojených datových disků ve škálovací sadě virtuálních počítačů pomocí Azure CLI

Platí pro: ✔️ Windows virtuální počítače:heavy_check_mark: Jednotné škálovací sady

Azure CLI slouží k vytváření a správě prostředků Azure z příkazového řádku nebo ve skriptech. V tomto rychlém startu se ukáže, jak pomocí Azure CLI vytvořit a zašifrovat škálovací sadu virtuálních počítačů. Další informace o použití služby Azure Disk Encryption na škálovací sadu virtuálních počítačů najdete v Azure Disk Encryption pro Virtual Machine Scale Sets.

Požadavky

  • V nástroji použijte prostředí Bash Azure Cloud Shell.

    Spuštění služby Cloud Shell v novém okně

  • Pokud tomu dáváte přednost, můžete nainstalovat Azure CLI a spouštět referenční příkazy CLI.

    • Pokud používáte místní instalaci, přihlaste se k Azure CLI pomocí příkazu az login. Pokud chcete dokončit proces ověřování, postupujte podle kroků zobrazených na terminálu. Další možnosti přihlášení jsou popsané v tématu Přihlášení pomocí Azure CLI.

    • Po zobrazení výzvy nainstalujte rozšíření Azure CLI při prvním použití. Další informace o rozšířeních najdete v tématu Využití rozšíření v Azure CLI.

    • Spuštěním příkazu az version zjistěte verzi a závislé knihovny, které jsou nainstalované. Pokud chcete upgradovat na nejnovější verzi, spusťte az upgrade.

  • Tento článek vyžaduje azure CLI verze 2.0.31 nebo novější. Pokud používáte Azure Cloud Shell, je už nainstalovaná nejnovější verze.

Vytvoření škálovací sady

Než vytvoříte škálovací sadu, vytvořte skupinu prostředků pomocí příkazu az group create. Následující příklad vytvoří skupinu prostředků myResourceGroup v umístění eastus:

az group create --name myResourceGroup --location eastus

Teď vytvořte škálovací sadu virtuálních počítačů pomocí příkazu az vmss create. Následující příklad vytvoří škálovací sadu myScaleSet nastavenou tak, aby se při provedení změn automaticky aktualizovala, a vygeneruje klíče SSH v adresáři ~/.ssh/id_rsa, pokud ještě neexistují. Ke každé instanci virtuálního počítače je připojený 32GB datový disk a k přípravě datových disků pomocí rozšíření az vmss extension setse používá rozšíření vlastních skriptů Azure:

# Create a scale set with attached data disk
az vmss create \
  --resource-group myResourceGroup \
  --name myScaleSet \
  --image UbuntuLTS \
  --upgrade-policy-mode automatic \
  --admin-username azureuser \
  --generate-ssh-keys \
  --data-disk-sizes-gb 32

# Prepare the data disk for use with the Custom Script Extension
az vmss extension set \
  --publisher Microsoft.Azure.Extensions \
  --version 2.0 \
  --name CustomScript \
  --resource-group myResourceGroup \
  --vmss-name myScaleSet \
  --settings '{"fileUris":["https://raw.githubusercontent.com/Azure-Samples/compute-automation-configurations/master/prepare_vm_disks.sh"],"commandToExecute":"./prepare_vm_disks.sh"}'

Vytvoření a konfigurace všech prostředků škálovací sady a virtuálních počítačů trvá několik minut.

Vytvoření trezoru klíčů Azure s povolenou službou Disk Encryption

Azure Key Vault můžete ukládat klíče, tajné kódy nebo hesla, které umožňují jejich zabezpečenou implementaci ve vašich aplikacích a službách. Kryptografické klíče se ukládají v Azure Key Vault pomocí softwarové ochrany nebo můžete importovat nebo vygenerovat klíče v modulech hardwarového zabezpečení (HSM) certifikovaných podle standardů FIPS 140-2 úrovně 2. Tyto kryptografické klíče slouží k šifrování a dešifrování virtuálních disků připojených k vašemu virtuálnímu počítači. Tyto kryptografické klíče máte pod kontrolou a můžete auditovat jejich použití.

Definujte vlastní jedinečnou keyvault_name. Pak vytvořte službu KeyVault pomocí příkazu az keyvault create ve stejném předplatném a oblasti jako škálovací sadu a nastavte zásadu přístupu --enabled-for-disk-encryption.

# Provide your own unique Key Vault name
keyvault_name=myuniquekeyvaultname

# Create Key Vault
az keyvault create --resource-group myResourceGroup --name $keyvault_name --enabled-for-disk-encryption

Použití existujícího Key Vault

Tento krok se vyžaduje jenom v případě, že máte existující Key Vault který chcete použít se šifrováním disků. Tento krok přeskočte, pokud jste Key Vault v předchozí části.

Definujte vlastní jedinečnou keyvault_name. Pak aktualizujte službu KeyVault pomocí příkazu az keyvault update a nastavte zásady přístupu --enabled-for-disk-encryption.

# Provide your own unique Key Vault name
keyvault_name=myuniquekeyvaultname

# Create Key Vault
az keyvault update --name $keyvault_name --enabled-for-disk-encryption

Povolení šifrování

Pokud chcete zašifrovat instance virtuálních počítače ve škálovací sadě, nejprve získejte informace o ID prostředku Key Vault pomocí příkazu az keyvault show. Tyto proměnné se používají k zahájení procesu šifrování pomocí příkazu az vmss encryption enable:

# Get the resource ID of the Key Vault
vaultResourceId=$(az keyvault show --resource-group myResourceGroup --name $keyvault_name --query id -o tsv)

# Enable encryption of the data disks in a scale set
az vmss encryption enable \
    --resource-group myResourceGroup \
    --name myScaleSet \
    --disk-encryption-keyvault $vaultResourceId \
    --volume-type DATA

Spuštění procesu šifrování může trvat minutu nebo dvě.

Vzhledem k tomu, že škálovací sada je zásadou upgradu škálovací sady vytvořené v předchozím kroku, je nastavená na automatické, instance virtuálních počítače automaticky spustí proces šifrování. V případě škálovací sady, kde se zásady upgradu mají provést ručně, spusťte zásady šifrování na instancích virtuálních počítačů pomocí příkazu az vmss update-instances.

Povolení šifrování pomocí klíče KEK k zabalení klíče

K lepšímu zabezpečení při šifrování škálovací sady virtuálních počítačů můžete použít také šifrovací klíč klíče.

# Get the resource ID of the Key Vault
vaultResourceId=$(az keyvault show --resource-group myResourceGroup --name $keyvault_name --query id -o tsv)

# Enable encryption of the data disks in a scale set
az vmss encryption enable \
    --resource-group myResourceGroup \
    --name myScaleSet \
    --disk-encryption-keyvault $vaultResourceId \
    --key-encryption-key myKEK \
    --key-encryption-keyvault $vaultResourceId \
    --volume-type DATA

Poznámka

Syntaxe pro hodnotu parametru disk-encryption-keyvault je úplný řetězec identifikátoru:
/subscriptions/[subscription-id-guid]/resourceGroups/[název_skupiny_prostředků]/providers/Microsoft.KeyVault/vaults/[keyvault-name]

Syntaxe pro hodnotu parametru key-encryption-key je úplný identifikátor URI klíče KEK, například:
https://[keyvault-name].vault.azure.net/keys/[kekname]/[kek-unique-id]

Kontrola průběhu šifrování

Pokud chcete zkontrolovat stav šifrování disku, použijte příkaz az vmss encryption show:

az vmss encryption show --resource-group myResourceGroup --name myScaleSet

Když jsou instance virtuálních počítače šifrované, stavový kód hlásí EncryptionState/encrypted, jak je znázorněno v následujícím příkladu výstupu:

[
  {
    "disks": [
      {
        "encryptionSettings": null,
        "name": "myScaleSet_myScaleSet_0_disk2_3f39c2019b174218b98b3dfae3424e69",
        "statuses": [
          {
            "additionalProperties": {},
            "code": "EncryptionState/encrypted",
            "displayStatus": "Encryption is enabled on disk",
            "level": "Info",
            "message": null,
            "time": null
          }
        ]
      }
    ],
    "id": "/subscriptions/guid/resourceGroups/MYRESOURCEGROUP/providers/Microsoft.Compute/virtualMachineScaleSets/myScaleSet/virtualMachines/0",
    "resourceGroup": "MYRESOURCEGROUP"
  }
]

Zákaz šifrování

Pokud už nepotřebujete používat disky šifrovaných instancí virtuálních počítačů, můžete šifrování zakázat pomocí příkazu az vmss encryption, a to následujícím způsobem:

az vmss encryption disable --resource-group myResourceGroup --name myScaleSet

Další kroky

  • V tomto článku jste k šifrování škálovací sady virtuálních počítačů použili Azure CLI. Můžete také použít Azure PowerShell nebo Azure Resource Manager šablony.
  • Pokud chcete aplikaci Azure Disk Encryption po zřízení jiného rozšíření, můžete použít sekvencování rozšíření.
  • Příklad koncového dávkového souboru pro šifrování datového disku škálovací sady s Linuxem najdete tady. Tento příklad vytvoří skupinu prostředků, škálovací sadu pro Linux, připojí 5GB datový disk a zašifruje škálovací sadu virtuálních počítačů.