AZURE KEY VAULT → STACKIT SECRETS MANAGER UND KMS · TUTORIAL

Azure Key Vault zu STACKIT Secrets Manager und KMS

Ein Key Vault enthält Secrets, Keys und Zertifikate. STACKIT hat Secrets Manager für die ersten und KMS für die zweiten; für die Zertifikatserneuerung nennt der Lauf keinen STACKIT-Dienst. StackToIT schreibt eine Secrets-Manager-Instanz für den Vault und führt jedes Objekt, jede Einstellung und jede Zugriffsregel auf, die es nicht übernimmt. Die Anleitung folgt einem Demo-Vault mit Secret, Key und Zertifikat von der Eingabe bis zu einem Plan je Objekt.

Ein Vault hinein, eine Secrets-Manager-Instanz heraus

Eine für diese Seite geschriebene Demo-Umgebung, am 4. November 2026 mit StackToIT bewertet: Vault der Standard-Stufe mit RBAC-Autorisierung und Purge Protection, ein Secret, ein RSA-Key und ein Zertifikat. Links Vault, Secret und Key aus der Eingabe (der Zertifikatsblock ist weggelassen). Rechts der Ressourcenblock des STACKIT-Terraforms, das die Engine geschrieben hat; die Review-Kommentare darüber in der Datei sind hier weggelassen.

Beispieleingabemain.tf
resource "azurerm_key_vault" "shop" {
  name                       = "kv-shop-gwc"
  location                   = azurerm_resource_group.sec.location
  resource_group_name        = azurerm_resource_group.sec.name
  tenant_id                  = data.azurerm_client_config.current.tenant_id
  sku_name                   = "standard"
  soft_delete_retention_days = 30
  purge_protection_enabled   = true
  rbac_authorization_enabled = true
}

resource "azurerm_key_vault_secret" "db_password" {
  name         = "orders-db-password"
  value        = var.db_password
  key_vault_id = azurerm_key_vault.shop.id
}

resource "azurerm_key_vault_key" "data" {
  name         = "data-encryption-key"
  key_vault_id = azurerm_key_vault.shop.id
  key_type     = "RSA"
  key_size     = 2048
  key_opts     = ["decrypt", "encrypt", "wrapKey", "unwrapKey"]
}
STACKIT-Terraform von StackToITterraform/security.tf
resource "stackit_secretsmanager_instance" "migrated_secrets" {
  project_id = var.project_id
  name       = "migrated-secrets"
}
  • Die Instanz ist alles, was der Entwurf schreibt

    Der Lauf legt die Secrets-Manager-Instanz an und nichts darin. Die Kommentare halten fest, dass keine Einstellung des Vaults erzeugt wird, weder Name, Tenant, SKU, Zugriffs- und Netzwerkregeln noch Aufbewahrung, und dass jedes Secret als Key in der Instanz neu angelegt wird.

  • Werte gelangen nie in den Entwurf

    Der Secret-Wert kommt in der Quelle aus einer sensitiven Variable. Der Lauf schreibt keinen Wert; die kritische Einstellung zu den Vault-Objekten sagt, dass eine Person jedes Secret in die Instanz einträgt.

  • Keys und Zertifikate sind Entscheidungen

    Typ, Größe und Operationen eines Keys wählen Sie am KMS-Key; für Ausstellung und Erneuerung von Zertifikaten gibt es bei STACKIT kein Gegenstück. Der Entwurf weist beides als nicht übernommen aus.

Wie der Lauf den Vault einstuft

Auszug aus assessment.json für die Vault-Einheit (id sowie Klasse, Konfidenz und Ziel des Ergebnisses, Werte wie geschrieben), dann ausgewählte Kommentarzeilen aus terraform/security.tf, unverändert.

