Domino 9 und frühere Versionen > ND6: Entwicklung

Frontend-Security - Eigene Agenten/Masken/etc = Sicher?

<< < (2/6) > >>

flaite:

--- Zitat von: Simon Dotschuweit am 13.07.05 - 13:15:28 ---kann ich den zugriff von außen unterbinden, so dass keine andere DB meine öffnen kann?

--- Ende Zitat ---
In einem Notes System ist Authentifizierung/Autorisierung immer an die ID gebunden. Eine "Datenbank" selbst hat eigentlich keine Authenzität. Serverseitige Agenten laufen unter der Authentizität des Unterzeichners des Agenten. Clientseitige Operationen aus der Datenbank unter der ID des Anwenders.

(nicht persönlich nehmen): Ich find du solltest in diesem Thread ein bischen genauer herausarbeiten, was du eigentlich willst. Die Begrifflichkeit ist schon so vage, dass es für potentielle Adressaten deiner Nachricht schwierig ist herauszufinden, was du willst.
Was heisst Sicherheitskonzept auf Frontend mit Rollen?
Was sind "meine Skripte"? Serverseitige Skripte oder vom Anwender getriggerte Skripte?
Müssen diese Skripte auch auf dem Server laufen?

Ich stimme absolut damit überein, dass die Bedeutung von Definitionen z.T. überschätzt werden. Einen gewissen Sinn haben sie aber eben oft doch.

Axel

Simon Dotschuweit:

--- Zitat von: kennwort am 13.07.05 - 13:30:40 ---(nicht persönlich nehmen): Ich find du solltest in diesem Thread ein bischen genauer herausarbeiten
--- Ende Zitat ---

Ok ist ne gute Idee ;)

Also ich möchte auf dem Frontend(auf z.B. auf der Maske) die Rollen der Nutzer prüfen, z.B. beim OnQueryChangeMode wird überprüft, ob der Nutzer der Ersteller des Dokumentes ist oder ob die Rolle Admin hat, wenn nicht wird abgebrochen. Das Ganze hat den Hintergrund, dass vom Nutzer getriggerte Skripte trotzdem Schreibzugriff auf Dokumente benötigen, die der Nutzer im Frontend nicht bearbeiten darf, mit Autorenfelder wäre das nicht möglich, richtig? Und ja ein Agent in regelmäßigen Abständen auf dem Server läuft braucht auch vollen Zugriff, da er Reponsedokument "umhängen" muss.

Wie gesagt, wenn das Ganze nicht 100% Wasserdicht ist, ist es nicht so kritisch, da es nur eine Feedbackdatenbank ist, wo ich keinen Vorteil sehen würde, der den Aufwand lohnen würde, sie zu hacken, wenn es allerdings irgentwie möglich sein sollte den "Fernzugriff" zu unterbinden, wäre schon nicht schlecht ;)

Semeaphoros:
Also, den Zugriff ohne Autorenfelder zu unterbinden, ist mühsam, aufwendig und sehr fehleranfällig (bin grad am Durchtesten von Zugriffssteuerungen MIT Autorenfeldern, schon das ist mühsam, wenn man das dann noch selber programmieren will, dann wirds echt abenteuerlich).

"Fernzugriff", was immer Du damit meinst, wenn jemand aus einer anderen DB per Script zugreift, greift er auf die Backend-Dokumente, und da kannst Du schlicht und ergreifend so ohne weiteres nichts unterbinden, ausser mit Autorenfeldern oder mit C-API Erweiterungen.

flaite:

--- Zitat von: Simon Dotschuweit am 13.07.05 - 14:02:04 ---
Also ich möchte auf dem Frontend(auf z.B. auf der Maske) die Rollen der Nutzer prüfen, z.B. beim OnQueryChangeMode wird überprüft, ob der Nutzer der Ersteller des Dokumentes ist oder ob die Rolle Admin hat, wenn nicht wird abgebrochen.

