Autor Thema: Zugriff auf eine Datenbank beschränken  (Gelesen 9289 mal)

Offline Bruce Willis

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.002
  • Geschlecht: Männlich
  • Wer nicht wagt...
Zugriff auf eine Datenbank beschränken
« am: 06.12.17 - 17:27:24 »
Hallo,

ich habe ein seltsames Problem...

Es gibt eine Datenbank, wo mehrere Users und Gruppen verschiedene ACL Zugriffe (Editor, Autor, Leser...) und Rollen haben.
Die Rollen werden in Autor- und Leser-Feldern gespeichert.
Jetzt muss ich den Zugriff auf einige Dokumente stark beschränken.

Ich lösche jetzt fast alle Autor- und Leser-Felder in diesen Dokumenten (außer der Felder mit den ServerNamen und NotesAdmins), aber die vorherigen Berechtigten können immer noch auf diese Dokumente zugreifen!

Code
	Call doc.RemoveItem("readService")
	Call doc.RemoveItem("readCMDB")
	Call doc.RemoveItem("readAlleDoks")
	Call doc.RemoveItem("editAlleDoks")
        ...
        Call doc.Save(False, True)

Woran kann es liegen bzw. was sollte man noch tun?

Gruß
Leo
« Letzte Änderung: 06.12.17 - 17:31:19 von Bruce Willis »
nobody is perfect but i'm pretty close 

Offline WildVirus

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 658
  • Geschlecht: Männlich
Re: Zugriff auf eine Datenbank beschränken
« Antwort #1 am: 06.12.17 - 18:20:50 »
Hallo Leo,

sicher, dass es keine anderen Autor-/Leserfelder mehr gibt und dass die Werte in den vorhandenen A/L-Feldern korrekt sind ?

Arbeiten die AW auf dem Domino oder auf lokalen Repliken ?

Ist die ACL überall identisch ?

CU
Axel

Offline Bruce Willis

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.002
  • Geschlecht: Männlich
  • Wer nicht wagt...
Re: Zugriff auf eine Datenbank beschränken
« Antwort #2 am: 07.12.17 - 11:24:58 »
Hallo Axel,

Danke für die Vorschläge, all das sieht gut aus. Ich hatte in den fraglichen Dokumenten sogar die Inhalte jedes Feldes (insgesamt etwa 100) überprüft und nichts Verdachtiges gefunden.
Das Problem betrifft aber nur diese Datenbank bzw. alle Repliken. In der Schablone und Testumgebung funktioniert alles richtig...
Die Datenbank ist etwa 20 GB groß, hat etwa 60.000 Dokumente und 24 ACL-Rollen...

Gruß
Leo
nobody is perfect but i'm pretty close 

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.870
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Re: Zugriff auf eine Datenbank beschränken
« Antwort #3 am: 07.12.17 - 11:42:21 »
Lass Dir doch mal alle Autoren und Leser- Felder NACH Deinem Save anzeigen:
Code
			ForAll item In doc.Items
				If item.Isauthors Then
					ForAll strValue In item.values
						If strAuthors = "" then
							strAuthors = item.name & "=" & strValue
						Else
							strAuthors = strAuthors & "," & item.name & "=" & strValue
						End If
					End ForAll
				ElseIf item.Isreaders Then
					ForAll strValue In item.values
						If strReaders = "" then
							strReaders = item.name & "=" & strValue
						Else
							strReaders = strReaders & "," & item.name & "=" & strValue
						End If
					End ForAll
				End If			
			End ForAll
			Msgbox "Authors: " & strAuthors
			Msgbox "Readers: " & strReaders
Steht da wirklich nur das drin, was Du erwarten würdest? Oder ist da was drin, wo Du sagst "Ach mensch... darüber kriegen die die Berechtigung...."
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

Offline Bruce Willis

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.002
  • Geschlecht: Männlich
  • Wer nicht wagt...
Re: Zugriff auf eine Datenbank beschränken
« Antwort #4 am: 08.12.17 - 12:19:45 »
Hallo Torsten,

