Anmelden

View Full Version : Authority



Muchi
08-01-09, 12:45
Hallo Forum,

ich habe 2 Fragen. Um die Security auf meiner AS/400 automatisch zu verwalten, versuche ich einen instead of trigger auf die systables zu setzen. Hat das jemand schonmal geschafft?
Ausserdem interessiert mich ob jemand die Berechtigung (Owner, authorization list) bei einem neuen Objekt automatisch vergibt.

Danke und Gruß
Michael

Fuerchau
08-01-09, 12:52
Trigger auf Views gehen nicht !
Die SYSxxx in QSYS2 sind nämlich nur Sichten (LF's) auf die QAO-Dateien in der QSYS.

Berechtigungen in SQL gibts auf 2 Arten:
SYS-Naming: Berechtigung laut LIB-Eintrag "CHGLIB ... CRTAUT(...)", wobei *SYSVAL auf QCRTAUT verweist.
SQL-Naming: immer PUBLIC *EXCLUDE.

Für alle anderen Objekterstellungen gilt immer CRTAUT der jeweiligen LIB.

Trigger für solche Probleme sind die schlechteste Lösung. Hierfür gibts das AUDIT-Journal (Systemwerte QAUD*).

BenderD
08-01-09, 13:26
... es gibt zwar instead Trigger für Views, aber ich denke mal, dass das anhängen einen qualifizierten Log benötigt, den man wohl allenfalls im restricted state bekommt, wenn überhaupt und zudem gilt hier das Wowi Prinzip (und das ist auch gut so). Wenn dieser Trigger irgendwie die Freck kriegt, dann könnte das verdammt eng werden.
Resumee: keine gute Idee
Frage: was hast du denn da für Anforderungen bezüglich der Security?

D*B

Muchi
08-01-09, 14:07
Ich hatte es mit einem instead of trigger getestet.

Den Parameter CRTAUT habe ich gesetzt. Jedoch wird der Owner nicht angepasst, sondern nur die authorization-list. Somit muss ich jedes mal ein chgobjowner ausführen. Desweiteren wird die Authority nur bei Objekten automatisch gesetzt, die nicht per JDBC etc. erstellt werden. Und das kann sehr nervig sein....

Gruß
Michael

Fuerchau
08-01-09, 15:07
JDBC funktioniert eben wie ODBC bzw. SQL-Naming.
Dann wird CRTAUT ignoriert und es gilt eben die SQL-Regel:

Es gehört erst mal alles dem Ersteller, Public ist (meistens) excluded.
Wenn ich anderen den Zugriff erlauben will muss ich entsprechende explizite GRANT's absetzen.

Für JDBC/ODBC kann ich aber (mit entsprechenden Folgen) in der Verbindungsfolge "naming=*sys" angeben (Default *SQL), dann gilt auch wieder *LIBL bei unqualifizierten Tabellen.