Gyakorlat – Titkos kódok kezelése az ARM-sablonban

Befejeződött

Az előző gyakorlatban egy egyszerű Azure Resource Manager- (ARM-) sablont futtatott, amely egy linuxos virtuális gépet helyez üzembe. Ebben a részben is hasonlóan fog eljárni.

Ezúttal ahelyett, hogy a jelszót paraméterként adná át, az Azure Key Vaultban fogja tárolni azt. Ahhoz, hogy az ARM-sablon hozzáférhessen a jelszóhoz, egy paraméterfájlt kell létrehoznia, amely az előfizetésbeli kulcstartóban lévő titkos kódra hivatkozik.

Az Azure Key Vault üzembe helyezése

Megjegyzés:

A tesztkörnyezet korlátozásai miatt itt az Azure Portalról fog Azure Key Vault-kulcstartót létrehozni. Az Azure PowerShellből általában a New-AzKeyVault parancsmaggal hozna létre kulcstartót.

Hozzon létre egy kulcstartót, és engedélyezze annak üzembe helyezéskori elérését. Ehhez tegye a következőket:

  1. Hozzon létre egy PowerShell-változót, amely a kulcstartó nevét tartalmazza:

    $KVNAME="tailwind-secrets" + (Get-Random -Count 1 -Maximum 9999999)
    
  2. Írassa ki ennek értékét a $KVNAME paranccsal:

    $KVNAME
    

    A kimenet az alábbihoz hasonló (a megjelenő szám más lesz):

    tailwind-secrets5978564
    

    Másolja ki az értéket egy kényelmesen elérhető helyre a következő lépéshez.

  3. Jelentkezzen be az Azure Portalra ugyanazzal a fiókkal, amellyel aktiválta a tesztkörnyezetet.

  4. Az Azure Portal menüjében vagy a Kezdőlapon válassza az Erőforrás létrehozása elemet.

  5. A keresőmezőbe írja be a Key Vault nevet.

  6. Válassza ki a Key Vault elemet a listából, majd a Létrehozás lehetőséget a kulcstartó konfigurálásának megkezdéséhez.

  7. A létrehozási panelen adja meg ezeket az értékeket:

    1. Erőforráscsoport: erőforráscsoport neve.
    2. Kulcstartó neve: A tailwind-secrets5978564 értéke$KVNAME.
  8. Select Review + create.

  9. Válassza a Létrehozás lehetőséget. Ez körülbelül egy percet vesz igénybe. Ha az erőforrás létrejött, válassza az Erőforrás megnyitása lehetőséget.

  10. Válassza a Hozzáférési konfiguráció lehetőséget a Gépház alatt. Engedélyezze az Azure Resource Manager lehetőséget a sablon üzembe helyezéséhez , és válassza az Alkalmaz lehetőséget.

  11. A PowerShell-munkamenetben futtassa a ConvertTo-SecureString parancsmagot, és rendelje hozzá az eredményt a secretSecureString változóhoz:

    $secretSecureString = ConvertTo-SecureString 'insecurepassword123!' -AsPlainText -Force
    
  12. Futtassa az alábbi Set-AzKeyVaultSecret parancsot a kulcstartó titkos kódjának létrehozásához. A titok neve vmPassword, az értéke pedig insecurepassword123!:

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

A paraméterfájl létrehozása

Itt egy paraméterfájlt hoz létre, amely tartalmazza a virtuális gép nevét, a rendszergazda felhasználónevét, és egy hivatkozást a virtuális gép kulcstartóban lévő jelszavára.

