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.