Kurz: Integrace služby Azure Key Vault v nasazení šablony ARM

Zjistěte, jak načíst tajné kódy z trezoru klíčů Azure a předat je jako parametry při nasazení šablony Azure Resource Manager (šablona ARM). Hodnota parametru není nikdy zpřístupněna, protože odkazujete pouze na její ID trezoru klíčů. Na tajný kód trezoru klíčů můžete odkazovat pomocí statického nebo dynamického ID. V tomto kurzu se používá statické ID. Při použití statického ID odkazujete na trezor klíčů v souboru parametrů šablony, nikoli na soubor šablony. Další informace o obou přístupech najdete v tématu Použití Azure Key Vault k předání hodnoty zabezpečeného parametru během nasazování.

V kurzu Nastavení pořadí nasazení prostředků vytvoříte virtuální počítač. Musíte zadat uživatelské jméno a heslo správce virtuálního počítače. Místo zadání hesla můžete heslo předem uložit do trezoru klíčů Azure a pak šablonu přizpůsobit tak, aby během nasazování načítala heslo z trezoru klíčů.

Diagram znázorňující integraci šablony Resource Manager s trezorem klíčů

Tento kurz se zabývá následujícími úkony:

  • Příprava trezoru klíčů
  • Otevření šablony rychlého startu
  • Úprava souboru parametrů
  • Nasazení šablony
  • Ověření nasazení
  • Vyčištění prostředků

Pokud předplatné Azure ještě nemáte, napřed si vytvořte bezplatný účet.

Modul Learn, který používá zabezpečenou hodnotu z trezoru klíčů, najdete v tématu Správa složitých cloudových nasazení pomocí pokročilých funkcí šablon ARM.

Požadavky

K dokončení tohoto článku potřebujete:

Příprava trezoru klíčů

V této části vytvoříte trezor klíčů a přidáte do něj tajný klíč, abyste ho mohli načíst při nasazení šablony. Trezor klíčů můžete vytvořit mnoha způsoby. V tomto kurzu použijete Azure PowerShell k nasazení šablony ARM. Tato šablona dělá dvě věci:

  • Vytvoří trezor klíčů s povolenou enabledForTemplateDeployment vlastností. Aby proces nasazení šablony mohl získat přístup k tajným kódům definovaným v trezoru klíčů, musí být tato vlastnost true .
  • Přidá tajný kód do trezoru klíčů. Tajný klíč ukládá heslo správce virtuálního počítače.

Poznámka

Pokud nejste vlastníkem trezoru klíčů nebo přispěvatelem trezoru klíčů, musíte jako uživatel, který nasazuje šablonu virtuálního počítače, udělit přístup k Microsoft.KeyVault/vaults/deploy/action oprávněním trezoru klíčů. Další informace najdete v tématu Použití Azure Key Vault k předání hodnoty zabezpečeného parametru během nasazení.

Pokud chcete spustit následující skript Azure PowerShell, vyberte Vyzkoušet a otevřete Cloud Shell. Pokud chcete skript vložit, klikněte pravým tlačítkem na podokno prostředí a pak vyberte Vložit.

$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 ..."

Důležité

  • Název skupiny prostředků je název projektu, ale je k němu připojen rg . Pokud chcete usnadnit vyčištění prostředků, které jste vytvořili v tomto kurzu, použijte při nasazování další šablony stejný název projektu a název skupiny prostředků.
  • Výchozí název tajného klíče je vmAdminPassword. V šabloně je pevně zakódovaný.
  • Pokud chcete šabloně povolit načtení tajného kódu, musíte povolit zásadu přístupu s názvem Povolení přístupu k Azure Resource Manager pro nasazení šablony pro trezor klíčů. Tato zásada je v šabloně povolená. Další informace o zásadách přístupu najdete v tématu Nasazení trezorů klíčů a tajných kódů.

Šablona má jednu výstupní hodnotu s názvem keyVaultId. Toto ID použijete spolu s názvem tajného kódu k načtení hodnoty tajného kódu později v tomto kurzu. Formát ID prostředku je:

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

Když ID zkopírujete a vložíte, může být rozdělené na několik řádků. Sloučí čáry a oříznou nadbytečné mezery.

Pokud chcete ověřit nasazení, spusťte ve stejném podokně prostředí následující příkaz PowerShellu, který načte tajný kód ve formátu prostého textu. Příkaz funguje pouze ve stejné relaci prostředí, protože používá proměnnou $keyVaultName, která je definovaná v předchozím skriptu PowerShellu.

