Das Notes Forum
Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: mibo11 am 17.02.05 - 20:16:20
-
Hallo zusammen,
ich habe einmal eine grundsätzliche Frage:
Über die Dokumenteigenschaften ist es ja möglich eine Leseberechtigung auf Dokumente zu setzen. Damit könnte nun ein Benutzer ein Dokument auf das er Editorzugriff hat mit Leserechten versehen. Das Feld $Readers wird angelegt. Dies führt dann dazu, dass selbst programmierte Lesefelder keinen Einfluss mehr haben.
Wie kann man eigentlich verhindern, dass Benutzer mit Editorrechten Leserechte in den Dokumenten vergeben?
Gruß Sascha
-
Eine gute Frage, Sascha. Über den Sinn dieses Features kann man wirklich streiten.
Wie kann man $Readers verhindern ? Okay, da gibt es einige Wege.
- Editorrechte sollten sowieso nur vertrauenswürdige User bekommen. Die anderen können ja auch gut mit Autorrechten leben.
- Weitere Leserfelder werden nach meiner Erfahrung nicht überschrieben. Per Agent könnte man daher $Reader-Items wieder 'rausgeworfen werden.
Dieses Thema sollte aber weiter diskutiert werden - das ist wirklich nicht uninteressant (Danke, Sascha !).
Bernhard
-
Man sollte grundsätzlich mal in jede Maske ein Autorenfeld mit einer Systemrolle a la [DefaultAuthors] versehen. Diese Rolle erhalten dann die Server und ggf. Administratoren und Datenbankmanager.
Dann kann der Besitzer dieser Rolle alles lesen, auch Dokumente die user mit $Readers schützen.
Über Sinn oder Unsinn dieses Features kann man sicherlich streiten. Am besten wäre, dass könnte der Designer einer Maske vorgeben.
Andreas
-
Man sollte grundsätzlich mal in jede Maske ein Autorenfeld mit einer Systemrolle a la [DefaultAuthors] versehen.
Andreas, ich nehme einmal an, dass du hier Lesefeld meinst, oder?
Gruß Sascha
-
NEIN !!!
Denn dann darf ja nur die Rolle [DefaultAuthors] lesen, sofern es kein anderes Autoren- oder Lesefeld gibt.
Andreas
-
OK,
was bringt mir aber ein Autorenfeld, wenn das Dokument für den Administrator nicht mehr sichtbar ist, da es über $Readers mit zusätzlichen Leserechten versehen wurde?
Gruß Sascha
-
Wenn der Admin die Rolle, die im Autorenfeld steht, hat, kann er das Dokument lesen.
Die Felder addieren sich. Und wenn man in einem Autorfeld steht, kann man das Dokument auch lesen, selbst wenn man nicht in einem Lesefeld steht.
Andreas
-
Hallo Andreas,
stimmt vielen Dank.
ERGO, sollte man grundsätzlich, dies habe ich daraus gelernt, jede neue Entwicklung sicherheitshalber immer mit einem Autorenfeld mit z.B. Rolle "[DBAdmin]" beginnen. Dies hilft dann zwar nicht die Benutzer mit Editorzugriff von dem Vorhaben Leserechte zu setzen abzubringen, aber schafft die Möglichkeit die Dokumente nachträglich wieder für die Allgemeinheit sichtbar zu machen.
Schade, dass man offensichtlich das Hinzufügen von Leserechten nicht unterbinden kann.
Gruß Sascha
-
Man kann es natürlich auch programmtechnisch verhindern, in dem man mit Script das $Readers wieder herausnimmt:
Sub Postsave(Source As Notesuidocument)
If Source.Document.HasItem( "$Readers" ) Then
Call Source.Document.RemoveItem( "$Readers" )
Call Source.Document.Save( True, True, True )
End If
End Sub
Nur könnte dann der eine oder andere User verwirrt sein. Wenn dann auf diese Weise noch vertrauliche Daten öffentlich gemacht werden, ist das kritisch. Das gilt aber im übrigen auch für die Rolle.
Also eine interne Klärung und Bekanntgabe ist nötig. Nur um Dich abzusichern!
Andreas
-
PostSave muss aber gar nicht durchlaufen werden, Andreas. Das $Readers-Item kann ja auch gesetzt werden, wenn das Dok im ReadMode ist oder es über die Ansicht macht.
Bernhard
-
PostSave muss aber gar nicht durchlaufen werden, Andreas. Das $Readers-Item kann ja auch gesetzt werden, wenn das Dok im ReadMode ist oder es über die Ansicht macht.
Bernhard
Du hast Recht, es war nur ein netter Versuch :-\
OK, dann bleibt also nur die Rolle, oder?
Andreas
-
Naja, der "nette Versuch" erspart dem periodischen Agent schon mal etwas Arbeit ;)
Bernhard