Gyakorlat – Titkos kódok kezelése az ARM-sablonban
Az előző gyakorlatban egy egyszerű Azure Resource Manager- (ARM-) sablont futtatott, amely egy linuxos virtuális gépet helyez üzembe. Ebben a részben is hasonlóan fog eljárni.
Ezúttal ahelyett, hogy a jelszót paraméterként adná át, az Azure Key Vaultban fogja tárolni azt. Ahhoz, hogy az ARM-sablon hozzáférhessen a jelszóhoz, egy paraméterfájlt kell létrehoznia, amely az előfizetésbeli kulcstartóban lévő titkos kódra hivatkozik.
Az Azure Key Vault üzembe helyezése
Megjegyzés:
A tesztkörnyezet korlátozásai miatt itt az Azure Portalról fog Azure Key Vault-kulcstartót létrehozni. Az Azure PowerShellből általában a New-AzKeyVault
parancsmaggal hozna létre kulcstartót.
Hozzon létre egy kulcstartót, és engedélyezze annak üzembe helyezéskori elérését. Ehhez tegye a következőket:
Hozzon létre egy PowerShell-változót, amely a kulcstartó nevét tartalmazza:
$KVNAME="tailwind-secrets" + (Get-Random -Count 1 -Maximum 9999999)
Írassa ki ennek értékét a
$KVNAME
paranccsal:$KVNAME
A kimenet az alábbihoz hasonló (a megjelenő szám más lesz):
tailwind-secrets5978564
Másolja ki az értéket egy kényelmesen elérhető helyre a következő lépéshez.
Jelentkezzen be az Azure Portalra ugyanazzal a fiókkal, amellyel aktiválta a tesztkörnyezetet.
Az Azure Portal menüjében vagy a Kezdőlapon válassza az Erőforrás létrehozása elemet.
A keresőmezőbe írja be a Key Vault nevet.
Válassza ki a Key Vault elemet a listából, majd a Létrehozás lehetőséget a kulcstartó konfigurálásának megkezdéséhez.
A létrehozási panelen adja meg ezeket az értékeket:
- Erőforráscsoport:
erőforráscsoport neve . - Kulcstartó neve: A tailwind-secrets5978564 értéke
$KVNAME
.
- Erőforráscsoport:
Select Review + create.
Válassza a Létrehozás lehetőséget. Ez körülbelül egy percet vesz igénybe. Ha az erőforrás létrejött, válassza az Erőforrás megnyitása lehetőséget.
Válassza a Hozzáférési konfiguráció lehetőséget a Gépház alatt. Engedélyezze az Azure Resource Manager lehetőséget a sablon üzembe helyezéséhez , és válassza az Alkalmaz lehetőséget.
A PowerShell-munkamenetben futtassa a
ConvertTo-SecureString
parancsmagot, és rendelje hozzá az eredményt asecretSecureString
változóhoz:$secretSecureString = ConvertTo-SecureString 'insecurepassword123!' -AsPlainText -Force
Futtassa az alábbi
Set-AzKeyVaultSecret
parancsot a kulcstartó titkos kódjának létrehozásához. A titok nevevmPassword
, az értéke pediginsecurepassword123!
:$secret = Set-AzKeyVaultSecret -VaultName $KVNAME -Name vmPassword -SecretValue $secretSecureString
A paraméterfájl létrehozása
Itt egy paraméterfájlt hoz létre, amely tartalmazza a virtuális gép nevét, a rendszergazda felhasználónevét, és egy hivatkozást a virtuális gép kulcstartóban lévő jelszavára.
A sablonoknak a parancssorból adhat át paramétereket. Mint tudja, a paraméterfájl alternatív módot kínál a paraméterek ARM-sablonnak történő átadására az üzembe helyezés során. Paraméterfájllal a sablonból férhet hozzá a kulcstartóban lévő titkos kódokhoz.
Futtassa az alábbi
Get-AzKeyVault
parancsmagot a kulcstartó azonosítójának kiírásához:Get-AzKeyVault -VaultName $KVNAME | Select-Object -ExpandProperty ResourceId
A kimenet az alábbihoz hasonló:
/subscriptions/7c7df858-93a0-4f38-8990-304c836a4e8d/resourceGroups/<rgn>[resource group name]</rgn>/providers/Microsoft.KeyVault/vaults/tailwind-secrets3020
Jegyezze fel a kimenetét a következő lépéshez.
A Visual Studio Code-ban hozzon létre egy azuredeploy.parameters.json fájlt ugyanabban a könyvtárban, amely az azuredeploy.json fájlt is tartalmazza.
Illessze be az azuredeploy.parameters.json fájlba az alábbi tartalmat:
{ "$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" } } } }
Az
id
értékét (az üres sztringet) írja felül az előző lépésben kimásolt értékkel. Then save the file.
Linux rendszerű virtuális gép üzembe helyezése
Itt is ugyanazt az ARM-sablont fogja üzembe helyezni, amelyet az előző gyakorlatban. Ezúttal megadja hozzá azt a paraméterfájl, amely a virtuális gép kulcstartóban lévő jelszavára hivatkozik.
Futtassa az alábbi
New-AzResourceGroupDeployment
parancsot:New-AzResourceGroupDeployment ` -TemplateFile "./azuredeploy.json" ` -TemplateParameterFile "./azuredeploy.parameters.json" ` -dnsLabelPrefix ("vm2-" + (Get-Random -Count 1 -Maximum 9999999))
Az előző gyakorlatban az összes kulcs-érték párt közvetlenül a parancssorból adta át. Itt a paraméterfájlt adja meg a
"./azuredeploy.parameters.json"
formában.A
dnsLabelPrefix
beállításavm2-
, és egy véletlenszerű szám. Ez azért szükséges, hogy a DNS-név más legyen, mint az előző gyakorlatban használt DNS-név.
Az üzembe helyezés ellenőrzése
Ellenőrizze, hogy a virtuális gép ki van építve, és elérhető SSH-n keresztül. Ehhez tegye a következőket:
Az
Invoke-Expression
parancsmaggal kapcsolódjon a virtuális géphez SSH-n keresztül:Invoke-Expression (Get-AzResourceGroupDeployment -Name azuredeploy -ResourceGroupName <rgn>your resource group</rgn>).outputs.sshCommand.value
Amikor a rendszer kéri, adja meg
yes
a csatlakozás folytatásához. Ezután adja meg a rendszergazdai jelszót.insecurepassword123!
Fontos
A gyakorlatban mindig használjon biztonságos jelszavakat. Használhat nyilvános kulcsú hitelesítést is, amely általában biztonságosabb a jelszóhasználatnál.
A virtuális géppel való SSH-kapcsolatból futtassa a
hostname
parancsot a virtuális gép nevének megjelenítéséhez:hostname
Ekkor megjelenik a virtuális gép belső állomásneve:
vm1
vm2
Futtassa az
exit
parancsot az SSH-munkamenet bezárásához.exit
Szép munka! Kiegészítette az üzembe helyezést egy olyan paraméterfájllal, amely a Key Vaultból olvas ki titkos információkat.
Az Azure Key Vault üzembe helyezése
Az Azure Key Vaultban hozzon létre egy kulcstartót, és adja hozzá a virtuális gép jelszavát biztonságos titkos kódként. Ehhez tegye a következőket:
Hozzon létre egy Bash-változót, amely a kulcstartó nevét tartalmazza.
KVNAME=tailwind-secrets$RANDOM
A kulcstartók neveinek egyedinek kell lenniük. A
$RANDOM
rész biztosítja, hogy a kulcstartó neve véletlenszerű számsorozattal végződjön.Futtassa az alábbi
az keyvault create
parancsot a kulcstartó létrehozásához:az keyvault create \ --name $KVNAME \ --enabled-for-template-deployment true
Az
--enabled-for-template-deployment
argumentum engedélyezi az Azure Resource Manager- (ARM-) sablon számára, hogy titkos kódokat kérjen le a kulcstartóból.Futtassa az alábbi
az keyvault secret set
parancsot a kulcstartó titkos kódjának létrehozásához. A titok nevevmPassword
, az értéke pediginsecurepassword123!
:az keyvault secret set \ --vault-name $KVNAME \ --name vmPassword \ --value 'insecurepassword123!'
A paraméterfájl létrehozása
Itt egy paraméterfájlt hoz létre, amely tartalmazza a virtuális gép nevét, a rendszergazda felhasználónevét, és egy hivatkozást a virtuális gép kulcstartóban lévő jelszavára.
A sablonoknak a parancssorból adhat át paramétereket. Mint tudja, a paraméterfájl alternatív módot kínál a paraméterek ARM-sablonnak történő átadására az üzembe helyezés során. Paraméterfájllal a sablonból férhet hozzá a kulcstartóban lévő titkos kódokhoz.
Futtassa az alábbi
az keyvault show
parancsmagot a kulcstartó azonosítójának kiírásához:az keyvault show \ --name $KVNAME \ --query id \ --output tsv
A kimenet az alábbihoz hasonló:
/subscriptions/7c7df858-93a0-4f38-8990-304c836a4e8d/resourceGroups/<rgn>[resource group name]</rgn>/providers/Microsoft.KeyVault/vaults/tailwind-secrets3020
Jegyezze fel a kimenetét a következő lépéshez.
A Visual Studio Code-ban hozzon létre egy azuredeploy.parameters.json fájlt ugyanabban a könyvtárban, amely az azuredeploy.json fájlt is tartalmazza.
Illessze be az azuredeploy.parameters.json fájlba az alábbi tartalmat:
{ "$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" } } } }
Az
id
értékét (az üres sztringet) írja felül az előző lépésben kimásolt értékkel. Then save the file.
Linux rendszerű virtuális gép üzembe helyezése
Itt is ugyanazt az ARM-sablont fogja üzembe helyezni, amelyet az előző gyakorlatban. Ezúttal megadja hozzá azt a paraméterfájl, amely a virtuális gép kulcstartóban lévő jelszavára hivatkozik.
Futtassa az alábbi az deployment group create
parancsot a sablon üzembe helyezéséhez:
az deployment group create \
--template-file azuredeploy.json \
--parameters @azuredeploy.parameters.json dnsLabelPrefix="vm2-$RANDOM"
Az előző gyakorlatban az összes kulcs-érték párt a --parameters
argumentumban adta át. Itt a paraméterfájlt adja meg a @azuredeploy.parameters.json
formában.
A dnsLabelPrefix
beállítása vm2-
, és egy véletlenszerű szám. Ez azért szükséges, hogy a DNS-név más legyen, mint az előző gyakorlatban használt DNS-név.
Az üzemelő példány ellenőrzése
Ahogyan az előző gyakorlatban, most is ellenőrizze, hogy a virtuális gép ki van építve, és elérhető SSH-n keresztül. Az egyszerűség kedvéért most kihagyhat néhány köztes lépést.
Kapcsolódjon SSH-val a virtuális géphez az alábbi paranccsal:
$(az deployment group show \ --name azuredeploy \ --query properties.outputs.sshCommand.value \ --output tsv)
Amikor a rendszer kéri, adja meg
yes
a csatlakozás folytatásához. Ezután adja meg a rendszergazdai jelszót.insecurepassword123!
A virtuális géppel való SSH-kapcsolatból futtassa a
hostname
parancsot a virtuális gép nevének megjelenítéséhez:hostname
Ekkor megjelenik a virtuális gép belső állomásneve:
vm2
vm2
Futtassa az
exit
parancsot az SSH-munkamenet bezárásához.exit
Szép munka! Kiegészítette az üzembe helyezést egy olyan paraméterfájllal, amely a Key Vaultból olvas ki titkos információkat.