--- Ende Zitat ---
Bedenkenswert (aus meiner Sicht):
-> code muss auch im Postopen sein (wenn user Dokument im Editiermodus öffnet). Oder du verhinderst das öffnen im Editiermodus im Postopen ganz (also wieder zusätzlicher Code). Ob das wirklich so notwendig ist, ist eine gute Frage und hängt von der Anwendung ab. Ich würde Leser/Autorenfelder in aller Regel immer präferieren. 
Ich würde das als sicher genug ansehen. Benötigst aber auf jeden Fall Konsistente ACL, da sonst lokal die Rollen nicht funktionieren.

--- Zitat von: Simon Dotschuweit am 13.07.05 - 14:02:04 ---wo ich keinen Vorteil sehen würde, der den Aufwand lohnen würde, sie zu hacken, wenn es allerdings irgentwie möglich sein sollte den "Fernzugriff" zu unterbinden, wäre schon nicht schlecht ;)

--- Ende Zitat ---
LASS ES
Notes-Datenbanken bekommen eigentlich ihr "Remote-Interface" (um es in J2EE Lingua auszudrücken) von der Plattform, ohne dass man da als Entwickler eingreifen könnte.
Da kann man nicht abfragen, von wo der Call kam. Allenfalls als was dieser Call authentifiziert ist (und das sind keine Anwendungen sondern User- oder Server-IDs). Falls jemand auf deine Datenbank zugreift, ist es nicht dein Problem.
Selbst wenn es möglich wäre, sollte immer gefragt werden, ob sich der Aufwand (inklusive zusätzliche Komplexität in der Anwendung für die Zukunft) lohnt.

mein schlimmstes Security/Datenkonsistenz-Problem der letzten 18 Monate:
Ich hab schon Leute erlebt, die sich stundenlang über notes-security ereifern konnten und dann habe ich in der ihren Anwendungen Stellen gefunden, wo User fröhlich über einen technischen DB2-User Datensätze in einer DB2 Datenbank löschen konnten, ohne dass dies irgendwo auch nur geloggt wurde oder der User benachrichtigt wurde.
Wenn der Progger dann noch so nachlässig war, dass die From-clause einfach wegfiehl, wenn ein bestimmter bug auftrat, so dass Delete From xxxxx gegen die RDBMS gesendet wurde, dann hast du ein *ernsthaftes* Security/Datenkonsistenz-Problem. Vor allem wenn auch noch andere Anwendungen von dieser DB2-Tabelle abhängig sind wie Keith Richard von Heroin in den 70ern.
Zum Glück standen in der Tabelle "nur" ca 15 Tupel mit Konfigurationsdaten.

Ansonsten würde ich strikt die Basics einhalten und die Möglichkeiten von Notes-Security nicht überladen mit kreativen, anstrengenden Ideen, die keinen wirklichen praktischen Mehrwert bieten. Irgendjemand hat mal gesungen "Ich hol dir keine Sterne mehr vom Himmel. Die liegen ja dann doch nur bei uns rum".

Axel

flaite:
Simon,

wenn auf die Felder eh nur Agenten schreiben drauf zugreifen, dann kannst du die einfach auf sich selbst berechnet machen (d.h. computed und Feldname in Formel).
Ansonsten dürfte das mit Autorenfeldern machbar sein. Bedenke, dass du die Autoren-Felder ja auch dynamisch verändern kannst (am besten mit NotesItem-Klasse).
Nimm einfach immer das einfache. Und Reader/Autoren-Felder ist der einfachere Mechanismus.
Das wichtige ist wirklich, dass die basics sitzen. Egal jetzt ob LotusNotes Programmierung, Java Programmierung, Datenbank Programmierung oder Go spielen.

Axel

Navigation

[0] Themen-Index

[#] Nächste Seite

[*] Vorherige Sete

Zur normalen Ansicht wechseln