2.0 KiB
2.0 KiB
ADR 0010 — Secrets-Management
Status
Accepted
Kurz erklärt
Secrets sind geheime technische Zugangsdaten, z. B.:
- API-Keys
- Registrar-Zugänge
- Tokens
- Passwörter
- Webhook-Secrets
Secrets dürfen nicht wie normale Stammdaten gespeichert werden.
Kontext
Hosting-Backoffice wird später Zugangsdaten zu externen Systemen verwalten:
- KeyHelp
- 1blu
- Lexware
- Invoice Ninja
- SMTP
- Zahlungsanbieter
Das Architekturreview hat fehlendes Secrets-Management als kritisches Risiko bewertet.
Entscheidung
Das Datenmodell speichert keine Secrets direkt in fachlichen Tabellen.
Fachliche Tabellen speichern nur Referenzen auf Secrets.
V1-Strategie
Für V1 wird mindestens verwendet:
- verschlüsselte Speicherung mit Laravel Encryption
- getrennte Secret-Tabelle
- Zugriff nur über Secret-Service
- keine Ausgabe von Secrets im UI
- Audit-Log bei Secret-Erstellung/Änderung
- Rotation vorbereiten
Spätere Strategie
Für SaaS- oder größere Multi-Tenant-Nutzung wird ein externer Vault vorbereitet, z. B.:
- HashiCorp Vault
- Bitwarden Secrets Manager
- Cloud KMS / Secrets Manager
Beispiel
Nicht erlaubt:
registrar_accounts.api_password
Erlaubt:
registrar_accounts.secret_reference_id
Begründung
Bei einem Einbruch darf nicht sofort der direkte Zugriff auf alle externen Systeme möglich sein.
Secrets brauchen:
- Verschlüsselung
- Zugriffskontrolle
- Rotation
- Auditierung
- Mandantenisolation
Konsequenzen
Positiv
- höheres Sicherheitsniveau
- bessere Mandantenisolation
- spätere Vault-Anbindung möglich
Negativ
- mehr technische Komplexität
- Secret-Service muss früh gebaut werden
- Backups müssen besonders betrachtet werden
Mindestregeln
- Secrets nie im Klartext loggen
- Secrets nie im UI vollständig anzeigen
- Secrets nie in normalen Exporten ausgeben
- Secret-Zugriff auditieren
- API-Keys rotierbar halten
Verwandte ADRs
- ADR 0004 — Tenancy-Modell
- ADR 0006 — Auth-Strategie
- ADR 0017 — Adapter-Fehlerresilienz