Oktatóanyag: Az Azure Key Vault integrálása ARM-sablonalapú telepítésbe

Megtudhatja, hogyan szerezhet be titkos kulcsokat egy Azure-kulcstartóból, és hogyan adhatja át a titkos kulcsokat paraméterekként egy Azure Resource Manager-sablon (ARM-sablon) üzembe helyezésekor. A paraméter értéke soha nem lesz közzétéve, mert csak a kulcstartó azonosítójára hivatkozik. A kulcstartó titkos kulcsára statikus azonosítóval vagy dinamikus azonosítóval hivatkozhat. Ez az oktatóanyag statikus azonosítót használ. A statikus azonosító megközelítésével a sablon paraméterfájljában lévő kulcstartóra kell hivatkozni, nem a sablonfájlra. Mindkét megközelítésről további információt az Azure Key Vault használata biztonságos paraméterértékek átadásához az üzembe helyezés során című témakörben talál.

Az Erőforrás üzembe helyezési sorrendjének beállítása oktatóanyagban virtuális gépet (VM) hoz létre. Meg kell adnia a virtuális gép rendszergazdájának felhasználónevét és jelszavát. A jelszó megadása helyett előre tárolhatja a jelszót egy Azure Key Vaultban, majd testre szabhatja a sablont, hogy lekérje a jelszót a kulcstartóból az üzembe helyezés során.

Egy Resource Manager-sablon és egy kulcstartó integrációját bemutató ábra

Ez az oktatóanyag a következő feladatokat mutatja be:

  • Kulcstartó előkészítése
  • Gyorsindítási sablon megnyitása
  • A paraméterfájl szerkesztése
  • A sablon üzembe helyezése
  • Az üzembe helyezés ellenőrzése
  • Az erőforrások eltávolítása

Ha nem rendelkezik Azure-előfizetéssel, hozzon létre egy ingyenes fiókot a feladatok megkezdése előtt.

A kulcstartóból biztonságos értéket használó Learn-modulért lásd: Összetett felhőbeli üzemelő példányok kezelése speciális ARM-sablonfunkciókkal.

Előfeltételek

Az oktatóanyag elvégzéséhez az alábbiakra van szükség:

  • Visual Studio CodeResource Manager Tools bővítménnyel. Lásd : Rövid útmutató: ARM-sablonok létrehozása a Visual Studio Code-tal.

  • A biztonság növelése érdekében használjon generált jelszót a virtuális gép rendszergazdai fiókjához. Az Azure Cloud Shell használatával futtathatja a következő parancsot a PowerShellben vagy a Bashben:

    openssl rand -base64 32
    

    További információért futtassa a parancsot man openssl rand a manuális lap megnyitásához.

    Ellenőrizze, hogy a létrehozott jelszó megfelel-e a virtuális gép jelszavára vonatkozó követelményeknek. Az egyes Azure-szolgáltatások különböző jelszókövetelményeket szabnak meg. A virtuális gép jelszókövetelményeiért lásd: Mik a jelszókövetelmények a virtuális gép létrehozásakor? című témakörben.

Kulcstartó előkészítése

Ebben a szakaszban létrehoz egy kulcstartót, és hozzáad hozzá egy titkos kulcsot, hogy lekérhesse a titkos kulcsot a sablon üzembe helyezésekor. A kulcstartók számos módon hozhatók létre. Ebben az oktatóanyagban Azure PowerShell használ egy ARM-sablon üzembe helyezéséhez. Ez a sablon két dolgot tesz:

  • Létrehoz egy kulcstartót, amelyen engedélyezve van a enabledForTemplateDeployment tulajdonság. Ennek a tulajdonságnak igaznak kell lennie ahhoz, hogy a sablon üzembehelyezési folyamata hozzáférhessen a kulcstartóban definiált titkos kódokhoz.
  • Titkos kulcsot ad hozzá a kulcstartóhoz. A titkos kód tárolja a virtuális gép rendszergazdai jelszavát.

Megjegyzés

A virtuálisgép-sablont üzembe helyező felhasználóként, ha nem Ön a kulcstartó tulajdonosa vagy közreműködője, a tulajdonosnak vagy a közreműködőnek hozzáférést kell adnia a Microsoft.KeyVault/vaults/deploy/action kulcstartó engedélyéhez. További információ: Biztonságos paraméterérték átadása az Azure Key Vault használatával az üzembe helyezés során.

