Dateianhänge und Speicher konfigurieren
SignMeUp speichert Metadaten und Zugriffsbeziehungen in PostgreSQL. Die eigentlichen Dateiinhalte werden wahlweise in einem privaten Dateisystemverzeichnis oder einem S3-kompatiblen Objektspeicher abgelegt.
Da Anmeldeantworten, Notenimporte und Bestandsdokumente grundsätzlich als vertraulich behandelt werden, startet die API nur mit einer wirksamen Speicherverschlüsselung. Konfigurieren Sie daher vor dem ersten Start entweder S3-seitiges AES256 oder die Anwendungsverschlüsselung ApplicationAesGcm.
Empfohlene Produktionskonfiguration
Abschnitt betitelt „Empfohlene Produktionskonfiguration“Für produktive Installationen mit mehreren Instanzen wird ein privater S3-Bucket empfohlen. Unterstützt der S3-Endpunkt keine serverseitige Verschlüsselung, aktivieren Sie die Anwendungsverschlüsselung mit AES-256-GCM.
FileStorage__Provider=S3FileStorage__S3__ServiceUrl=https://s3.example.comFileStorage__S3__Bucket=signmeup-filesFileStorage__S3__AccessKey=your-access-keyFileStorage__S3__SecretKey=your-secret-key-or-tokenFileStorage__S3__ForcePathStyle=trueFileStorage__S3__ServerSideEncryption=None
FileStorage__Encryption__Mode=ApplicationAesGcmFileStorage__Encryption__KeyVersion=v1FileStorage__Encryption__KeyBase64=base64-encoded-32-byte-key
FileStorage__Migration__RunOnStartup=trueFileStorage__Migration__BatchSize=50FileStorage__StagedRetentionHours=24Erzeugen Sie den Anwendungsschlüssel beispielsweise mit:
openssl rand -base64 32Speichern Sie Zugangsdaten und Schlüssel ausschließlich als Deployment-Secrets oder mit .NET User Secrets. Tragen Sie diese Werte nicht in versionierte Konfigurationsdateien ein.
S3-seitige Verschlüsselung
Abschnitt betitelt „S3-seitige Verschlüsselung“Wenn Ihr S3-kompatibler Anbieter SSE-S3 unterstützt, können Sie stattdessen folgende Werte verwenden:
FileStorage__S3__ServerSideEncryption=Aes256FileStorage__Encryption__Mode=NonePrüfen Sie dies vorab mit Ihrem Anbieter. Einige S3-kompatible Endpunkte unterstützen den AES256-Header nicht. Der Bucket muss privat bleiben; Downloads erfolgen über die authentifizierten SignMeUp-Endpunkte.
Dateisystem verwenden
Abschnitt betitelt „Dateisystem verwenden“Das Dateisystem eignet sich für Entwicklung oder eine einzelne Instanz mit dauerhaft eingebundenem Speicher:
FileStorage__Provider=FileSystemFileStorage__FileSystem__RootPath=/var/lib/signmeup/filesFileStorage__Encryption__Mode=ApplicationAesGcmFileStorage__Encryption__KeyVersion=v1FileStorage__Encryption__KeyBase64=base64-encoded-32-byte-keyDas Verzeichnis darf nicht öffentlich vom Webserver ausgeliefert werden. Geben Sie dem API-Prozess Lese-, Schreib- und Löschrechte und nehmen Sie das Verzeichnis in die Datensicherung auf. Mehrere API-Instanzen benötigen ein gemeinsames, dauerhaftes Dateisystem; verwenden Sie andernfalls S3.
Bestehende Datenbankdateien migrieren
Abschnitt betitelt „Bestehende Datenbankdateien migrieren“Mit FileStorage__Migration__RunOnStartup=true verschiebt SignMeUp bestehende Document.Content-Daten beim Start in den konfigurierten Dateispeicher. Die Dokument-IDs bleiben erhalten. Erst nach erfolgreicher Speicherung wird der Binärinhalt aus PostgreSQL entfernt.
Empfohlenes Vorgehen:
- Sichern Sie PostgreSQL sowie Verschlüsselungsschlüssel und Speicherzugang.
- Prüfen Sie Schreib-, Lese- und Löschzugriff auf den Ziel-Speicher.
- Aktivieren Sie die gewünschte Verschlüsselung.
- Starten Sie die API und beobachten Sie die Migrationsprotokolle.
- Prüfen Sie anschließend in PostgreSQL:
SELECT COUNT(*)FROM "Documents"WHERE "StoredFileId" IS NULL AND "Content" IS NOT NULL;Das erwartete Ergebnis ist 0. Bei Fehlern bleiben die ursprünglichen Daten erhalten und können nach Behebung der Ursache erneut migriert werden. Die Batchgröße muss zwischen 1 und 500 liegen.
Bereinigung und Aufbewahrung
Abschnitt betitelt „Bereinigung und Aufbewahrung“Der Hangfire-Job stored-file-cleanup läuft stündlich. Er entfernt nicht mehr referenzierte Dateien, zum Löschen vorgemerkte Objekte und abgelaufene, noch nicht zugeordnete Uploads. FileStorage__StagedRetentionHours legt die Aufbewahrungsdauer solcher Uploads fest und muss größer als 0 sein.
Soft-gelöschte Events und Anmeldungen behalten ihre Dateien, solange die Datensätze wiederherstellbar sind. Erst die endgültige Bereinigung entfernt die Verknüpfungen und anschließend nicht mehr benötigte Speicherobjekte.
Inbetriebnahme prüfen
Abschnitt betitelt „Inbetriebnahme prüfen“- API startet ohne Fehler der
FileStorage-Konfigurationsvalidierung. - Bucket oder Verzeichnis ist privat, dauerhaft und gesichert.
- Ein nicht vertraulicher Testanhang erscheint in der E-Mail.
- Ein vertraulicher Testanhang fehlt in der E-Mail und ist nach dem Login abrufbar.
- Die Dokumentmigration meldet keine verbleibenden Datensätze.
- Der Hangfire-Job
stored-file-cleanupwird stündlich ausgeführt.
Weitere technische Details und Diagramme finden Sie in der Entwicklerdokumentation zum Dateispeicher.
Eine verständliche Beschreibung für Endnutzerinnen und Endnutzer finden Sie unter So schützt SignMeUp Ihre Dateien.