Biztonságosan tárolt tanúsítvánnyal rendelkező virtuális gép üzembe helyezése az Azure Stack Hubon
Ez a cikk azt ismerteti, hogyan helyezhet üzembe egy Azure Stack Hub virtuális gépet (VM-et) egy telepített Key Vault tanúsítvánnyal.
Áttekintés
A tanúsítványokat számos forgatókönyvben használják, például az Active Directoryban történő hitelesítéshez vagy a webes forgalom titkosításához. A tanúsítványokat biztonságosan titkos kulcsként tárolhatja egy Azure Stack Hub-kulcstartóban. Az Azure Stack Hub Key Vault használatának előnyei a következők:
- A tanúsítványok nem jelennek meg szkriptekben, parancssori előzményekben vagy sablonban.
- A tanúsítványkezelési folyamat zökkenőmentes.
- Ön szabályozhatja a tanúsítványokhoz hozzáférő kulcsokat.
Folyamat leírása
A következő lépések a tanúsítvány virtuális gépre való leküldéséhez szükséges folyamatot írják le:
- Hozzon létre egy titkos kulcstartót.
- Frissítse az azuredeploy.parameters.json fájlt.
- A sablon üzembe helyezése.
Megjegyzés
Ezeket a lépéseket az Azure Stack Development Kitből (ASDK) vagy egy külső ügyfélből is használhatja, ha VPN-en keresztül csatlakozik.
Előfeltételek
- Elő kell fizetnie egy olyan ajánlatra, amely tartalmazza a Key Vault szolgáltatást.
- Telepítse az Azure Stack Hubhoz készült PowerShellt.
- Konfigurálja az Azure Stack Hub-felhasználó PowerShell-környezetét.
Kulcstartó titkos kódjának létrehozása
A következő szkript .pfx formátumban hoz létre egy tanúsítványt, létrehoz egy kulcstartót, és titkos kódként tárolja a tanúsítványt a kulcstartóban. A contentType
titkos kód értékét értékre pfx
kell állítani.
Fontos
A kulcstartó létrehozásakor a -EnabledForDeployment
paramétert kell használnia. Ez a paraméter biztosítja, hogy a kulcstartó az Azure Resource Manager-sablonokból hivatkozható legyen.
# Create a certificate in the .pfx format
New-SelfSignedCertificate `
-certstorelocation cert:\LocalMachine\My `
-dnsname contoso.microsoft.com
$pwd = ConvertTo-SecureString `
-String "<Password used to export the certificate>" `
-Force `
-AsPlainText
Export-PfxCertificate `
-cert "cert:\localMachine\my\<certificate thumbprint that was created in the previous step>" `
-FilePath "<Fully qualified path to where the exported certificate can be stored>" `
-Password $pwd
# Create a key vault and upload the certificate into the key vault as a secret
$vaultName = "contosovault"
$resourceGroup = "contosovaultrg"
$location = "local"
$secretName = "servicecert"
$fileName = "<Fully qualified path to where the exported certificate can be stored>"
$certPassword = "<Password used to export the certificate>"
$fileContentBytes = get-content $fileName `
-Encoding Byte
$fileContentEncoded = [System.Convert]::ToBase64String($fileContentBytes)
$jsonObject = @"
{
"data": "$filecontentencoded",
"dataType" :"pfx",
"password": "$certPassword"
}
"@
$jsonObjectBytes = [System.Text.Encoding]::UTF8.GetBytes($jsonObject)
$jsonEncoded = [System.Convert]::ToBase64String($jsonObjectBytes)
New-AzResourceGroup `
-Name $resourceGroup `
-Location $location
New-AzKeyVault `
-VaultName $vaultName `
-ResourceGroupName $resourceGroup `
-Location $location `
-sku standard `
-EnabledForDeployment
$secret = ConvertTo-SecureString `
-String $jsonEncoded `
-AsPlainText -Force
Set-AzureKeyVaultSecret `
-VaultName $vaultName `
-Name $secretName `
-SecretValue $secret
A szkript futtatásakor a kimenet tartalmazza a titkos URI-t. Jegyezze fel ezt az URI-t, mivel a Leküldéses tanúsítvány windowsos Resource Manager sablonban kell hivatkoznia rá. Töltse le a vm-push-certificate-windows sablonmappát a fejlesztői számítógépre. Ez a mappa tartalmazza az azuredeploy.json és az azuredeploy.parameters.json fájlokat, amelyekre az alábbi lépésekben szüksége lesz.
Módosítsa az azuredeploy.parameters.json fájlt a környezeti értékeknek megfelelően. A fontos paraméterek a tároló neve, a tároló erőforráscsoportja és a titkos URI (az előző szkript által generált) URI. Az alábbi szakasz egy paraméterfájlra mutat példát.
Az azuredeploy.parameters.json fájl frissítése
Frissítse az azuredeploy.parameters.json fájlt a , titkos vaultName
URI VmName
és egyéb paraméterekkel a környezetének megfelelően. Az alábbi JSON-fájl egy példát mutat be a sablonparaméter-fájlra:
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"newStorageAccountName": {
"value": "kvstorage01"
},
"vmName": {
"value": "VM1"
},
"vmSize": {
"value": "Standard_D1_v2"
},
"adminUserName": {
"value": "demouser"
},
"adminPassword": {
"value": "demouser@123"
},
"vaultName": {
"value": "contosovault"
},
"vaultResourceGroup": {
"value": "contosovaultrg"
},
"secretUrlWithVersion": {
"value": "https://testkv001.vault.local.azurestack.external/secrets/testcert002/82afeeb84f4442329ce06593502e7840"
}
}
}
A sablon üzembe helyezése
Helyezze üzembe a sablont a következő PowerShell-szkripttel:
# Deploy a Resource Manager template to create a VM and push the secret to it
New-AzResourceGroupDeployment `
-Name KVDeployment `
-ResourceGroupName $resourceGroup `
-TemplateFile "<Fully qualified path to the azuredeploy.json file>" `
-TemplateParameterFile "<Fully qualified path to the azuredeploy.parameters.json file>"
A sablon sikeres üzembe helyezésekor a következő kimenet jelenik meg:
Az Azure Stack Hub leküldi a tanúsítványt a virtuális gépre az üzembe helyezés során. A tanúsítvány helye a virtuális gép operációs rendszerétől függ:
- Windows rendszerben a rendszer hozzáadja a tanúsítványt a LocalMachine tanúsítvány helyéhez, a felhasználó által megadott tanúsítványtárolóval.
- Linux rendszeren a tanúsítvány a /var/lib/waagent könyvtár alá kerül, az X509-tanúsítványfájl UppercaseThumbprint.crt fájlnevével, a titkos kulcshoz pedig a UppercaseThumbprint.prv fájlnévvel.
Tanúsítványok kivonása
A tanúsítványok kivonása a tanúsítványkezelési folyamat része. A tanúsítvány régebbi verzióját nem törölheti, de a Set-AzureKeyVaultSecretAttribute
parancsmaggal letilthatja.
Az alábbi példa bemutatja, hogyan tilthat le egy tanúsítványt. Használja a saját értékeit a VaultName
, Name
és Version
paraméterekhez.
Set-AzureKeyVaultSecretAttribute -VaultName contosovault -Name servicecert -Version e3391a126b65414f93f6f9806743a1f7 -Enable 0