A következő Azure PowerShell szkript futtatásához válassza a Kipróbálás lehetőséget a Cloud Shell megnyitásához. A szkript beillesztéséhez kattintson a jobb gombbal a felületpanelre, majd válassza a Beillesztés parancsot.

$projectName = Read-Host -Prompt "Enter a project name that is used for generating resource names"
$location = Read-Host -Prompt "Enter the location (i.e. centralus)"
$upn = Read-Host -Prompt "Enter your user principal name (email address) used to sign in to Azure"
$secretValue = Read-Host -Prompt "Enter the virtual machine administrator password" -AsSecureString

$resourceGroupName = "${projectName}rg"
$keyVaultName = $projectName
$adUserId = (Get-AzADUser -UserPrincipalName $upn).Id
$templateUri = "https://raw.githubusercontent.com/Azure/azure-docs-json-samples/master/tutorials-use-key-vault/CreateKeyVault.json"

New-AzResourceGroup -Name $resourceGroupName -Location $location
New-AzResourceGroupDeployment -ResourceGroupName $resourceGroupName -TemplateUri $templateUri -keyVaultName $keyVaultName -adUserId $adUserId -secretValue $secretValue

Write-Host "Press [ENTER] to continue ..."

Fontos

A sablonnak egy kimeneti értéke van, a neve keyVaultId. Ezt az azonosítót és a titkos kód nevét fogja használni a titkos kód értékének lekéréséhez az oktatóanyag későbbi részében. Az erőforrás-azonosító formátuma a következő:

/subscriptions/<SubscriptionID>/resourceGroups/mykeyvaultdeploymentrg/providers/Microsoft.KeyVault/vaults/<KeyVaultName>

Az azonosító másolása és beillesztése során előfordulhat, hogy több sorra bontja. Egyesítse a vonalakat, és vágja le a felesleges szóközöket.

Az üzembe helyezés ellenőrzéséhez futtassa a következő PowerShell-parancsot ugyanabban a felületpanelen a titkos kód tiszta szövegben való lekéréséhez. A parancs csak ugyanabban a rendszerhéj-munkamenetben működik, mert a változót $keyVaultNamehasználja, amely az előző PowerShell-szkriptben van definiálva.