vielen Dank für Deinen tollen Script!
Du hast mir sehr geholfen!!!   :knuddel:

Das Problem habe ich gelöst.
Ein schönes Wochenende!

Gruß
Leo
nobody is perfect but i'm pretty close 

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.870
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Re: Zugriff auf eine Datenbank beschränken
« Antwort #5 am: 08.12.17 - 12:23:35 »
UND WIE? Sinn des Forums ist es, dass andere von den Lösungen PROFITIEREN! Bitte teile uns mit, inwieweit Dir das geholfen hat....
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

Offline Bruce Willis

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.002
  • Geschlecht: Männlich
  • Wer nicht wagt...
Re: Zugriff auf eine Datenbank beschränken
« Antwort #6 am: 08.12.17 - 13:05:07 »
UND WIE?...
Hallo Torsten,

die größte Hilfe deines Scripts war, dass ich die Masken richtig aufräumen konnte. Sie hatten eine ganze Menge der Leser- und Editor-Felder, die kein Mensch (mehr) braucht.

Außerdem hat dein Script schnell bestätigt, dass die Inhalte dieser Felder keine verdächtigen Namen beinhalten. Ich musste also woanders suchen... Und Folgendes habe ich gefunden:

Es gibt die Leser- und Editor-Felder "berechnet beim Anlegen", die der User per Button (bzw. LS) löscht. Damit war alles OK.

Es gibt noch die Leser- und Editor-Felder bloß "berechnet", mit z.B. so einer Formel

@If (cmdb = "Ja";  "[CMDB]" ; "" )

die ich zuerst etwa so geändert hatte:

@If (cmdb = "Ja" & makePrivat = "";  "[CMDB]" ; "" )

Wo makePrivat ein Feld ist, dessen Inhalt der User per Button ändern kann.

Es stellte sich heraus, wenn so ein Feld vorher nicht leer war, dann wurde nach dem Betätigung des Buttons und dem Speichern des Doks der Zugriff so geändert, dass ALLE (!!!) dieses Dok sehen bzw. editieren konnten!!!

Daher habe ich jetzt etwa so geändert und alles funktioniert richtig:
@If (cmdb = "Ja" & makePrivat = "";  "[CMDB]" ; "NotesAdmins" )

Unsere Gruppe NotesAdmins soll sowieso alle Doks in dieser DB editieren können.

Gruß
Leo
nobody is perfect but i'm pretty close 

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.870
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Re: Zugriff auf eine Datenbank beschränken
« Antwort #7 am: 08.12.17 - 13:09:16 »
ok. Danke!
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

Offline Bruce Willis

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.002
  • Geschlecht: Männlich
  • Wer nicht wagt...
Re: Zugriff auf eine Datenbank beschränken
« Antwort #8 am: 08.12.17 - 13:49:49 »
Ich würde das Ganze (bzw. diesen Notes Bug?) so beschreiben:

Wenn eine Rolle in ein Leser- oder Autor-Feld eingetragen wurde, darf danach dieses Feld nicht leer werden, da sonnst auf dieses Dokument jeder zugreifen darf.
nobody is perfect but i'm pretty close 

Offline WildVirus

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 658
  • Geschlecht: Männlich
Re: Zugriff auf eine Datenbank beschränken
« Antwort #9 am: 08.12.17 - 14:29:46 »
It's not a bug, it's a feature.