StackToIT-Bewertung (Auszug)assessment.json
{
  "id": "azurerm_key_vault.shop",
  "result": {
    "class": "RECONFIGURE",
    "confidence": "MEDIUM",
    "target": {
      "service": "STACKIT Secrets Manager (+ KMS for keys)",
      "resources": [
        "stackit_secretsmanager_instance",
        "stackit_secretsmanager_user"
      ]
    }
  }
}
Kommentarzeilen im Entwurfterraform/security.tf
# NOT CARRIED (azurerm_key_vault_key.data): key_opts, key_size = 2048, key_type = RSA, key_vault_id, name = data-encryption-key — a setting of azurerm_key_vault.shop: recreate its secrets as secrets in the Secrets Manager instance; none of the vault's settings (name, tenant, SKU, access policies, network rules, retention) is generated.
# NOT CARRIED (azurerm_key_vault_secret.db_password): key_vault_id, name = orders-db-password, value — a setting of azurerm_key_vault.shop: recreate its secrets as secrets in the Secrets Manager instance; none of the vault's settings (name, tenant, SKU, access policies, network rules, retention) is generated.
# azurerm_key_vault.shop: WARNING kv-certificates: Certificates (possibly auto-renewed by Key Vault) are stored in the vault; STACKIT has no certificate-lifecycle service, so renewal moves to the load balancer certificate upload or cert-manager.
# azurerm_key_vault.shop: WARNING kv-access-model: Access is granted to Entra principals (access policies or Azure RBAC); on STACKIT access is granted to Secrets Manager users or service accounts, so every consumer gets new credentials.
  • RECONFIGURE, keine Kopie

    Die Klasse ist RECONFIGURE mit Konfidenz MEDIUM. Anwendungen wechseln vom Key-Vault-SDK oder von Key-Vault-Referenzen zu einem Vault-Client oder zur Injektion durch die Plattform, und von Entra-Principals zu Secrets-Manager-Benutzern.

  • Zehn offene Einstellungen, drei Verantwortliche

    decisions.json führt zehn offene kritische Einstellungen in drei Einträgen. Fünf liegen beim Identity Architect: Zugriffsmodell, Löschschutz, Resource-Group-Scope, Tenant und Vault-Objekte. Der Platform Architect bestätigt vier Namen, nämlich die von Vault, Secret, Key und Zertifikat; die Zertifikate selbst verantwortet der Security Architect. Den Löschschutz weist der Lauf ausdrücklich zurück: Er findet bei STACKIT kein Gegenstück; daher muss ein Redesign oder eine akzeptierte Abweichung ihn klären.

Wohin jedes Key-Vault-Objekt geht

Key-Vault-ObjektSTACKIT-ZielWas der Lauf sagt
VaultSecrets-Manager-InstanzAls gemeinsame Instanz für alle migrierten Secrets erzeugt
SecretEin Key in der Instanz (KV2-Store)Wert setzt eine Person; nicht im Entwurf
Key (RSA 2048)KMS-Keyring und -KeyNicht erzeugt; nicht exportierbare Keys werden neu angelegt, nicht kopiert
ZertifikatZertifikats-Upload am Load Balancer oder cert-managerDie Erneuerung verlagert sich; STACKIT hat keinen Dienst für den Zertifikats-Lebenszyklus
RBAC oder Access PolicySecrets-Manager-Benutzer oder Service AccountsJeder Verbraucher bekommt neue Zugangsdaten
Soft Delete und Purge ProtectionVersionslimit und eigenes BackupEinzelne Secrets lassen sich nicht aus dem Backup wiederherstellen

Klassen und Wortlaut, wie der Lauf sie entschieden hat. Secret, Key und Zertifikat gehören zur Vault-Einheit.

Die Migration in der Reihenfolge

  1. Den Vault inventarisieren

    Listen Sie Secrets, Keys, Zertifikate und deren Verbraucher auf. Der Lauf listet die Objekte aus dem Terraform; außerhalb davon angelegte Objekte sieht er nicht.

  2. Die Instanz anlegen

    Wenden Sie die erzeugte Instanz zuerst in einem Testprojekt an. Der Provider dokumentiert die Secrets-Manager-Ressourcen nur für eine Provider-Konfiguration mit default_region eu01.

  3. Secrets übertragen

    STACKIT nennt Kompatibilität mit HashiCorp Vault KV2 und genau eine Secrets Engine. Schreiben Sie jeden Wert mit der Vault CLI, wie es die STACKIT-Anleitung zeigt, etwa vault kv put -mount=<Instanz-ID> orders-db-password value=…, und setzen Sie ein Versionslimit, denn abgerechnet werden Secret-Versionen.

  4. Keyrings und Keys anlegen

    Legen Sie einen Keyring an, danach jeden Key mit einem Algorithmus und Zweck, die KMS anbietet. KMS nimmt importiertes Schlüsselmaterial an, doch laut Lauf werden nicht exportierbare Azure-Keys neu angelegt.

  5. Zertifikatsverwaltung ersetzen

    Laden Sie das Zertifikat am Load Balancer hoch oder betreiben Sie cert-manager auf einem Cluster. Planen Sie die Erneuerung als Arbeit ein, denn nichts erneuert das Zertifikat für Sie.

  6. Neuen Zugriff ausstellen

    Geben Sie jedem Verbraucher einen Secrets-Manager-Benutzer. Das Passwort wird automatisch erzeugt und lässt sich nicht ändern; für ein neues Passwort legen Sie einen neuen Benutzer an.

