Bereitstellen einer Azure Stack Hub-VM mithilfe eines in Key Vault gespeicherten Kennworts

In diesem Artikel erfahren Sie Schritt für Schritt, wie Sie einen virtuellen Windows Server-Computer mit einem sicheren Kennwort bereitstellen, das in einer Azure Stack Hub-Key Vault-Instanz gespeichert ist. Die Verwendung eines Schlüsseltresorkennworts ist sicherer als die Übergabe eines Nur-Text-Kennworts.

Übersicht

Sie können Werte – wie z. B. Kennwörter – als Geheimnis in einem Azure Stack Hub-Key Vault-Instanz speichern. Auf das erstellte Geheimnis kann dann in Azure Resource Manager-Vorlagen verwiesen werden. Die Verwendung von Geheimnissen mit Resource Manager bietet folgende Vorteile:

  • Das Geheimnis muss nicht bei jeder Bereitstellung einer Ressource manuell eingegeben werden.
  • Sie können angeben, welche Benutzer oder Dienstprinzipale Zugriff auf ein Geheimnis haben sollen.

Voraussetzungen

Die folgenden Schritte beschreiben das Verfahren zum Erstellen eines virtuellen Computers durch Abrufen des Kennworts, das in einem Schlüsseltresor gespeichert ist:

  1. Erstellen eines Geheimnisses im Schlüsseltresor
  2. Aktualisieren Sie die azuredeploy.parameters.json-Datei.
  3. Stellen Sie die Vorlage bereit.

Hinweis

Führen Sie die Schritte über das Azure Stack Development Kit (ASDK) oder über einen externen Client aus, wenn eine Verbindung per VPN besteht.

Erstellen eines Geheimnisses im Schlüsseltresor

Das folgende Skript erstellt einen Schlüsseltresor und speichert ein Kennwort als Geheimnis im Schlüsseltresor. Verwenden Sie beim Erstellen des Schlüsseltresors den -EnabledForDeployment-Parameter. Dieser Parameter stellt sicher, dass von Azure Resource Manager-Vorlagen auf den Schlüsseltresor verwiesen werden kann.


$vaultName = "contosovault"
$resourceGroup = "contosovaultrg"
$location = "local"
$secretName = "MySecret"

New-AzResourceGroup `
  -Name $resourceGroup `
  -Location $location

New-AzKeyVault `
  -VaultName $vaultName `
  -ResourceGroupName $resourceGroup `
  -Location $location
  -EnabledForTemplateDeployment

$secretValue = ConvertTo-SecureString -String '<Password for your virtual machine>' -AsPlainText -Force

Set-AzureKeyVaultSecret `
  -VaultName $vaultName `
  -Name $secretName `
  -SecretValue $secretValue

Wenn Sie das vorherige Skript ausführen, enthält die Ausgabe den URI (Uniform Resource Identifier) des Geheimnisses. Notieren Sie sich diesen URI. Sie müssen in der Vorlage zum Bereitstellung eines virtuellen Windows-Computers mit Kennwort in einem Schlüsseltresor darauf verweisen. Laden Sie den Ordner 101-vm-secure-password auf den Entwicklungscomputer herunter. Dieser Ordner enthält die Dateien azuredeploy.json und azuredeploy.parameters.json, die Sie in den nächsten Schritten benötigen.

Ändern Sie die Datei azuredeploy.parameters.json gemäß den Werten Ihrer Umgebung. Die Parameter, die hier von besonderem Interesse sind, sind der Tresorname, die Tresorressourcengruppe und der URI des Geheimnisses (vom vorherigen Skript erstellt). Die unten stehende Datei ist ein Beispiel für eine Parameterdatei.

Aktualisieren der Datei „azuredeploy.parameters.json“

Aktualisieren Sie die Datei azuredeploy.parameters.json gemäß Ihrer Umgebung mit den Werten für den Schlüsseltresor-URI, den Geheimnisnamen und den Administratorbenutzernamen des virtuellen Computers. Die folgende JSON-Datei zeigt ein Beispiel der Vorlagenparameterdatei:

{
    "$schema":  "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
    "contentVersion":  "1.0.0.0",
    "parameters":  {
       "adminUsername":  {
         "value":  "demouser"
          },
       "adminPassword":  {
         "reference":  {
            "keyVault":  {
              "id":  "/subscriptions/xxxxxx/resourceGroups/RgKvPwd/providers/Microsoft.KeyVault/vaults/KvPwd"
              },
            "secretName":  "MySecret"
         }
       },
       "dnsLabelPrefix":  {
          "value":  "mydns123456"
        },
        "windowsOSVersion":  {
          "value":  "2016-Datacenter"
        }
    }
}

Bereitstellung von Vorlagen

Stellen Sie nun die Vorlage mithilfe des folgenden PowerShell-Skripts bereit:

New-AzResourceGroupDeployment `
  -Name KVPwdDeployment `
  -ResourceGroupName $resourceGroup `
  -TemplateFile "<Fully qualified path to the azuredeploy.json file>" `
  -TemplateParameterFile "<Fully qualified path to the azuredeploy.parameters.json file>"

Wenn die Vorlage erfolgreich bereitgestellt wurde, erhalten Sie die folgende Ausgabe:

Deployment output

Nächste Schritte