100 lines
2.0 KiB
Markdown
100 lines
2.0 KiB
Markdown
# 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:
|
|
|
|
```text
|
|
registrar_accounts.api_password
|
|
```
|
|
|
|
Erlaubt:
|
|
|
|
```text
|
|
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
|