Der vorliegende Artikel enthält weitere Beispiele für die Auswertungen von Benutzerprofilen mit Db2 Web Query. Welche Datei-Berechtigungen haben Benutzer? Und was ist mit den Gruppenprofilen? Wie können Benutzer Berechtigungen von einem Gruppenprofil erben?
Dazu werden interessante Techniken von Db2 Web Query und moderne Funktionalitäten von SQL gemeinsam verwendet. Die Erstellung von Reports auf der Grundlage von SQL-Scripts kann auf recht einfache Art erfolgen. Die Generierung des Reports inklusive der erforderlichen Synonyme erfolgt mit EZ-Report, ein Tool von Db2 Web Query.
Welche Benutzer sind für die Tabellen und Dateien einer Bibliothek berechtigt?
Für die Beantwortung dieser Frage verwende ich ein SQL-Script, das ich zunächst schrittweise entwickeln werde. Mit diesem SQL-Script wird dann mit Hilfe von EZ-Report ein Synonym und ein Report für Db2 Web Query erstellt, Dieser Report kann nun beliebig weiter bearbeitet werden. Als Einstieg hierzu verwende ich die Auswahl einer oder mehrerer Bibllotheken als Parameter. Die Definition dieses Parameters kann als einfach, statisch oder dynamisch erfolgen.
Die SQL-View SYSTABAUTH
Um eine Übersicjt über die Berechtigungen von Benutzern für Dateien und Tabellen einer Bibiothek zu erhalten, bietet SQL eine interessante View / Ansicht an: SYSTABAUTH.
Diese Ansicht zeigt die Berechtigung aller DDS-PF- und LF-Dateien, SQL-DDL-Tabellen, Ansichten und Indizes in allen Bibliotheken außer QTEMP an. Sie enthält die gleichen Informationen, die angezeigt werden, wenn ich den Befehl Display Object Authority, DSPOBJAUT, verwende. Da es sich um eine Ansicht handelt, kann ich die Ergebnisse von SQL-Anweisungen abrufen und sie beliebig bearbeiten.
In diesen Beispielen verwende ich einige der Spalten der Ansicht:
- GRANTEE: das Benutzerprofil, das für das Objekt autorisiert wurde
- SYSTEM_TABLE_SCHEMA: der Systemname der Bibliothek, die das Objekt enthält
- SYSTEM_TABLE_NAME: der Systemname des Objekts
- PRIVILEGE_TYPE: die verschiedenen Berechtigungen, die dem Benutzerprofil für dieses Objekt erteilt wurden
Es gibt sieben verschiedene Arten von Berechtigungen, die einem Objekt erteilt werden können:
Mit dem folgenden SQL-Script werden die Benutzerberechtigungen der Dateien in der Bibliothek SAMPLEDB aufgelistet:
-- jede Berechtigung in einer eigenen Zeile
SELECT SYSTEM_TABLE_SCHEMA,SYSTEM_TABLE_NAME,GRANTEE,
PRIVILEGE_TYPE
FROM QSYS2.SYSTABAUTH
WHERE SYSTEM_TABLE_SCHEMA = 'SAMPLEDB'
ORDER BY SYSTEM_TABLE_SCHEMA,SYSTEM_TABLE_NAME,GRANTEE;
Für jede Berechtigungsart eines Benutzers wird jeweils eine Zeile angezeigt:
Quelle: BärFür die Datei ACT hat PUBLIC die Berechtigung *USE und ist daher in der Liste aufgeführt. Bei der anderen angezeigten Datei AKUEHNist die Berechtigung für PUBLIC *EXCLUDE und wird daher nicht angezeigt.
Hinweis:
Weitere Informationen zu der View SYSTABAUTH finden Sie hier.
Alle Berechtigungsarten eines Benutzers für eine Datei in einer Zeile darstellen
Die Darstellung der Berechtigungsarten in jeweils einer Zeile ist nicht sehr übersichtlich. Wie wäre es, wenn wir diese in einer Zeile zusammenfassen könnten? Auch hier hilft uns wieder SQL mit der Aggregatfunktion LISTAGG.
-- alle Berechtigungen einer Datei in eine Zeile mit LISTAGG
-- falls PUBLIC = *EXCLUDE --> keine Zeile mit PUBLIC (s. Tabelle ACT mit PUBLIC und TB)
Select System_Table_Schema, System_Table_Name, Grantee,
Listagg(Privilege_Type, ' / ') Within Group (Order By Privilege_Type)
As "Privilege Type"
From Qsys2.Systabauth
Where System_Table_Schema = 'SAMPLEDB' -- EZ-Report --> dynamischen Parameter
Group By System_Table_Schema, System_Table_Name, Grantee
Order By System_Table_Schema, System_Table_Name, Grantee;
Nun sieht das Ergebnis wie folgt aus:
Quelle: BärSynonym und Report mit EZ-Report erstellen
Dieses SQL-Script wird nun für die Erstellung eines Synonyms und eines Reports mit EZ-Report verwendet. Dazu müssen die Kommentare entfernt werden. Ebenso entferne ich die WHERE-Anweisung für die Bibliothek. Diese wird in Web Query durch einen wählbaren Parameter ersetzt. Als letztes entferne ich die ORDER-Anweisung einscließlich dem Semikolon.
Select System_Table_Schema, System_Table_Name, Grantee,
Listagg(Privilege_Type, ' / ') Within Group (Order By Privilege_Type)
As "Privilege Type"
From Qsys2.Systabauth
Group By System_Table_Schema, System_Table_Name, Grantee
Quelle: BärDer nun erstellte Report User_Files_authority liefert folgendes Ergebnis:
Quelle: BärAnpassungen für den Report
Zunächst verschiebe ich die Spalte System_Table_Name in den BY-Bereich unter System_Table_Schema. Dadurch erfolgt die Sortierung nach Schema und Tabelle.
Als Auswahlparameter soll der Name einer Bibliothek bzw. eines Schemas auswählbat sein. Dazu ziehe ich die Spalte für das Schema in den Filter-Bereich.
Quelle: BärDaraufhin erscheint ein Dialogfenster für die Definition des Filters:
- Typ = Parameter (nicht Konstante oder Feld)
- Art des Parameters = einfach, statisch, dynamisch
Was bedeuten die verschiedenen Arten des Parameters bei der Ausfühung des Reports?
- Einfach: ein leeres Feld wird angezeigt für die Eingabe eines Bibliotheksnamens
- Statisch: bei der Defnition des Parameters können mehrere Bibliotheken angegeben werden, die dann der Ausführung zur Auswahl stehen
- Dynamisch: Bei der Ausführung des Reports werden zunächst alle verfügbaren Bibliiotheken ernittelt, die dann in einer Auswahlliste erscheinen.
Bei mir habe ich die drei Varianten realsiert und die Reports mit User_Files_authority_1, 2 und 3 benannt.
Quelle: Bär
Quelle: Bär
Quelle: BärBeachten Sie, dass die SYSTABAUTH-Ansicht nicht ausreicht, um zu bestimmen, ob ein Benutzer für eine Tabelle oder Ansicht autorisiert ist, da die Berechtigung zur Verwendung einer Tabelle oder Ansicht über ein Gruppenbenutzerprofil oder eine spezielle Berechtigung (z. B. *ALLOBJ) erworben werden kann.
Das könnte dann Thema eines der nächsten Artikel sein. Oder Sie probieren es selbst.
Viel Spaß dabei!
Vorschau:
In den folgenden Artikeln dieser Reihe „IBM Db2 Web Query für den Administrator“ werde ich Ihnen für jede Kategorie Berichte mit Hintergrundinformationen und individuellen Modifikationen vorstellen.
Bis dahin wünsche ich Ihnen weiterhin viel Spaß beim Vermehren Ihrer Fertigkeiten.
Den Autor Theo Bär erreichen Sie unter EDV-Beratung Theo Bär – Ringmauerweg 1 – 69250 Schönau – Tel. (+49) 6228 912 630 – E-Mail info@edv-baer.com