Keyring, Key und ein Lese-Benutzer von Hand

  • Zuerst der Keyring

    stackit_kms_keyring braucht eine project_id und einen display_name. Der Entwurf schreibt keinen Keyring; Sie ergänzen ihn, sobald die Entscheidungen zu den Keys gefallen sind.

  • Dann der Key

    stackit_kms_key braucht keyring_id, display_name, protection, algorithm und purpose; das Beispiel des Providers nutzt für protection den Wert software. Für den RSA-2048-Verschlüsselungs-Key der Demo-Umgebung passt von den gelisteten Werten am ehesten rsa_2048_oaep_sha256 mit dem Zweck asymmetric_encrypt_decrypt.

  • Passung des Keys prüfen

    Der Azure-Key erlaubt encrypt, decrypt, wrapKey und unwrapKey. Stand November 2026 nennt STACKIT KMS aes_256_gcm und RSA-OAEP-Varianten (2048, 3072 und 4096 Bit mit SHA-256, 4096 Bit mit SHA-512) zum Ver- und Entschlüsseln. Ob eine davon zu der Art passt, wie Ihr Code Datenschlüssel umhüllt, prüfen Sie vor jedem Cutover selbst.

  • Erzeugen oder importieren

    In KMS legen Sie je Key oder Key-Version fest, ob das Material erzeugt oder importiert wird; ein Export von Keys ist laut STACKIT nicht vorgesehen. Keys, die KMS nie verlassen, werden neu angelegt, wie es der Lauf für nicht exportierbare Azure-Keys festhält.

  • Ein Verbraucher nur mit Lesezugriff

    stackit_secretsmanager_user mit write_enabled auf false gibt einer Anwendung nur Lesezugriff. Das Passwort erzeugt der Dienst, und der Provider liefert es als sensitives Attribut.

  • Destroy löscht nicht

    Bei destroy plant der Provider einen Key nur zur Löschung ein und entfernt einen Keyring lediglich aus dem State. Behandeln Sie beide als langlebige Ressourcen.

Fragen von Security-Teams

Lässt sich ein gelöschtes Secret wiederherstellen?

Nicht aus dem Backup. STACKIT hält fest, dass einzelne Secrets nicht wiederherstellbar sind und das Backup der Notfallwiederherstellung dient. Überschriebene Secrets bleiben als ältere Versionen erhalten, wenn das Versionslimit über eins liegt. Halten Sie daher eine externe Kopie der Werte, wenn Sie sich auf Wiederherstellung nach dem Löschen verlassen.

Ersetzt KMS die Key-Vault-Keys eins zu eins?

Nicht als Kopie. KMS nennt eine Menge von Algorithmen und Zwecken und erlaubt Import, doch der Lauf behandelt exportierbare und nicht exportierbare Keys verschieden und verlangt eine Entscheidung je Key.

Was passiert mit Zertifikaten?

Laut Lauf hat STACKIT keinen Dienst für den Zertifikats-Lebenszyklus. Die Erneuerung verlagert sich auf den Upload am Load Balancer oder auf cert-manager.

Welche Anwendungen ändern sich?

Die, die das Key-Vault-SDK aufrufen oder Key-Vault-Referenzen nutzen. Sie wechseln auf einen Vault-Client oder auf Injektion durch die Plattform, zum Beispiel den External Secrets Operator auf einem Cluster.

Quellen

Ihr nächster Schritt: STACKIT.

Erzählen Sie uns von Ihrer Umgebung. Wir zeigen Ihnen, was StackToIT dafür liefert: Zielarchitektur, Terraform-Artefakte und einen strukturierten Migrationsplan.