$secret = Get-AzKeyVaultSecret -VaultName $keyVaultName -Name "vmAdminPassword"
$ssPtr = [System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($secret.SecretValue)
try {
   $secretValueText = [System.Runtime.InteropServices.Marshal]::PtrToStringBSTR($ssPtr)
} finally {
   [System.Runtime.InteropServices.Marshal]::ZeroFreeBSTR($ssPtr)
}
Write-Output $secretValueText

Most előkészített egy kulcstartót és egy titkos kulcsot. Az alábbi szakaszok bemutatják, hogyan szabhat testre egy meglévő sablont a titkos kód lekéréséhez az üzembe helyezés során.

Gyorsindítási sablon megnyitása

Az Azure Quickstart Templates az ARM-sablonok adattára. Teljesen új sablon létrehozása helyett kereshet egy mintasablont, és testre szabhatja azt. Az oktatóanyagban használt sablon neve Egyszerű Windows rendszerű virtuális gép üzembe helyezése.

  1. A Visual Studio Code-ban válassza a Fájl>megnyitása lehetőséget.

  2. A Fájlnév mezőbe illessze be a következő URL-címet:

    https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.compute/vm-simple-windows/azuredeploy.json
    
  3. Az Open (Megnyitás) kiválasztásával nyissa meg a fájlt. A forgatókönyv ugyanaz, mint az oktatóanyag: ARM-sablonok létrehozása függő erőforrásokkal. A sablon hat erőforrást határoz meg:

    Mielőtt testre szabja, hasznos, ha alapszintű ismereteket szeretne a sablonról.

  4. Válassza a Fájl>mentése másként lehetőséget, majd mentse a fájl egy példányát a helyi számítógépre azuredeploy.json néven.

  5. Ismételje meg az 1–3. lépést a következő URL-cím megnyitásához, majd mentse a fájlt azuredeploy.parameters.json néven.

    https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.compute/vm-simple-windows/azuredeploy.parameters.json
    

A paraméterfájl szerkesztése

A statikus azonosító metódus használatával nem kell módosítania a sablonfájlt. A titkos kód értékének beolvasása a sablon paraméterfájljának konfigurálásával történik.

  1. Nyissa meg az azuredeploy.parameters.json fájlt a Visual Studio Code-ban, ha még nincs megnyitva.

  2. Frissítse a paramétert a adminPassword következőre:

    "adminPassword": {
      "reference": {
        "keyVault": {
          "id": "/subscriptions/<SubscriptionID>/resourceGroups/mykeyvaultdeploymentrg/providers/Microsoft.KeyVault/vaults/<KeyVaultName>"
        },
        "secretName": "vmAdminPassword"
      }
    },
    

    Fontos

    Cserélje le a értékét id az előző eljárásban létrehozott kulcstartó erőforrás-azonosítójára. A secretName kód a következő: vmAdminPassword. Lásd: Kulcstartó előkészítése.

    Kulcstartó és Resource Manager sablon virtuális gép üzembehelyezési paraméterfájljának integrálása

  3. Frissítse a következő értékeket:

    • adminUsername: A virtuálisgép-rendszergazdai fiók neve.
    • dnsLabelPrefix: Nevezze el az dnsLabelPrefix értéket.

    Példák a nevekre: az előző kép.

  4. Mentse a módosításokat.

A sablon üzembe helyezése

  1. Jelentkezzen be a Cloud Shell.

  2. Válassza ki az előnyben részesített környezetet a bal felső sarokban található PowerShell vagy Bash (parancssori felülethez) lehetőség kiválasztásával. A váltáskor a felületet újra kell indítani.

    fájl feltöltésének Azure Portal Cloud Shell

  3. Kattintson a Fájlok feltöltése/letöltése, majd a Feltöltés elemre. Töltse fel az azuredeploy.json és az azuredeploy.parameters.json fájlt is a Cloud Shell. A fájl feltöltése után a ls paranccsal és a cat paranccsal ellenőrizheti, hogy a fájl feltöltése sikeresen megtörtént-e.

  4. Futtassa a következő PowerShell-szkriptet a sablon üzembe helyezéséhez.

    $projectName = Read-Host -Prompt "Enter the same project name that is used for creating the key vault"
    $location = Read-Host -Prompt "Enter the same location that is used for creating the key vault (i.e. centralus)"
    $resourceGroupName = "${projectName}rg"
    
    New-AzResourceGroupDeployment `
        -ResourceGroupName $resourceGroupName `
        -TemplateFile "$HOME/azuredeploy.json" `
        -TemplateParameterFile "$HOME/azuredeploy.parameters.json"
    
    Write-Host "Press [ENTER] to continue ..."
    

    A sablon üzembe helyezésekor használja ugyanazt az erőforráscsoportot, amelyet a kulcstartóban használt. Ez a módszer megkönnyíti az erőforrások törlését, mivel kettő helyett csak egy erőforráscsoportot kell törölnie.

Az üzembe helyezés ellenőrzése

A virtuális gép sikeres üzembe helyezése után tesztelje a bejelentkezési hitelesítő adatokat a key vaultban tárolt jelszóval.

  1. Nyissa meg az Azure Portalt.

  2. Válassza aYourResourceGroupName>simpleWinVM erőforráscsoportok<> elemet.>

  3. Válassza a felül található Csatlakozás lehetőséget.

  4. Válassza az RDP-fájl letöltése lehetőséget, majd az utasításokat követve jelentkezzen be a virtuális gépre a kulcstartóban tárolt jelszóval.

Az erőforrások eltávolítása

Ha már nincs szüksége az Azure-erőforrásokra, törölje az üzembe helyezett erőforrásokat az erőforráscsoport törlésével.

$projectName = Read-Host -Prompt "Enter the same project name that is used for creating the key vault"
$resourceGroupName = "${projectName}rg"

Remove-AzResourceGroup -Name $resourceGroupName

Write-Host "Press [ENTER] to continue ..."

Következő lépések

Ebben az oktatóanyagban lekért egy titkos kódot az Azure Key Vaultból. Ezután használta a titkos kódot a sablon üzembe helyezésében. A virtuálisgép-bővítmények üzembe helyezés utáni feladatainak végrehajtásához lásd: