Warum Azure Key Vault?
Secrets (Passwörter, API-Keys, Connection Strings) in Code oder Konfigurationsdateien zu speichern ist ein gravierendes Sicherheitsrisiko. Azure Key Vault löst dieses Problem:
- Centralized: Ein Ort für alle Secrets
- Audited: Jeder Zugriff wird protokolliert
- Rotatable: Secrets können ohne Code-Änderung rotiert werden
- HSM-backed: Optional Hardware-Sicherungsmodul
Key Vault erstellen
# Key Vault erstellen
az keyvault create \
--name kv-firma-prod \
--resource-group rg-firma-prod \
--location germanywestcentral \
--sku standard \
--enable-rbac-authorization true # RBAC statt Access Policies (empfohlen)
Secrets verwalten
# Secret erstellen
az keyvault secret set \
--vault-name kv-firma-prod \
--name "DatabasePassword" \
--value "SuperGeheim123!"
# Secret lesen
az keyvault secret show \
--vault-name kv-firma-prod \
--name "DatabasePassword" \
--query value -o tsv
# Secret mit Ablaufdatum
az keyvault secret set \
--vault-name kv-firma-prod \
--name "ApiKey" \
--value "abc123" \
--expires "2025-12-31T00:00:00Z"
# Alle Secrets auflisten
az keyvault secret list --vault-name kv-firma-prod -o table
# Secret-Versionen anzeigen
az keyvault secret list-versions \
--vault-name kv-firma-prod \
--name "DatabasePassword" -o table
RBAC-Berechtigungen vergeben
# Service Principal (App) lesen lassen
az role assignment create \
--role "Key Vault Secrets User" \
--assignee <SERVICE_PRINCIPAL_ID> \
--scope /subscriptions/<SUB_ID>/resourceGroups/rg-firma-prod/providers/Microsoft.KeyVault/vaults/kv-firma-prod
# Admin (lesen + schreiben)
az role assignment create \
--role "Key Vault Secrets Officer" \
--assignee <USER_EMAIL> \
--scope /subscriptions/<SUB_ID>/resourceGroups/rg-firma-prod/providers/Microsoft.KeyVault/vaults/kv-firma-prod
| RBAC-Rolle | Rechte |
|---|---|
| Key Vault Reader | Metadata lesen |
| Key Vault Secrets User | Secret-Werte lesen |
| Key Vault Secrets Officer | Secrets lesen/schreiben/löschen |
| Key Vault Administrator | Alles inkl. Zugriffsverwaltung |
Integration in Azure App Service
# Managed Identity für App Service aktivieren
az webapp identity assign \
--name firma-webapp \
--resource-group rg-firma-prod
# Identity-Object-ID ermitteln
az webapp identity show \
--name firma-webapp \
--query principalId -o tsv
# Key Vault Zugriff für App Service
az role assignment create \
--role "Key Vault Secrets User" \
--assignee <PRINCIPAL_ID> \
--scope /subscriptions/.../vaults/kv-firma-prod
In der App: @Microsoft.KeyVault(SecretUri=https://kv-firma-prod.vault.azure.net/secrets/DatabasePassword/) als App Setting – der Wert wird automatisch aus Key Vault geladen.
Integration in GitHub Actions
- name: Azure Login
uses: azure/login@v1
with:
creds: ${{ secrets.AZURE_CREDENTIALS }}
- name: Get Key Vault Secret
uses: azure/get-keyvault-secrets@v1
with:
keyvault: "kv-firma-prod"
secrets: "DatabasePassword, ApiKey"
id: keyvaultsecrets
- name: Use Secret
run: echo "DB:" ${{ steps.keyvaultsecrets.outputs.DatabasePassword }}
Zertifikate verwalten
# Selbstsigniertes Zertifikat erstellen
az keyvault certificate create \
--vault-name kv-firma-prod \
--name firma-cert \
--policy "$(az keyvault certificate get-default-policy)"
# Let's Encrypt Zertifikat importieren
az keyvault certificate import \
--vault-name kv-firma-prod \
--name wildcard-cert \
--file certificate.pfx \
--password PfxPasswort
FAQ
Was kostet Azure Key Vault?
Standard-Tier: ~0,03 USD pro 10.000 Operationen. Für KMU mit normaler Nutzung typischerweise unter 5 €/Monat.
Wie sichere ich Key Vault gegen versehentliches Löschen?--enable-soft-delete true (Standard in neuen Vaults) und --enable-purge-protection true aktivieren.
Fazit
Azure Key Vault sollte in jeder Azure-Infrastruktur genutzt werden. Secrets aus Code und Config-Dateien in den Vault – eine der wirkungsvollsten Sicherheitsmaßnahmen.
Azure-Sicherheitsarchitektur für KMU in Heidelberg, Mannheim und der Rhein-Neckar-Region. Beratung anfragen.