A sablonoknak a parancssorból adhat át paramétereket. Mint tudja, a paraméterfájl alternatív módot kínál a paraméterek ARM-sablonnak történő átadására az üzembe helyezés során. Paraméterfájllal a sablonból férhet hozzá a kulcstartóban lévő titkos kódokhoz.

  1. Futtassa az alábbi Get-AzKeyVault parancsmagot a kulcstartó azonosítójának kiírásához:

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

    A kimenet az alábbihoz hasonló:

    /subscriptions/7c7df858-93a0-4f38-8990-304c836a4e8d/resourceGroups/<rgn>[resource group name]</rgn>/providers/Microsoft.KeyVault/vaults/tailwind-secrets3020
    

    Jegyezze fel a kimenetét a következő lépéshez.

  2. A Visual Studio Code-ban hozzon létre egy azuredeploy.parameters.json fájlt ugyanabban a könyvtárban, amely az azuredeploy.json fájlt is tartalmazza.

  3. Illessze be az azuredeploy.parameters.json fájlba az alábbi tartalmat:

    {
      "$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. Az id értékét (az üres sztringet) írja felül az előző lépésben kimásolt értékkel. Then save the file.

Linux rendszerű virtuális gép üzembe helyezése

Itt is ugyanazt az ARM-sablont fogja üzembe helyezni, amelyet az előző gyakorlatban. Ezúttal megadja hozzá azt a paraméterfájl, amely a virtuális gép kulcstartóban lévő jelszavára hivatkozik.

  1. Futtassa az alábbi New-AzResourceGroupDeployment parancsot:

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

    Az előző gyakorlatban az összes kulcs-érték párt közvetlenül a parancssorból adta át. Itt a paraméterfájlt adja meg a "./azuredeploy.parameters.json" formában.

    A dnsLabelPrefix beállítása vm2-, és egy véletlenszerű szám. Ez azért szükséges, hogy a DNS-név más legyen, mint az előző gyakorlatban használt DNS-név.

Az üzembe helyezés ellenőrzése

Ellenőrizze, hogy a virtuális gép ki van építve, és elérhető SSH-n keresztül. Ehhez tegye a következőket:

  1. Az Invoke-Expression parancsmaggal kapcsolódjon a virtuális géphez SSH-n keresztül:

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

    Amikor a rendszer kéri, adja meg yes a csatlakozás folytatásához. Ezután adja meg a rendszergazdai jelszót. insecurepassword123!

    Fontos

    A gyakorlatban mindig használjon biztonságos jelszavakat. Használhat nyilvános kulcsú hitelesítést is, amely általában biztonságosabb a jelszóhasználatnál.

  2. A virtuális géppel való SSH-kapcsolatból futtassa a hostname parancsot a virtuális gép nevének megjelenítéséhez:

    hostname
    

    Ekkor megjelenik a virtuális gép belső állomásneve: vm1

    vm2
    
  3. Futtassa az exit parancsot az SSH-munkamenet bezárásához.

    exit
    

Szép munka! Kiegészítette az üzembe helyezést egy olyan paraméterfájllal, amely a Key Vaultból olvas ki titkos információkat.

Az Azure Key Vault üzembe helyezése

Az Azure Key Vaultban hozzon létre egy kulcstartót, és adja hozzá a virtuális gép jelszavát biztonságos titkos kódként. Ehhez tegye a következőket:

  1. Hozzon létre egy Bash-változót, amely a kulcstartó nevét tartalmazza.

    KVNAME=tailwind-secrets$RANDOM
    

    A kulcstartók neveinek egyedinek kell lenniük. A $RANDOM rész biztosítja, hogy a kulcstartó neve véletlenszerű számsorozattal végződjön.

  2. Futtassa az alábbi az keyvault create parancsot a kulcstartó létrehozásához:

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

    Az --enabled-for-template-deployment argumentum engedélyezi az Azure Resource Manager- (ARM-) sablon számára, hogy titkos kódokat kérjen le a kulcstartóból.

  3. Futtassa az alábbi az keyvault secret set parancsot a kulcstartó titkos kódjának létrehozásához. A titok neve vmPassword, az értéke pedig insecurepassword123!:

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

A paraméterfájl létrehozása

Itt egy paraméterfájlt hoz létre, amely tartalmazza a virtuális gép nevét, a rendszergazda felhasználónevét, és egy hivatkozást a virtuális gép kulcstartóban lévő jelszavára.

A sablonoknak a parancssorból adhat át paramétereket. Mint tudja, a paraméterfájl alternatív módot kínál a paraméterek ARM-sablonnak történő átadására az üzembe helyezés során. Paraméterfájllal a sablonból férhet hozzá a kulcstartóban lévő titkos kódokhoz.

  1. Futtassa az alábbi az keyvault show parancsmagot a kulcstartó azonosítójának kiírásához:

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

    A kimenet az alábbihoz hasonló:

    /subscriptions/7c7df858-93a0-4f38-8990-304c836a4e8d/resourceGroups/<rgn>[resource group name]</rgn>/providers/Microsoft.KeyVault/vaults/tailwind-secrets3020
    

    Jegyezze fel a kimenetét a következő lépéshez.

  2. A Visual Studio Code-ban hozzon létre egy azuredeploy.parameters.json fájlt ugyanabban a könyvtárban, amely az azuredeploy.json fájlt is tartalmazza.

  3. Illessze be az azuredeploy.parameters.json fájlba az alábbi tartalmat:

    {
      "$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. Az id értékét (az üres sztringet) írja felül az előző lépésben kimásolt értékkel. Then save the file.

Linux rendszerű virtuális gép üzembe helyezése

Itt is ugyanazt az ARM-sablont fogja üzembe helyezni, amelyet az előző gyakorlatban. Ezúttal megadja hozzá azt a paraméterfájl, amely a virtuális gép kulcstartóban lévő jelszavára hivatkozik.

Futtassa az alábbi az deployment group create parancsot a sablon üzembe helyezéséhez:

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

Az előző gyakorlatban az összes kulcs-érték párt a --parameters argumentumban adta át. Itt a paraméterfájlt adja meg a @azuredeploy.parameters.json formában.

A dnsLabelPrefix beállítása vm2-, és egy véletlenszerű szám. Ez azért szükséges, hogy a DNS-név más legyen, mint az előző gyakorlatban használt DNS-név.

Az üzemelő példány ellenőrzése

Ahogyan az előző gyakorlatban, most is ellenőrizze, hogy a virtuális gép ki van építve, és elérhető SSH-n keresztül. Az egyszerűség kedvéért most kihagyhat néhány köztes lépést.

  1. Kapcsolódjon SSH-val a virtuális géphez az alábbi paranccsal:

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

    Amikor a rendszer kéri, adja meg yes a csatlakozás folytatásához. Ezután adja meg a rendszergazdai jelszót. insecurepassword123!

  2. A virtuális géppel való SSH-kapcsolatból futtassa a hostname parancsot a virtuális gép nevének megjelenítéséhez:

    hostname
    

    Ekkor megjelenik a virtuális gép belső állomásneve: vm2

    vm2
    
  3. Futtassa az exit parancsot az SSH-munkamenet bezárásához.

    exit
    

Szép munka! Kiegészítette az üzembe helyezést egy olyan paraméterfájllal, amely a Key Vaultból olvas ki titkos információkat.