Kurz: Integrace služby Azure Key Vault do nasazení šablony ARM
Naučte se načítat tajné kódy z trezoru klíčů Azure a předávat tajné kódy jako parametry při nasazování šablony Azure Resource Manageru (šablona ARM). Hodnota parametru není nikdy vystavena, protože odkazujete pouze na JEHO ID trezoru klíčů. Na tajný klíč trezoru klíčů můžete odkazovat pomocí statického ID nebo dynamického ID. Tento kurz 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 oboupřístupch
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 načítala heslo z trezoru klíčů během nasazení.
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 ještě nemáte předplatné Azure, vytvořte si napřed 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 Nástroje Resource Manageru Viz Rychlý start: Vytváření šablon ARM pomocí editoru Visual Studio Code.
Pokud chcete zvýšit zabezpečení, použijte pro účet správce virtuálního počítače vygenerované heslo. 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
man openssl rand
ručně otevřené stránky.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. Požadavky 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ý kód, abyste ho mohli při nasazování šablony načíst. 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í. Tato vlastnost musí být pravdivá , aby proces nasazení šablony měl přístup k tajným kódům definovaným v trezoru klíčů. - Přidá do trezoru klíčů tajný klíč. Tajný klíč ukládá heslo správce virtuálního počítače.
Poznámka:
Jako uživatel, který nasazuje šablonu virtuálního počítače, pokud nejste vlastníkem nebo přispěvatelem trezoru klíčů, musí vám vlastník nebo přispěvatel udělit přístup k Microsoft.KeyVault/vaults/deploy/action
oprávnění k trezoru klíčů. Další informace najdete v tématu Použití služby Azure Key Vault k předání hodnoty zabezpečeného parametru během nasazování.
Pokud chcete spustit následující skript Azure PowerShellu, vyberte Vyzkoušet a otevřete Cloud Shell. Skript vložíte tak, že kliknete pravým tlačítkem myši na podokno prostředí a pak vyberete 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 s připojenou rg . Pokud chcete usnadnit vyčištění prostředků, které jste vytvořili v tomto kurzu, použijte při nasazení další šablony stejný název projektu a název skupiny prostředků.
- Výchozí název tajného kódu je vmAdminPassword. Šablona je pevně zakódovaná.
- Pokud chcete šabloně povolit načtení tajného kódu, musíte povolit zásadu přístupu s názvem Povolit přístup k Azure Resource Manageru pro nasazení šablony pro trezor klíčů. Tato zásada je v šabloně povolená. Další informace ozásadách
Šablona má jednu výstupní hodnotu, která se nazývá 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čí řádky a oříznou nadbytečné mezery.
Pokud chcete ověřit nasazení, spusťte následující příkaz PowerShellu ve stejném podokně prostředí a načtě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íč. Následující části ukazují, jak přizpůsobit existující šablonu pro načtení tajného kódu během nasazení.
Otevření šablony rychlého startu
Šablony pro rychlý start Azure jsou úložištěm 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 Soubor>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: Vytvář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 šablony.
Vyberte Soubor>Uložit jako a potom 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 provádět žádné změny v souboru šablony. Načtení hodnoty tajného kódu se provádí konfigurací souboru parametrů šablony.
V editoru Visual Studio Code otevřete 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é
Nahraďte hodnotu
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 do Cloud Shellu.
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 azuredeploy.json i azuredeploy.parameters.json do Cloud Shellu. Po nahrání souboru můžete použít
ls
příkaz acat
příkaz k ověření úspěšného nahrání souboru.Spuštěním následujícího skriptu PowerShellu šablonu nasaďte.
$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 jenom 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 postupujte podle pokynů pro přihlášení 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 prostředky, které jste nasadili, 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 načetli tajný klíč ze svého trezoru klíčů Azure. Pak jste použili tajný kód v nasazení šablony. Informace o používání rozšíření virtuálních počítačů k provádění úloh po nasazení najdete v tématu: