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

Platí pro: ✔️ Windows virtuálních ✔️ počítačů Uniform Scale Sets

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 dozvíte, jak pomocí Azure CLI vytvořit a šifrovat škálovací sadu virtuálních počítačů. Další informace o použití služby Azure Disk Encryption ve škálovací sadě virtuálních počítačů najdete v tématu Azure Disk Encryption pro Virtual Machine Scale Sets.

Požadavky

  • Použijte prostředí Bash v Azure Cloud Shell. Další informace najdete v tématu Rychlý start azure Cloud Shell – Bash.

    Launch Cloud Shell in a new window

  • Pokud dáváte přednost místnímu spuštění referenčních příkazů rozhraní příkazového řádku, nainstalujte Azure CLI. Pokud používáte Windows nebo macOS, zvažte spuštění Azure CLI v kontejneru Dockeru. Další informace najdete v tématu Jak spustit Azure CLI v kontejneru Dockeru.

    • 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 verzi 2.0.31 nebo novější azure CLI. 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í. K každé instanci virtuálního počítače je připojený datový disk 32 Gb a rozšíření vlastních skriptů Azure slouží k přípravě datových disků pomocí sady rozšíření az vmss:

# 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 povoleným šifrováním disků

Azure Key Vault může ukládat klíče, tajné kódy nebo hesla, která umožňují bezpečně je implementovat ve vašich aplikacích a službách. Kryptografické klíče se ukládají v Azure Key Vault pomocí ochrany softwaru nebo můžete importovat nebo generovat klíče v modulech hardwarového zabezpečení (HSM) certifikovaných pro standardy 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. Zachováte kontrolu nad těmito kryptografickými klíči a můžete je auditovat.

Definujte si vlastní jedinečné keyvault_name. Pak vytvořte keyVault pomocí příkazu az keyvault create ve stejném předplatném a oblasti jako škálovací sada a nastavte zásadu přístupu šifrování disku s povoleným parametrem --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 s šifrováním disků. Tento krok přeskočte, pokud jste vytvořili Key Vault v předchozí části.

Definujte si vlastní jedinečné keyvault_name. Potom aktualizujte službu KeyVault pomocí příkazu az keyvault update a nastavte zásady přístupu k šifrování disků --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 šifrovat instance virtuálních počítačů 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 následnému spuštění 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

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

Vzhledem k tomu, že škálovací sada je zásada upgradu ve škálovací sadě vytvořená v předchozím kroku nastavená na automatickou, instance virtuálních počítačů automaticky spustí proces šifrování. Ve škálovacích sadách, kde je zásada upgradu ruční, spusťte zásadu šifrování na instancích virtuálních počítačů pomocí příkazu az vmss update-instances.

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

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

# 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 řetězec úplného identifikátoru:
/subscriptions/[subscription-id-guid]/resourceGroups/[resource-group-name]/providers/Microsoft.KeyVault/vaults/[keyvault-name]

Syntaxe pro hodnotu parametru key-encryption-key je úplný identifikátor URI KEK jako v:
https://[keyvault-name].vault.azure.net/keys/[kekname]/[kek-unique-id]

Kontrola průběhu šifrování

Pokud chcete zkontrolovat stav šifrování disků, 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čů š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"
  }
]

Zakázání šifrování

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

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

Další kroky

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