IBM System i-Berechtigungen für Datenbankansichten

8

Wir haben ein IBM System i, auf dem IBM i OS v6r1 ausgeführt wird. Auf diesem System habe ich einige Datenbankansichten erstellt. Ich möchte einer bestimmten Benutzergruppe NUR Zugriff auf diese Ansichten und nichts anderes in der Bibliothek gewähren, in der sich die Ansichten befinden. Ist das möglich? Ich hatte eine Benutzergruppe, die nur Leseberechtigungen für alle Tabellen und Ansichten in der Bibliothek hatte, in der sich meine Ansichten befinden, und der Zugriff funktioniert, wenn sich der Benutzer unter dieser Benutzergruppe befindet. Ich habe versucht, die Benutzergruppe zu kopieren und dann Berechtigungen zuzuweisen, die nur die von mir erstellten Ansichten enthalten. Der Zugriff wird verweigert. Muss ein Benutzer oder eine Benutzergruppe auch über Berechtigungen für die Tabelle verfügen, aus der die Ansicht stammt, um auf die Ansicht zugreifen zu können?

Großes EMPin
quelle
Erwägen Sie, dies auf dba.stackexchange.com
WarrenT
@WarrenT ob Sie es glauben oder nicht, dies ist tatsächlich genauso eine Frage der Systemadministration wie eine DB-Frage für iSeries / Midrange - die DB2-Datenbank ist eng in OS / 400 integriert und von der Frage her klingt es so, als ob es sich um OS / 400-Berechtigungen für die handelt Bibliothek, die Dinge auslöst. (Leider ist es so lange her, dass ich mich in eine Midrange-Box eingeloggt habe, dass ich nicht 100% sicher bin, wie ich das Problem lösen soll!)
voretaq7
@ voretaq7 Ja. Die Datenbank ist nicht nur in die Essenz des Betriebssystems eingebunden, sondern auch in die Maschine selbst (die Maschinenschnittstelle, MI) integriert. Es ist über ein Jahrzehnt her, seit ich QSECOFR war, also musste ich die Antwort nachschlagen. Aber da hier noch niemand geantwortet hat und es für beide Seiten ein faires Spiel ist, dachte ich, es könnte jemanden bei dba geben, der es auf den ersten Blick weiß.
WarrenT

Antworten:

4

Ja. Es reicht nicht aus, die Berechtigung zur Verwendung einer Ansicht zu erteilen. Der Benutzer muss auch die Berechtigung für die zugrunde liegende Tabelle haben.

Eine Möglichkeit, den Zugriff auf einen eingeschränkten Benutzer zuzulassen, ist die Übernahme der Berechtigung. Nehmen wir zum Beispiel Folgendes an:

Benutzer RESTRICTED hat keinen Zugriff auf Tabellen. Alle Bibliotheken sind entweder AUT (* EXCLUDE) oder der Benutzer RESTRICTED hat die Berechtigung * EXCLUDE für alle Bibliotheken. USER PERMITTED kann auf die Tabellen und Bibliotheken zugreifen (oder diese besitzen). Library DATA hat die Tabellen. Library PROGRAMS enthält die Programme und gespeicherten Prozeduren.

Lassen Sie PERMITTED eine gespeicherte RPG-Prozedur in der Bibliothek PROGRAMS erstellen. Stellen Sie sicher, dass für das Programm USRPRF (* OWNER) angegeben ist. Dies bedeutet, dass beim Ausführen des Programms die Berechtigung des Eigentümers (PERMITTED) anstelle der Berechtigung des Profils (RESTRICTED) verwendet wird.

Gewähren Sie dem RPG-Programmobjekt -or- GRANT über SQL die Berechtigung PERMITTED * USE. Gewähren Sie dem Benutzer außerdem RESTRICTED * USE-Zugriff auf Bibliotheksprogramme. Dadurch kann RESTRICTED die gespeicherte Prozedur / das gespeicherte Programm ausführen.

Beachten Sie, dass der Benutzer RESTRICTED keine Rechte zum Zugriff auf die Tabellen in DATA hat und Sie dies auch so lassen möchten.

Lassen Sie den Benutzer RESTRICTED nun SQL verwenden, um die gespeicherte Prozedur aufzurufen. Sie hat die Berechtigung, das Programm auszuführen, da sie * USE-Rechte für Bibliotheks-PROGRAMME sowie das kompilierte Programmobjekt besitzt. Die gespeicherte Prozedur wird unter der Autorität des Eigentümers PERMITTED ausgeführt. Da PERMITTED vollen Zugriff auf die Bibliotheksdaten und die darin enthaltenen Tabellen hat, kann die gespeicherte Prozedur auf diese Tabellen zugreifen / diese aktualisieren. Jedes unformatierte SQL, das von RESTRICTED verwendet wird, schlägt aufgrund unzureichender Berechtigung fehl. Sie kann nur die für sie erstellten gespeicherten Prozeduren aufrufen.

Wenn Ihre Programme in derselben Bibliothek wie Ihre Daten gespeichert sind, müssen Sie der Bibliothek die Berechtigung RESTRICTED * USE erteilen und sie (über * EXCLUDE) speziell auf alle Tabellen in dieser Bibliothek beschränken. Es ist möglicherweise einfacher, eine BESCHRÄNKTE Bibliothek zu erstellen, die nur die gespeicherten Prozeduren enthält, und sie für diese Bibliothek zu autorisieren. Dies erleichtert die laufende Wartung, da Sie nicht daran denken müssen, sie weiterhin von neu erstellten Tabellen in DATA einzuschränken.

Buck Calabro
quelle