Files
123123/ZA.CoreService.ESBCertificateManager/Database/README.md
T

37 lines
1.8 KiB
Markdown

# Datenbank EsbZertifikatManager
Schlankes Schema (6 Tabellen) für den ESB Certificate Manager.
## Hierarchie
- **Company** — DE / PL / AT
- **Environment** — TEST2 / TEST / PROD (an `SonicConnection`)
- **SonicConnection** — Management-Host/Port/Domain
- **SonicCredential** — Always-Encrypted-Zugangsdaten (einziger Credential-Speicher)
- **SonicContainer** — Container je Company + Connection
- **CertificateTarget** — Deploy-Pfad/Dateiname (+ lokales File-Backup)
## Deployment (bestehende befüllte DB ersetzen)
Alles wird gelöscht — keine Migration.
1. **Always-Encrypted-Zertifikat** prüfen (Thumbprint aus `appsettings.json``AlwaysEncrypted:CertificateThumbprint`) unter `CurrentUser\My` inkl. privatem Schlüssel.
2. Skripte **in dieser Reihenfolge** in SSMS ausführen:
1. `00_DropExisting.sql` — droppt `EsbZertifkatManager` (Alt) und `EsbZertifikatManager` inkl. CMK/CEK
2. `01_CreateDatabase.sql` — leere Ziel-DB
3. `02_CreateSchema.sql` — Always Encrypted (CMK/CEK) + 6 Tabellen
4. `03_Seed.sql` — Company + Environment
3. Connection String: `Database=EsbZertifikatManager` und `Column Encryption Setting=Enabled`.
4. Connections / Container / Targets manuell anlegen; Credentials **nur** über Setup-Wizard (`SonicCredential`, Always Encrypted).
5. App neu starten.
## Always Encrypted
| Objekt | Name |
|---|---|
| Column Master Key | `CMK_ESB_ZertifikatManager` |
| Column Encryption Key | `CEK_ESB_ZertifikatManager` |
| Verschlüsselte Spalten | `SonicCredential.CredentialUserName`, `SonicCredential.CredentialSecret` |
CMK zeigt auf `CurrentUser/My/<Thumbprint>`. Der `ENCRYPTED_VALUE` der CEK gilt nur für dieses Zertifikat — bei neuem Cert CEK in SSMS neu erzeugen und in `02_CreateSchema.sql` ersetzen.