Cvičení – správa tajných kódů v šabloně ARM

Dokončeno

V přechozím cvičení jste spustili základní šablonu Azure Resource Manageru (ARM), která zřizuje virtuální počítač se systémem Linux. V této části provedete podobný postup.

Tentokrát místo předání hesla jako parametru uložíte toto heslo v trezoru klíčů Azure Key Vault. Pokud chcete šabloně ARM povolit přístup k heslu, vytvoříte soubor parametrů, který odkazuje na tajný kód trezoru klíčů ve vašem předplatném.

Nasazení trezoru klíčů Azure Key Vault

Poznámka:

Z důvodu omezení sandboxu tu vytvoříte trezor klíčů v Azure Key Vaultu z portálu Azure Portal. Za normálních okolností byste trezor klíčů vytvořili z Azure PowerShellu pomocí rutiny New-AzKeyVault.

Vytvořte trezor klíčů a umožněte přístup v době nasazení. Postup:

  1. Vytvořte proměnnou PowerShellu, která bude obsahovat název trezoru klíčů:

    $KVNAME="tailwind-secrets" + (Get-Random -Count 1 -Maximum 9999999)
    
  2. Spuštěním příkazu $KVNAME vytiskněte její hodnotu:

    $KVNAME
    

    Výstup bude vypadat podobně jako tento (číslo, které uvidíte, se bude lišit):

    tailwind-secrets5978564
    

    Zkopírujte hodnotu na nějaké vhodné místo pro další krok.

  3. Pomocí stejného účtu, kterým jste aktivovali sandbox, se přihlaste k webu Azure Portal.

  4. V nabídce webu Azure Portal nebo na domovské stránce vyberte Vytvořit prostředek.

  5. Do vyhledávacího pole zadejte Key Vault.

  6. V seznamu vyberte Key Vault a začněte konfigurovat trezor klíčů výběrem možnosti Vytvořit.

  7. V podokně pro vytváření zadejte tyto hodnoty:

    1. Skupina prostředků: název skupiny prostředků.
    2. Název trezoru $KVNAMEklíčů: Vaše hodnota , například tailwind-secrets5978564.
  8. Vyberte Zkontrolovat a vytvořit.

  9. Vyberte Vytvořit. To by mělo trvat asi minutu. Až bude prostředek vytvořen, vyberte Přejít k prostředku.

  10. V části Nastavení vyberte Konfiguraci přístupu. Povolte možnost Azure Resource Manager pro nasazení šablony a vyberte Použít.

  11. Z relace PowerShellu spusťte rutinu ConvertTo-SecureString a přiřaďte výsledek do proměnné secretSecureString:

    $secretSecureString = ConvertTo-SecureString 'insecurepassword123!' -AsPlainText -Force
    
  12. Spuštěním následujícího příkazu Set-AzKeyVaultSecret vytvořte tajný kód v trezoru klíčů. Tajný kód má název vmPassword s hodnotou insecurepassword123!:

    $secret = Set-AzKeyVaultSecret -VaultName $KVNAME -Name vmPassword -SecretValue $secretSecureString
    

Vytvoření souboru parametrů

Tady vytvoříte soubor parametrů, který bude obsahovat název virtuálního počítače, uživatelské jméno správce a odkaz na heslo virtuálního počítače v trezoru klíčů.

