Wenn Sie neue Ressourcen in Azure erstellen, die Geheimnisse wie Passwörter oder SSL-Zertifikate enthalten, können Sie diese sicher im Key Vault speichern und bei der Bereitstellung aus dem Key Vault abrufen. Nur die Personen, die Zugriff auf die Geheimnisse benötigen, können sie im Key Vault lesen und schreiben. In einem Infrastruktur-als-Code-Szenario werden die Geheimnisse bereitgestellt, wenn Sie Ihre Vorlagen in Azure bereitstellen. Der Code selbst ist frei von Geheimnissen.
Um dies zu erreichen, müssen Sie Folgendes tun:- Einen Schlüsseltresor einrichten
- Fügen Sie das Geheimnis zum Key Vault hinzu
- Erstellen Sie eine ARM-Vorlage, die das Geheimnis bei der Bereitstellung verwendet
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"Parameter": {
"keyVaultName": {
"Typ": "string",
"Metadaten": {
"Beschreibung": "Name des Tresors"
}
},
"tenantId": {
"Typ": "string",
"Metadaten": {
"Beschreibung": "Tenant Id für das Abonnement und die Verwendung des zugewiesenen Zugriffs auf den Tresor. Verfügbar über das PowerShell-Cmdlet Get-AzureRMSubscription"
}
}
},
"Variablen":{
"skuFamily": "A",
"skuName": "Standard"
},
"Ressourcen": [
{
"Typ": "Microsoft.KeyVault/vaults",
"name": "[parameters('keyVaultName')]",
"apiVersion": "2015-06-01",
"Standort": "[resourceGroup().location]",
"Eigenschaften": {
"sku": {
"name": "[variables('skuName')]",
"Familie": "[Variablen('skuFamilie')]"
},
"accessPolicies": [
],
"tenantId": "[parameters('tenantId')]",
"enabledForDeployment": false,
"enabledForTemplateDeployment": true,
"enabledForVolumeEncryption": false
}
}
]
}
Geheimnis zum Key Vault hinzufügen
Das Geheimnis kann dem Key Vault mit einer ARM-Vorlage oder mit Powershell hinzugefügt werden oder Sie können es im Portal hinzufügen.
{
"Typ": "Geheimnisse",
"Name": "[parameters('secretName')]",
"apiVersion": "2015-06-01",
"Eigenschaften": {
"Wert": "[parameter('secretValue')]"
},
"dependsOn": [
"[concat('Microsoft.KeyVault/vaults/', parameters('keyVaultName'))]"
]
}
Erstellen Sie eine ARM-Vorlage, die das Geheimnis bei der Bereitstellung verwendet
Der letzte Schritt ist die Verwendung der Geheimnisse in Ihren Arm-Vorlagen. Dazu können Sie in den Parametern einen Verweis auf Ihren Schlüsseltresor angeben:
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
"contentVersion": "1.0.0.0",
"Parameter": {
"Passwort": {
"Referenz": {
"keyVault": {
"id": "/Abonnements/{guid}/resourceGroups/{group-name}/providers/Microsoft.KeyVault/vaults/{vault-name}"
},
"GeheimName": "adminPasswort"
}
},
"Benutzername": {
"Wert": "exampleadmin"
}
}
}
Diese Art des Verweises auf das Kennwort ist für ein Infrastruktur-als-Code-Szenario zu statisch. Der nächste Schritt besteht darin, das Geheimnis dynamisch aus dem Key Vault in der Umgebung abzurufen, in der Sie es bereitstellen wollen. Dazu geben Sie den resourceGroupName, vaultName und secretName als Parameter an.
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"Parameter": {
"vaultName": {
"Typ": "string"
},
"GeheimName": {
"Typ": "string"
},
"keyVaultResourceGroup": {
"Typ": "string"
}
},
"Ressourcen": [
{
"apiVersion": "2015-01-01",
"name": "nestedTemplate",
"Typ": "Microsoft.Ressourcen/Einsätze",
"Eigenschaften": {
"Modus": "inkrementell",
"templateLink": {
"uri": " ",
"contentVersion": "1.0.0.0"
},
"Parameter": {
"Passwort": {
"Referenz": {
"keyVault": {
"id": "[concat(subscription().id,'/resourceGroups/',parameters('keyVaultResourceGroup'), '/providers/Microsoft.KeyVault/vaults/', parameters('vaultName'))]"
},
"secretName": "[parameters('secretName')]"
}
}
}
}
}],
"Ausgaben": {}
}
Auf diese Weise können Sie die Geheimnisse aus dem Key Vault in dem Abonnement abrufen, in dem Sie die Bereitstellung vornehmen.
Weitere Informationen finden Sie unter: resource-manager-keyvault-parameter
Verfasst von
Peter Groenewegen
Contact