Aus der Notes 6-Hilfe (http://82.135.123.244/help/help6_designer.nsf/57b669b13aec7ba780256c250050b13e/e829c36c4b7f1a0a80256c4700389ac1?OpenDocument):

Alle Benutzer mit Editorzugriff (oder höher) auf die Datenbank können ein Dokument lesen und bearbeiten, wenn eine der folgenden Bedingungen gegeben ist:

  • Sie sind in der Lesezugriffsliste oder im Leserfeld der Maske aufgeführt.
  • In der Maske sind weder Einschränkungen in der Lesezugriffsliste noch im Leserfeld enthalten.

Und ein leeres Leserfeld steht für "keine Einschränkung".

Verhalten von Notes daher richtig, kommt aber häufiger vor, vorallem wenn sich Entwickler nicht genug mit dem Thema beschäftigen.

Übrigens, wenn Ihr mal den Gruppennamen Eurer Admins ändert, fliegt Euch die Rechteverwaltung wieder um die Ohren.

Ich sage immer, in Leser-/Autorenfelder nur echte Namen (also kein [CN]-Format) oder Rollen aus der ACL. Gruppennamen oder *Einträge sind für mich inakzeptabel.

Ich hatte vor vielen Jahren mal mit einer (gekauften) DB zu kämpfen,  die haben Autorenfelder im [CN]-Format gefüllt. Je nach Lust und Laune vom  Domino in Verbindung mit dem Browser hat es mal geklappt, mal nicht. War ein "schöner" Fehler. Reproduzierbar aber nicht in jedem Dokument auftretend.

Nur als kleine Ergänzung
« Letzte Änderung: 08.12.17 - 14:31:30 von WildVirus »

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.870
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Re: Zugriff auf eine Datenbank beschränken
« Antwort #10 am: 08.12.17 - 14:32:29 »
Sorry, aber das ist kein Bug, sondern normal:

1. Author- Zugriff auf ein Dokument hat jeder, der in einem der Autoren- Felder genannt ist. Keine Autoren = Keine Autor- Zugriffe

2. Leser- Zugriff auf ein Dokument hat jeder, der in einem Leser- oder Autoren- Feld genannt ist. ACHTUNG: Keine Leser (nur die in Leserfeldern zählen) = JEDER hat Leser- Zugriff !!!!!!!

Das ist schon immer so und wird sich auch niemals ändern.
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

Offline Bruce Willis

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.002
  • Geschlecht: Männlich
  • Wer nicht wagt...
Re: Zugriff auf eine Datenbank beschränken
« Antwort #11 am: 08.12.17 - 15:36:55 »
It's not a bug, it's a feature.

...
Und ein leeres Leserfeld steht für "keine Einschränkung".

Verhalten von Notes daher richtig, kommt aber häufiger vor, vorallem wenn sich Entwickler nicht genug mit dem Thema beschäftigen....

Nur als kleine Ergänzung


Danke für die Ergänzung.
Der widerspricht allerdings die Tatsache, dass so ein geschützte Dok in meiner Datenbank viele leere Leser- und Autor-Felder hat und trotzdem für fast alle User unsichtbar ist. Siehe Screenshots anbei.

Oder hab ich was falsch verstanden?

Gruß
Leo
nobody is perfect but i'm pretty close 

Offline Bruce Willis

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.002
  • Geschlecht: Männlich
  • Wer nicht wagt...
Re: Zugriff auf eine Datenbank beschränken
« Antwort #12 am: 08.12.17 - 15:56:40 »
... Ich sage immer, in Leser-/Autorenfelder nur echte Namen (also kein [CN]-Format) oder Rollen aus der ACL. Gruppennamen oder *Einträge sind für mich inakzeptabel...

Vielen Dank!
nobody is perfect but i'm pretty close 

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.870
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Re: Zugriff auf eine Datenbank beschränken
« Antwort #13 am: 08.12.17 - 16:39:00 »
Es ist mindestens EIN Leserfeld gesetzt. In deinem Beispiel sehen also nur die ## DB Admins die Dokumente UND die Heike Schlu sowie die LocalDomainServers.
Ich gehe mal schwer davon aus, dass alle Felder mit "dsp_" eh nur "Computed for Display" sind und damit nicht relevant.
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

Offline Bruce Willis

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.002
  • Geschlecht: Männlich
  • Wer nicht wagt...
Re: Zugriff auf eine Datenbank beschränken
« Antwort #14 am: 08.12.17 - 16:50:36 »
Es ist mindestens EIN Leserfeld gesetzt...
Eure Aussage doch war, dass KEINE leeren Felder sein sollten, da sonst jeder zugriefen kann.
Code
Und ein leeres Leserfeld steht für "keine Einschränkung". 
Oder hab ich falsch verstanden?
« Letzte Änderung: 08.12.17 - 16:52:20 von Bruce Willis »
nobody is perfect but i'm pretty close 

Offline TRO

  • Senior Mitglied
  • ****
  • Beiträge: 296
Re: Zugriff auf eine Datenbank beschränken
« Antwort #15 am: 08.12.17 - 17:28:44 »
siehe hier https://atnotes.de/index.php/topic,51224.0.html und dort insbesondere Regel #8

hth
Thomas

Offline Bruce Willis

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.002
  • Geschlecht: Männlich
  • Wer nicht wagt...
Re: Zugriff auf eine Datenbank beschränken
« Antwort #16 am: 09.12.17 - 15:02:44 »
siehe hier https://atnotes.de/index.php/topic,51224.0.html und dort insbesondere Regel #8

hth
Thomas

Dort steht:

Zitat
Da die anderen beiden Felder aber nicht leer sind, ändert das hinzufügen des dritten Feldes ohne Eintrag nichts an den Zugriffsrechten. Das Dokument kann immer noch nur von unserem Benutzer Amadeus Tester, bzw. von allen denen die Rolle "[Administrator]" in der Datenbank zugewiesen wurde gelesen werden.

So muss es sein, und dies erwartet auch jeder.
Aber meine Datenbank (siehe oben) zeigt, dass es nicht immer so ist!
Und was dabei zu beachten ist, habe ich oben beschrieben.

Und nochmals das Problem mit anderen Worten:

1. Es gibt ein Dok mit mehreren Leser-Feldern, einige davon sind leer.
Nur die zugelassenen User haben den Zugriff.

2. Benutzer startet eine LS Aktion, als Ergebniss hat das Dok immer noch mehrere Leser-Felder, einige davon sind leer.
Und alle (auch nicht zugelassene) User haben den Zugriff!
« Letzte Änderung: 09.12.17 - 15:09:11 von Bruce Willis »
nobody is perfect but i'm pretty close 

Offline jBubbleBoy

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.276
  • Geschlecht: Männlich
Re: Zugriff auf eine Datenbank beschränken
« Antwort #17 am: 09.12.17 - 16:31:14 »
2. Benutzer startet eine LS Aktion, als Ergebniss hat das Dok immer noch mehrere Leser-Felder, einige davon sind leer.
Und alle (auch nicht zugelassene) User haben den Zugriff!
Das glaube ich nicht, sobald ein Leserfeld einen Wert hat zieht auch der Doc-Zugriff.
Ich vermute das dein LS-Agent aus den Leserfelder normale oder Namensfelder macht.
Gruss Erik :: Freelancer :: Notes, Java, Web, VBA und DomNav 2.5 / NSE 0.16
--
Nur ein toter Bug, ist ein guter Bug!

Offline Bruce Willis

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.002
  • Geschlecht: Männlich
  • Wer nicht wagt...
Re: Zugriff auf eine Datenbank beschränken
« Antwort #18 am: 09.12.17 - 16:48:42 »
Das glaube ich nicht...
Hatte ich auch nicht geglaubt.
Daher sage ich doch: Notes Bug.

Ich vermute das dein LS-Agent aus den Leserfelder normale oder Namensfelder macht.
Falsche Vermutung.
nobody is perfect but i'm pretty close 

Offline TRO

  • Senior Mitglied
  • ****
  • Beiträge: 296
Re: Zugriff auf eine Datenbank beschränken
« Antwort #19 am: 09.12.17 - 17:24:57 »
aber du berücksichtigst auch, dass Autor-Felder auch Lesezugriff geben (Regel #9).... und in deinem Screenshot zu den Autorfeldern finde ich da Einträge wie "vs-all" und "fibu-all"

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz