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:

  1. Hozzon létre egy titkos kulcstartót.
  2. Frissítse az azuredeploy.parameters.json fájlt.
  3. 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

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 pfxkell á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 vaultNameURI 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:

Sablon üzembehelyezési eredményei

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

Következő lépések