Parametry můžete předávat do šablon z příkazového řádku. Připomínáme, že soubor parametrů je alternativní způsob, jak předávat parametry do šablony ARM během nasazování. Soubor parametrů vám umožní přístup k tajným kódům trezoru klíčů z vaší šablony.

  1. Spuštěním následujícího příkazu Get-AzKeyVault vytiskněte ID trezoru klíčů:

    Get-AzKeyVault -VaultName $KVNAME | Select-Object -ExpandProperty ResourceId
    

    Výstup bude vypadat nějak takto:

    /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/<rgn>[resource group name]</rgn>/providers/Microsoft.KeyVault/vaults/tailwind-secrets3020
    

    Výstup si poznamenejte pro další krok.

  2. V editoru Visual Studio Code vytvořte soubor s názvem azuredeploy.parameters.json ve stejném adresáři, který obsahuje soubor azuredeploy.json.

  3. Přidejte tento obsah do souboru azuredeploy.parameters.json:

    {
      "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
      "contentVersion": "1.0.0.0",
      "parameters": {
        "adminUsername": {
          "value": "azureuser"
        },
        "vmName": {
          "value": "vm2"
        },
        "adminPasswordOrKey": {
          "reference": {
             "keyVault": {
             "id": ""
             },
             "secretName": "vmPassword"
          }
        }
      }
    }
    
  4. Hodnotu parametru id (prázdný řetězec) nahraďte hodnotou, kterou jste zkopírovali v předchozím kroku. Pak soubor uložte.

Nasazení virtuálního počítače s Linuxem

