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íčů.
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:
Visual Studio Code s rozšířením Resource Manager Tools. Viz Rychlý start: Vytváření šablon ARM pomocí editoru Visual Studio Code.
Pokud chcete zvýšit zabezpečení, použijte vygenerované heslo pro účet správce virtuálního počítače. Azure Cloud Shell můžete použít ke spuštění následujícího příkazu v PowerShellu nebo Bash:
openssl rand -base64 32
Další informace získáte spuštěním příkazu
man openssl rand
a otevřete ruční stránku.Ověřte, že vygenerované heslo splňuje požadavky na heslo virtuálního počítače. Každá služba Azure má specifické požadavky na hesla. Informace o požadavcích na heslo virtuálního počítače najdete v tématu Jaké jsou požadavky na heslo při vytváření virtuálního počítače?
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.
V editoru Visual Studio Code vyberte Otevřít soubor>.
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
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ů:
- Microsoft.Storage/storageAccounts.
- Microsoft.Network/publicIPAddresses.
- Microsoft.Network/networkSecurityGroups.
- Microsoft.Network/virtualNetworks.
- Microsoft.Network/networkInterfaces.
- Microsoft.Compute/virtualMachines.
Před přizpůsobením šablony je užitečné mít základní znalosti.
Vyberte Soubor>Uložit jako a pak uložte kopii souboru do místního počítače s názvem azuredeploy.json.
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.
V editoru Visual Studio Code otevřete soubor azuredeploy.parameters.json , pokud ještě není otevřený.
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. JesecretName
pevně zakódovaný jako vmAdminPassword. Viz Příprava trezoru klíčů.Aktualizujte následující hodnoty:
adminUsername
: Název účtu správce virtuálního počítače.dnsLabelPrefix
: PojmenujtednsLabelPrefix
hodnotu.
Příklady názvů najdete na předchozím obrázku.
Uložte změny.
Nasazení šablony
Přihlaste se k Cloud Shell.
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í.
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 acat
příkazu ověřit úspěšné nahrání souboru.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íčů.
Otevřete Azure Portal.
Vyberte Skupiny>< prostředkůYourResourceGroupName>>simpleWinVM.
Nahoře vyberte Připojit .
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: