Cvičení – správa tajných kódů v šabloně ARM
V přechozím cvičení jste spustili základní šablonu Azure Resource Manageru (ARM), která zřizuje virtuální počítač se systémem Linux. V této části provedete podobný postup.
Tentokrát místo předání hesla jako parametru uložíte toto heslo v trezoru klíčů Azure Key Vault. Pokud chcete šabloně ARM povolit přístup k heslu, vytvoříte soubor parametrů, který odkazuje na tajný kód trezoru klíčů ve vašem předplatném.
Nasazení trezoru klíčů Azure Key Vault
Poznámka:
Z důvodu omezení sandboxu tu vytvoříte trezor klíčů v Azure Key Vaultu z portálu Azure Portal. Za normálních okolností byste trezor klíčů vytvořili z Azure PowerShellu pomocí rutiny New-AzKeyVault
.
Vytvořte trezor klíčů a umožněte přístup v době nasazení. Postup:
Vytvořte proměnnou PowerShellu, která bude obsahovat název trezoru klíčů:
$KVNAME="tailwind-secrets" + (Get-Random -Count 1 -Maximum 9999999)
Spuštěním příkazu
$KVNAME
vytiskněte její hodnotu:$KVNAME
Výstup bude vypadat podobně jako tento (číslo, které uvidíte, se bude lišit):
tailwind-secrets5978564
Zkopírujte hodnotu na nějaké vhodné místo pro další krok.
Pomocí stejného účtu, kterým jste aktivovali sandbox, se přihlaste k webu Azure Portal.
V nabídce webu Azure Portal nebo na domovské stránce vyberte Vytvořit prostředek.
Do vyhledávacího pole zadejte Key Vault.
V seznamu vyberte Key Vault a začněte konfigurovat trezor klíčů výběrem možnosti Vytvořit.
V podokně pro vytváření zadejte tyto hodnoty:
- Skupina prostředků:
název skupiny prostředků . - Název trezoru
$KVNAME
klíčů: Vaše hodnota , například tailwind-secrets5978564.
- Skupina prostředků:
Vyberte Zkontrolovat a vytvořit.
Vyberte Vytvořit. To by mělo trvat asi minutu. Až bude prostředek vytvořen, vyberte Přejít k prostředku.
V části Nastavení vyberte Konfiguraci přístupu. Povolte možnost Azure Resource Manager pro nasazení šablony a vyberte Použít.
Z relace PowerShellu spusťte rutinu
ConvertTo-SecureString
a přiřaďte výsledek do proměnnésecretSecureString
:$secretSecureString = ConvertTo-SecureString 'insecurepassword123!' -AsPlainText -Force
Spuštěním následujícího příkazu
Set-AzKeyVaultSecret
vytvořte tajný kód v trezoru klíčů. Tajný kód má názevvmPassword
s hodnotouinsecurepassword123!
:$secret = Set-AzKeyVaultSecret -VaultName $KVNAME -Name vmPassword -SecretValue $secretSecureString
Vytvoření souboru parametrů
Tady vytvoříte soubor parametrů, který bude obsahovat název virtuálního počítače, uživatelské jméno správce a odkaz na heslo virtuálního počítače v trezoru klíčů.
Parametry můžete předávat do šablon z příkazového řádku. Připomínáme, že soubor parametrů je alternativní způsob, jak předávat parametry do šablony ARM během nasazování. Soubor parametrů vám umožní přístup k tajným kódům trezoru klíčů z vaší šablony.
Spuštěním následujícího příkazu
Get-AzKeyVault
vytiskněte ID trezoru klíčů:Get-AzKeyVault -VaultName $KVNAME | Select-Object -ExpandProperty ResourceId
Výstup bude vypadat nějak takto:
/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/<rgn>[resource group name]</rgn>/providers/Microsoft.KeyVault/vaults/tailwind-secrets3020
Výstup si poznamenejte pro další krok.
V editoru Visual Studio Code vytvořte soubor s názvem azuredeploy.parameters.json ve stejném adresáři, který obsahuje soubor azuredeploy.json.
Přidejte tento obsah do souboru azuredeploy.parameters.json:
{ "$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" } } } }
Hodnotu parametru
id
(prázdný řetězec) nahraďte hodnotou, kterou jste zkopírovali v předchozím kroku. Pak soubor uložte.
Nasazení virtuálního počítače s Linuxem
Tady nasadíte stejnou šablonu ARM, kterou jste nasadili v předchozím cvičení. Tentokrát poskytnete soubor parametrů, který bude odkazovat na heslo virtuálního počítače v trezoru klíčů.
Spusťte následující příkaz
New-AzResourceGroupDeployment
:New-AzResourceGroupDeployment ` -TemplateFile "./azuredeploy.json" ` -TemplateParameterFile "./azuredeploy.parameters.json" ` -dnsLabelPrefix ("vm2-" + (Get-Random -Count 1 -Maximum 9999999))
V předchozím cvičení jste poskytli všechny páry klíč-hodnota přímo z příkazového řádku. Tady určíte
"./azuredeploy.parameters.json"
k poskytnutí souboru parametrů.dnsLabelPrefix
má nastavenou hodnotuvm2-
následovanou náhodným číslem. To je vyžadováno k tomu, aby se tento název DNS lišil od názvu DNS, který jste použili v předchozím cvičení.
Ověření nasazení
Ověřte, že je virtuální počítač zřízený a že se k němu dá připojit přes SSH. Postup:
Spuštěním příkazu
Invoke-Expression
se připojte k virtuálnímu počítači přes SSH:Invoke-Expression (Get-AzResourceGroupDeployment -Name azuredeploy -ResourceGroupName <rgn>your resource group</rgn>).outputs.sshCommand.value
Po zobrazení výzvy zadejte
yes
, abyste mohli pokračovat v připojování. Pak zadejte heslo správce.insecurepassword123!
Důležité
V běžné praxi zachovávejte hesla v bezpečí. Můžete také používat ověřování pomocí veřejného klíče, což je obvykle bezpečnější než používání hesel.
Z připojení SSH k virtuálnímu počítači vytiskněte spuštěním příkazu
hostname
název hostitele virtuálního počítače:hostname
Zobrazí se název interního hostitele virtuálního počítače:
vm1
vm2
Spuštěním příkazu
exit
opusťte relaci SSH.exit
Výborně! Rozšířili jste své nasazení tak, aby zahrnovalo soubor parametrů, který čte informace tajných kódů z trezoru klíčů Key Vault.
Nasazení trezoru klíčů Azure Key Vault
V Key Vaultu vytvořte trezor klíčů a přidejte heslo virtuálního počítače jako zabezpečený tajný kód. Postup:
Vytvořte proměnnou Bash, která bude obsahovat název trezoru klíčů.
KVNAME=tailwind-secrets$RANDOM
Názvy trezorů klíčů musí být jedinečné. Část
$RANDOM
zajišťuje, že název trezoru klíčů končí náhodnou řadou čísel.Spuštěním následujícího příkazu
az keyvault create
vytvořte trezor klíčů:az keyvault create \ --name $KVNAME \ --enabled-for-template-deployment true
Argument
--enabled-for-template-deployment
umožňuje šabloně ARM načítat tajné kódy z trezoru klíčů.Spuštěním následujícího příkazu
az keyvault secret set
vytvořte tajný kód v trezoru klíčů. Tajný kód má názevvmPassword
s hodnotouinsecurepassword123!
:az keyvault secret set \ --vault-name $KVNAME \ --name vmPassword \ --value 'insecurepassword123!'
Vytvoření souboru parametrů
Tady vytvoříte soubor parametrů, který bude obsahovat název virtuálního počítače, uživatelské jméno správce a odkaz na heslo virtuálního počítače v trezoru klíčů.
Parametry můžete předávat do šablon z příkazového řádku. Připomínáme, že soubor parametrů je alternativní způsob, jak předávat parametry do šablony ARM během nasazování. Soubor parametrů vám umožní přístup k tajným kódům trezoru klíčů z vaší šablony.
Spuštěním následujícího příkazu
az keyvault show
vytiskněte ID trezoru klíčů:az keyvault show \ --name $KVNAME \ --query id \ --output tsv
Výstup bude vypadat nějak takto:
/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/<rgn>[resource group name]</rgn>/providers/Microsoft.KeyVault/vaults/tailwind-secrets3020
Výstup si poznamenejte pro další krok.
V editoru Visual Studio Code vytvořte soubor s názvem azuredeploy.parameters.json ve stejném adresáři, který obsahuje soubor azuredeploy.json.
Přidejte tento obsah do souboru azuredeploy.parameters.json:
{ "$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" } } } }
Hodnotu parametru
id
(prázdný řetězec) nahraďte hodnotou, kterou jste zkopírovali v předchozím kroku. Pak soubor uložte.
Nasazení virtuálního počítače s Linuxem
Tady nasadíte stejnou šablonu ARM, kterou jste nasadili v předchozím cvičení. Tentokrát poskytnete soubor parametrů, který bude odkazovat na heslo virtuálního počítače v trezoru klíčů.
Šablonu nasaďte spuštěním následujícího příkazu az deployment group create
:
az deployment group create \
--template-file azuredeploy.json \
--parameters @azuredeploy.parameters.json dnsLabelPrefix="vm2-$RANDOM"
V předchozím cvičení jste poskytli všechny páry klíč-hodnota v argumentu --parameters
. Tady určíte @azuredeploy.parameters.json
k poskytnutí souboru parametrů.
dnsLabelPrefix
má nastavenou hodnotu vm2-
následovanou náhodným číslem. To je vyžadováno k tomu, aby se tento název DNS lišil od názvu DNS, který jste použili v předchozím cvičení.
Ověření nasazení
Jako v předchozím cvičení ověřte, že je virtuální počítač zřízený a že se k němu dá připojit přes SSH. Kvůli zjednodušení tentokrát přeskočíte některé mezikroky.
Spuštěním následujícího kódu se připojte ke svému virtuálnímu počítači přes SSH:
$(az deployment group show \ --name azuredeploy \ --query properties.outputs.sshCommand.value \ --output tsv)
Po zobrazení výzvy zadejte
yes
, abyste mohli pokračovat v připojování. Pak zadejte heslo správce.insecurepassword123!
Z připojení SSH k virtuálnímu počítači vytiskněte spuštěním příkazu
hostname
název hostitele virtuálního počítače:hostname
Zobrazí se název interního hostitele virtuálního počítače:
vm2
vm2
Spuštěním příkazu
exit
opusťte relaci SSH.exit
Výborně! Rozšířili jste své nasazení tak, aby zahrnovalo soubor parametrů, který čte informace tajných kódů z trezoru klíčů Key Vault.