2016-06-21 16 views
0

Mit Event Sourcing ist alles bis zum Anfang rückverfolgbar, also auch User Creation. In unserem System erstellen wir User-Erstellung und Admin-Zeug über eine öffentliche API. Wir haben eine (ziemlich häufige) Sicherheitsregel: Nur Admin-Benutzer können Benutzer löschen und anderen Benutzern Berechtigungen erteilen, d. H. Sie zu Administratoren machen.Wer erstellt den allerersten Admin-Benutzer in einem Event-basierten System?

Im Falle von ES, wie würden Sie das System direkt nach der Neuinstallation bereitstellen? Dies kann bei Sandbox-Integrationstests der Fall sein.

Sorry für diese eher philosophische Frage :)

+0

Kannst du nicht einfach tun das mit Skripten wie einem nicht gesicherten internen Befehlshandler? – plalx

Antwort

0

Wer Root-Zugriff auf root gibt?

Ein ereignisbasiertes System ohne Ereignisse befindet sich in seinem anfänglichen-Status, der nicht notwendigerweise ein Nullstatus ist.

+0

Normalerweise müssen Sie diese Anmeldeinformationen während der Installation angeben. Wenn ich mir andere Dienste anschaue, wie zum Beispiel mysql, sehe ich, dass Sie beim Start ein ROOT-Passwort angeben müssen. So etwas kann während des Starts bootstrapped werden, klingt aber wie ein Sicherheitsproblem. – Pepster

0

Wollen Sie sagen, dass Sie ein Standardadministratorkonto benötigen, um andere Konten zu erstellen? Wenn ja, führen Sie einfach ein Skript, das einen Standard-Admin als Teil des Bereitstellung/Provisioning-Prozesses schafft

[UPDATE]

Sie ein Ereignis in EventStor über HTTP einfügen kann http://docs.geteventstore.com/http-api/3.7.0/writing-to-a-stream

+0

Das Skript muss also auf eine andere Domänenlogik tippen, da die normale Domäne überprüft, ob der erstellende Benutzer die Berechtigung zum Erstellen eines Benutzers hat. – Pepster

+0

@Pepster ja Ich würde den normalen Domain-Prüfcode umgehen und wahrscheinlich nur direkt einen Admin in der Datenbank hinzufügen – tomliversidge

+0

Mit ES müssen Sie ein Ereignis dafür haben, und dann Tabellen anzeigen, die entsprechend aktualisieren können. Ich frage mich, ob das nur mit einem Skript erledigt werden kann. – Pepster