$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

Teď jste připravili trezor klíčů a tajný klíč. V následujících částech se dozvíte, jak přizpůsobit existující šablonu tak, aby během nasazení načetla tajný kód.

Otevření šablony rychlého startu

Šablony azure pro rychlý start jsou úložiště pro šablony ARM. Místo vytvoření šablony úplně od začátku si můžete najít ukázkovou šablonu a přizpůsobit ji. Šablona použitá v tomto kurzu se nazývá Nasazení jednoduchého virtuálního počítače s Windows.

  1. V editoru Visual Studio Code vyberte Otevřít soubor>.

  2. Do pole Název souboru vložte následující adresu URL:

    https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.compute/vm-simple-windows/azuredeploy.json
    
  3. Výběrem Open (Otevřít) soubor otevřete. Scénář je stejný jako scénář, který se používá v kurzu Vytvoření šablon ARM se závislými prostředky. Šablona definuje šest prostředků:

    Před přizpůsobením šablony je užitečné mít základní znalosti.

  4. Vyberte Soubor>Uložit jako a pak uložte kopii souboru do místního počítače s názvem azuredeploy.json.

  5. Opakováním kroků 1 až 3 otevřete následující adresu URL a pak soubor uložte jako azuredeploy.parameters.json.

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

Úprava souboru parametrů

Pomocí metody statického ID nemusíte v souboru šablony provádět žádné změny. Načtení hodnoty tajného klíče se provádí konfigurací souboru parametrů šablony.

  1. V editoru Visual Studio Code otevřete soubor azuredeploy.parameters.json , pokud ještě není otevřený.

  2. Aktualizujte parametr na adminPassword :

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

    Důležité

    Hodnotu nahraďte id ID prostředku trezoru klíčů, který jste vytvořili v předchozím postupu. Je secretName pevně zakódovaný jako vmAdminPassword. Viz Příprava trezoru klíčů.

    Integrace trezoru klíčů a souboru parametrů nasazení virtuálního počítače šablony Resource Manager

  3. Aktualizujte následující hodnoty:

    • adminUsername: Název účtu správce virtuálního počítače.
    • dnsLabelPrefix: Pojmenujte dnsLabelPrefix hodnotu.

    Příklady názvů najdete na předchozím obrázku.

  4. Uložte změny.

Nasazení šablony

  1. Přihlaste se k Cloud Shell.

  2. Vyberte upřednostňované prostředí tak, že v levém horním rohu vyberete PowerShell nebo Bash (pro rozhraní příkazového řádku). Po přepnutí se vyžaduje restartování prostředí.

    Azure Portal Cloud Shell nahrát soubor

  3. Vyberte Nahrát nebo stáhnout soubory a potom vyberte Nahrát. Nahrajte soubory azuredeploy.json a azuredeploy.parameters.json do Cloud Shell. Po nahrání souboru můžete pomocí ls příkazu a cat příkazu ověřit úspěšné nahrání souboru.

  4. Spusťte následující skript PowerShellu, který šablonu nasadí.

    $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 ..."
    

    Při nasazování šablony použijte stejnou skupinu prostředků, kterou jste použili v trezoru klíčů. Tento přístup usnadňuje vyčištění prostředků, protože místo dvou potřebujete odstranit pouze jednu skupinu prostředků.

Ověření nasazení

Po úspěšném nasazení virtuálního počítače otestujte přihlašovací údaje pomocí hesla uloženého v trezoru klíčů.

  1. Otevřete Azure Portal.

  2. Vyberte Skupiny>< prostředkůYourResourceGroupName>>simpleWinVM.

  3. Nahoře vyberte Připojit .

  4. Vyberte Stáhnout soubor RDP a pak se podle pokynů přihlaste k virtuálnímu počítači pomocí hesla uloženého v trezoru klíčů.

Vyčištění prostředků

Pokud už prostředky Azure nepotřebujete, vyčistěte nasazené prostředky odstraněním skupiny prostředků.

$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 ..."

Další kroky

V tomto kurzu jste získali tajný kód z trezoru klíčů Azure. Pak jste použili tajný kód v nasazení šablony. Informace o tom, jak používat rozšíření virtuálních počítačů k provádění úloh po nasazení, najdete tady: