Um Informationen über Benutzerprofile und die Sicherheitseinstellungen zu erhalten, können verschiedene SQL-Techniken mit IBM i ACS eingesetzt werden. Welche Benutzerprofile gibt es? Wurden Benutzerprofile missbraucht? Gibt es Benutzer mit Standard-Kennwörtern? Gibt es Benutzer mit Sonderberechtigung *ALLOBJ? Alle diese Fragen werden in diesem Artikel erörtert und SQL-Skripte als Beispiele verwendet, die Sie direkt auf Ihrem System einsetzen können.
Welche Benutzerprofile gibt es auf der IBM i?
Als erstes wird einem dazu der CL-Befehl DSPUSRPRF einfallen. Damit können einzelne Benutzerprofile angezeigt, aber keine Liste am Bildschirm erstellt werden. Nur die Ausgabe in eine *OUTFILE ist möglich. Diese kann dann mit UNQRY am Bildschirm angezeigt werden.
Alternativ dazu kann der Befehl WRKUSRPRF verwendet werden. Dieser setzt allerdings voraus, dass der ausführende Benutzer die Sonderberechtigung *SECADM besitzt.
Die einfachste und schnellste Variante liefert SQL.
select objname as user_profile
from table (
qsys2.object_statistics('QSYS', '*USRPRF', '*ALLSIMPLE')
)
order by objname;
SQL-Script zur Anzeige aller Benutzerprofile
Quelle: BärDie Tabellenfunktion qsys2.object_statistics hat drei Eingabeparameter:
Qsys2.Object_Statistics(
Object_Schema => 'QSYS' ,
Objtypelist => '*USRPRF',
Object_Name => '*ALLSIMPLE' )
Benutzerprofile befinden sich in der Bibliothek QSYS. Diese haben den Objekttyp *USRPRF
Diese Darstellung entspricht dem CL-Befehl WRKOBJ:
WRKOBJ OBJ(QSYS/*ALL) OBJTYPE(*USRPRF)
Hinweis: Weitere Informationen zur Tabellenfunktion qsys2.object_statistics finden Sie unter:
Quelle: BärWelche Eigenschaften haben diese Benutzerprofile?
Eine vollständige Alternative zu dem CL-Befehl DSPUSRPRF bietet die SQL-View qsys2.user_info.
select authorization_name, u.*
from qsys2.user_info u;
Anzeige aller Benutzerprofile mit allen Eigenschaften
Quelle: BärDie verfügbaren Spalten mit den Eigenschaften des Benutzerprofils sind sehr umfangreich. Wenn Sie nur bestimmte Spalten anzeigen wollen, können Sie hierfür den Content Assist verwenden:
Quelle: BärWelche Benutzer haben Sonderberechtigungen?
Die SQL-View qsys2.user_info enthält eine Spalte special_authorities. Mit der Abfrage auf Null-Wert kann geprüft werden, ob diese Spalte Sonderberechtigungen enthält.
select user_name, special_authorities
from qsys2.user_info u
where special_authorities is not null;
Benutzer mit Sonderberechtigungen
Quelle: BärMit dem Einsatz der Tabellenfunktion systools.split() können Sie erreichen, dass jede Sonderberechtigung in einer Zeile zusammen mit dem Benutzerprofil dargestellt wird:
select user_name, ordinal_position,
ltrim(element) as special_authority
from qsys2.user_info u, table (
systools.split(
input_list => rtrim(special_authorities),
delimiter => ' ')) b
where special_authorities is not null;
Benutzer mit Sonderberechtigungen gesplittet
Quelle: BärWelchen Benutzern sind mehrere Gruppenprofile zugeordnet?
Die SQL-View qsys2.user_info enthält eine Spalte supplemental_group_count. Diese Spalte gibt an, wie viele zusätzliche Gruppenprofile dem Benutzer zugeordnet sind.
SELECT group_profile_name,
supplemental_group_count,
supplemental_group_list,
u.*
FROM qsys2.user_info u
WHERE supplemental_group_count > 0
ORDER BY 2 DESC;
Benutzer mit zusätzlichen Gruppenprofilen
Quelle: BärDem Benutzer LGA88 sind ein Gruppenprofil und vier weitere Gruppenprofile zugeordnet.
Quelle: BärBei welchen Benutzern gab es Probleme beim SignOn?
Sicherlich kommt es immer wieder vor – meistens zum Wochenanfang –, dass Benutzer mehrere Anmeldungsversuche benötigen, um das korrekte Passwort einzugeben. Andererseits kann es auch interne oder externe Versuche geben, die Anmeldung mit einem nicht zugeordneten Benutzer durchzuführen.
Die SQL-View qsys2.user_info enthält eine Spalte sign_on_attempts_not_valid. Diese Spalte gibt an, wie viele ungültige Anmeldeversuche mit einem Benutzerprofil durchgeführt wurden.
select *
from qsys2.user_info
where sign_on_attempts_not_valid > 0
order by sign_on_attempts_not_valid desc;
Benutzer mit Anzahl ungültigen Anmeldungsversuchen
Quelle: BärWelche Benutzer haben Standardkennwörter?
Leider kam es in der Vergangenheit vor, dass IBM i-Systeme mit Standardkennwörtern ausgeliefert wurden. Vielleicht können sich einige von Ihnen noch daran erinnern. Der Benutzer QSECOFR wurde tatsächlich mit dem Passwort QSECOFR ausgeliefert und dieses musste nicht geändert werden. Heutzutage sollte das nicht mehr passieren, aber …
Das folgende SQL-Skript erzeugt eine Liste aller Benutzer, die mit einem Standardkennwort eingerichtet sind und die Sonderberechtigung *ALLOBJ haben.
select authorization_name, status
from qsys2.user_info u
where user_default_password = 'YES'
and (special_authorities like '%*ALLOBJ%'
or authorization_name in (select user_profile_name
from qsys2.group_profile_entries
where group_profile_name in (select authorization_name
from qsys2.user_info
where special_authorities like '%*ALLOBJ%')))
order by authorization_name;
Benutzerprofile mit Standardkennwort und Sonderberechtigung *ALLOBJ
Quelle: BärDiese Beispiele zeigen nur einige mögliche Auswertungen.
Viel Spaß beim selbstständigen Ausprobieren!
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