Tady nasadíte stejnou šablonu ARM, kterou jste nasadili v předchozím cvičení. Tentokrát poskytnete soubor parametrů, který bude odkazovat na heslo virtuálního počítače v trezoru klíčů.

  1. Spusťte následující příkaz New-AzResourceGroupDeployment:

    New-AzResourceGroupDeployment `
      -TemplateFile "./azuredeploy.json" `
      -TemplateParameterFile "./azuredeploy.parameters.json" `
      -dnsLabelPrefix ("vm2-" + (Get-Random -Count 1 -Maximum 9999999))
    

    V předchozím cvičení jste poskytli všechny páry klíč-hodnota přímo z příkazového řádku. Tady určíte "./azuredeploy.parameters.json" k poskytnutí souboru parametrů.

    dnsLabelPrefix má nastavenou hodnotu vm2- následovanou náhodným číslem. To je vyžadováno k tomu, aby se tento název DNS lišil od názvu DNS, který jste použili v předchozím cvičení.

Ověření nasazení

Ověřte, že je virtuální počítač zřízený a že se k němu dá připojit přes SSH. Postup:

  1. Spuštěním příkazu Invoke-Expression se připojte k virtuálnímu počítači přes SSH:

    Invoke-Expression (Get-AzResourceGroupDeployment -Name azuredeploy -ResourceGroupName <rgn>your resource group</rgn>).outputs.sshCommand.value
    

    Po zobrazení výzvy zadejte yes , abyste mohli pokračovat v připojování. Pak zadejte heslo správce. insecurepassword123!

    Důležité

    V běžné praxi zachovávejte hesla v bezpečí. Můžete také používat ověřování pomocí veřejného klíče, což je obvykle bezpečnější než používání hesel.

  2. Z připojení SSH k virtuálnímu počítači vytiskněte spuštěním příkazu hostname název hostitele virtuálního počítače:

    hostname
    

    Zobrazí se název interního hostitele virtuálního počítače: vm1

    vm2
    
  3. Spuštěním příkazu exit opusťte relaci SSH.

    exit
    

Výborně! Rozšířili jste své nasazení tak, aby zahrnovalo soubor parametrů, který čte informace tajných kódů z trezoru klíčů Key Vault.

Nasazení trezoru klíčů Azure Key Vault

V Key Vaultu vytvořte trezor klíčů a přidejte heslo virtuálního počítače jako zabezpečený tajný kód. Postup:

  1. Vytvořte proměnnou Bash, která bude obsahovat název trezoru klíčů.

    KVNAME=tailwind-secrets$RANDOM
    

    Názvy trezorů klíčů musí být jedinečné. Část $RANDOM zajišťuje, že název trezoru klíčů končí náhodnou řadou čísel.

  2. Spuštěním následujícího příkazu az keyvault create vytvořte trezor klíčů:

    az keyvault create \
      --name $KVNAME \
      --enabled-for-template-deployment true
    

    Argument --enabled-for-template-deployment umožňuje šabloně ARM načítat tajné kódy z trezoru klíčů.

  3. Spuštěním následujícího příkazu az keyvault secret set vytvořte tajný kód v trezoru klíčů. Tajný kód má název vmPassword s hodnotou insecurepassword123!:

    az keyvault secret set \
      --vault-name $KVNAME \
      --name vmPassword \
      --value 'insecurepassword123!'
    

Vytvoření souboru parametrů

Tady vytvoříte soubor parametrů, který bude obsahovat název virtuálního počítače, uživatelské jméno správce a odkaz na heslo virtuálního počítače v trezoru klíčů.

Parametry můžete předávat do šablon z příkazového řádku. Připomínáme, že soubor parametrů je alternativní způsob, jak předávat parametry do šablony ARM během nasazování. Soubor parametrů vám umožní přístup k tajným kódům trezoru klíčů z vaší šablony.

  1. Spuštěním následujícího příkazu az keyvault show vytiskněte ID trezoru klíčů:

    az keyvault show \
      --name $KVNAME \
      --query id \
      --output tsv
    

    Výstup bude vypadat nějak takto:

    /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/<rgn>[resource group name]</rgn>/providers/Microsoft.KeyVault/vaults/tailwind-secrets3020
    

    Výstup si poznamenejte pro další krok.

  2. V editoru Visual Studio Code vytvořte soubor s názvem azuredeploy.parameters.json ve stejném adresáři, který obsahuje soubor azuredeploy.json.

  3. Přidejte tento obsah do souboru azuredeploy.parameters.json:

    {
      "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
      "contentVersion": "1.0.0.0",
      "parameters": {
        "adminUsername": {
          "value": "azureuser"
        },
        "vmName": {
          "value": "vm2"
        },
        "adminPasswordOrKey": {
          "reference": {
             "keyVault": {
             "id": ""
             },
             "secretName": "vmPassword"
          }
        }
      }
    }
    
  4. Hodnotu parametru id (prázdný řetězec) nahraďte hodnotou, kterou jste zkopírovali v předchozím kroku. Pak soubor uložte.

Nasazení virtuálního počítače s Linuxem

Tady nasadíte stejnou šablonu ARM, kterou jste nasadili v předchozím cvičení. Tentokrát poskytnete soubor parametrů, který bude odkazovat na heslo virtuálního počítače v trezoru klíčů.

Šablonu nasaďte spuštěním následujícího příkazu az deployment group create:

az deployment group create \
  --template-file azuredeploy.json \
  --parameters @azuredeploy.parameters.json dnsLabelPrefix="vm2-$RANDOM"

V předchozím cvičení jste poskytli všechny páry klíč-hodnota v argumentu --parameters. Tady určíte @azuredeploy.parameters.json k poskytnutí souboru parametrů.

dnsLabelPrefix má nastavenou hodnotu vm2- následovanou náhodným číslem. To je vyžadováno k tomu, aby se tento název DNS lišil od názvu DNS, který jste použili v předchozím cvičení.

Ověření nasazení

Jako v předchozím cvičení ověřte, že je virtuální počítač zřízený a že se k němu dá připojit přes SSH. Kvůli zjednodušení tentokrát přeskočíte některé mezikroky.

  1. Spuštěním následujícího kódu se připojte ke svému virtuálnímu počítači přes SSH:

    $(az deployment group show \
      --name azuredeploy \
      --query properties.outputs.sshCommand.value \
      --output tsv)
    

    Po zobrazení výzvy zadejte yes , abyste mohli pokračovat v připojování. Pak zadejte heslo správce. insecurepassword123!

  2. Z připojení SSH k virtuálnímu počítači vytiskněte spuštěním příkazu hostname název hostitele virtuálního počítače:

    hostname
    

    Zobrazí se název interního hostitele virtuálního počítače: vm2

    vm2
    
  3. Spuštěním příkazu exit opusťte relaci SSH.

    exit
    

Výborně! Rozšířili jste své nasazení tak, aby zahrnovalo soubor parametrů, který čte informace tajných kódů z trezoru klíčů Key Vault.