Berechtigungsanalyse im SAP mit der Transaktion SQVI

Autor: Tobias Harmes | 5. April 2013

16 | 41 | #SAP Transaktion, #SQVI, #SUIM, #Tabellen

Die SAP liefert mit der Transaktion SUIM schon ein mächtiges Werkzeug, wenn es um die Suche nach Benutzerinformationen geht. Leider werden gerade im Berechtigungsumfeld die Informationen nicht immer in einer Darstellung angeboten, in der alle Details auf einen Blick zu finden sind. In einem solchen Fall haben Sie zwei Optionen:

Einerseits hilft zum Beispiel das Schreiben eines Reports, der die passenden Tabellen ausliest und in einem ALV darstellt. Dieser Lösungsansatz ist jedoch nur umsetzbar, wenn man über die nötigen Programmierkenntnisse verfügt und außerdem die nötigen SAP Berechtigungen für die ABAP Workbench hat.

Um diese Herausforderung trotzdem lösen zu können, benötigt man in vielen Fällen aber nur den Zugriff auf die Transaktion SQVI (QuickViewer). Wie Sie die gewünschten Informationen im SAP-System finden können, um diesen zweiten Lösungsansatz zu verfolgen, möchte ich Ihnen nachfolgend Schritt für Schritt erläutern.

Möglichkeiten der Transaktion SQVI

Mit Hilfe der SQVI können Abfragen erstellt und abgesetzt werden. Über einen grafischen Editor werden die gewünschten Tabellen eingefügt und über einen JOIN miteinander verknüpft. Danach kann man die Tabellenfelder festlegen, die in der Ergebnismenge angezeigt werden sollen. Zusätzlich dazu können Tabellenfelder bestimmt werden, mit denen ein Selektionsbild generiert wird, um die Ergebnisse zu filtern.

Bitte beachten Sie, dass Sie für den nachfolgenden Anwendungsfall in der Regel auch über die Transaktion SUIM zu einem Ergebnis kommen. Die Arbeit mit den Ergebnismengen aus verschiedenen Abfragen der SUIM kann allerdings eine Konsolidierung, Filterung und Auswertung schwierig machen. Ich stelle Ihnen hier einige Anwendungsfälle für die Transaktion SQVI vor.

SAP Security& Berechtigungen

E-Book SAP Security und Berechtigungen

Circa 250 Fachartikel aus rund neun Jahren auf rund 1.000 Seiten - Tipps, Tricks und Tutorials mit Screenshots aus echten SAP Systemen.

Fragestellung: Welche Rollen sind einem Benutzer zugewiesen und wie sind die enthaltenen Berechtigungsobjekte ausgeprägt?

In diesem konkreten Fall geht es um eine Abfrage für das Berechtigungswesen: Zu Beginn eines Berechtigungsprojekts wird in aller Regel eine Aufnahme des Ist-Zustands im System durchgeführt. In Folge dessen ist die Information von Bedeutung, welcher Benutzer, welche Rolle besitzt und wie diese Rolle ausgeprägt ist. Sprich welche Berechtigungsobjekte sind enthalten und welche Werte sind diesen zugewiesen.

Umsetzung in der Transaktion SQVI

Nun aber zur Abfrage. Nachdem Sie die Transaktion SQVI gestartet haben legen Sie sich einfach eine neue Query an. Achten Sie beim Anlegen darauf, dass als Datenquelle der Tabellen-Join ausgewählt ist.

SAP SQVI Tabellen-join
Anschließend müssen Sie folgende Tabellen AGR_1016B, UST04, UST10S, USR12, UST12 und TOBJT einfügen. Aus diesen erhalten wir unsere Ergebnismenge.

Berechtigungsquery in SAP Transaktion SQVI
Im Basismodus können sie dann die Tabellenfelder für die Ausgabe bzw. die Selektionsmaske festlegen und die Reihenfolge nach belieben ändern.
In unserem Fall finden Sie die Einstellungen in den folgenden beiden Abbildungen.

Berechtigungsquery in SAP Transaktion SQVI: Feldauswahl
Berechtigungsquery in SAP Transaktion SQVI: Selektionsfelder
Wenn Sie nach dem Speichern die Abfrage ausführen erhalten Sie die nun gezeigte Eingabemaske, über die Sie die Ergebnismenge einschränken können.

Berechtigungsquery in SAP Transaktion SQVI: Selektionsbildschirm
In diesem Beispiel habe ich nur nach einem Benutzer gesucht. Das Ergebnis sehen sie auszugsweise hier.

Berechtigungsquery in SAP Transaktion SQVI: Ergebnis als Liste
Wie Sie erkennen können haben sie sämtliche Informationen über Benutzer und Rollen auf einen Blick und können über die ALV-üblichen Operationen mit der Liste arbeiten, sie filtern, für weitere Arbeitsschritte nach Excel exportieren usw.

Ihre Erfahrungen mit der Transaktion SQVI

Haben Sie schon ähnliche Abfragen über die Transaktion SQVI erstellt oder haben Sie andere Anregungen und Ideen für weitere Queries? Dann zögern Sie nicht und ergänzen Sie den Artikel mit Ihren Beiträgen.

Sie benötigen Unterstützung in diesem Thema? Informieren Sie sich über unsere Leistungen im Bereich SAP- und IT-Security-Beratung oder stellen kostenlos und unverbindlich eine Anfrage.


Artikel war hilfreichArtikel empfehlen


Dieser Beitrag ist auch als Download verfügbar:
Tobias Harmes

Autor

Tobias Harmes

Experte, Speaker, Herausgeber rz10.de

Fragen? Anmerkungen?
Kontaktieren Sie mich

16 Kommentare zu "Berechtigungsanalyse im SAP mit der Transaktion SQVI"

Erst mal vielen Dank für diesen Artikel. Bin erst seit 1,5 Jahren im “SAP Business” und bin für so was wirklich dankbar, da wir(ich) jetzt in die Situation kommen, wo wir die “Überberechtigungen” zurückfahren müssen , und nicht jedes mal ein try and error mit unseren Usern veranstalten können…

Nochmal vielen Dank, am Besten wären natürlich weitere Artikel in diese Qualität 🙂

Vielen Dank für die Blumen. rz10.de ist ein sehr großer Wissensspeicher, den wir stetig ausbauen. Es lohnt sich also regelmäßig bei uns vorbeizuschauen ;-).

Ihre Situation kann ich übrigens sehr gut nachempfinden. Vor allem beim Rückbau von Berechtigungen steht man zuerst einmal vor der Herausforderung herauszufinden, welche Berechtigungen zu viel vergeben wurden. Hierfür möchte ich Ihnen eine weiteren Ansatz an die Hand geben.
Über eine Workloadanalyse können Sie die Transaktionen herausfinden, die die Key User regelmäßig ausführen. Damit haben Sie schon mal mind. 80% aller benötigten Transaktionen identifiziert. An dieser Stelle kann es natürlich passieren, dass Tätigkeiten, die nur einmal alle sechs Monate durchgeführt werden, durch das Raster fallen. Wie Sie die Workloadanalyse durchführen, können Sie in dem Beitrag https://rz10.de/2012/02/genutzte-transaktionen-aus-dem-sap-workload-monitor-st03n-exportieren/ meines Kollegen Tobias Harmes nachlesen.
Für die Ausprägung einzelner Berechtigungsobjekte können Sie den Berechtigungstrace (Transaktion ST01) zur Hilfe nehmen. Schränken Sie den Trace über die Filterkriterien auf den Key User ein und lassen Sie ihn die Tätigkeiten am System durchführen, die für Sie relevant sind. In der Auswertung können Sie dann genau die Werte sehen, die bei der Bearbeitung abgeprüft wurden und somit Berechtigungen nach dem Minimalprinzip vergeben.
Das “A und O” ist jedoch eine rege Kommunikation mit dem jeweiligen Fachbereich bzw. dem Business und den Modul-/Applikationsverantwortlichen. Diese Damen und Herren haben das nötige Wissen um die Prozesse und können Ihnen in aller Regel genau sagen, welche Transaktionen aus dem Workload benötigt werden, welche zu ergänzen sind und wie ggf. einzelne Berechtigungsobjekte ausgeprägt sein sollten. Aber auch hier ein wachsames Auge haben, damit es nicht in ein Wunschkonzert ausartet :-).

Ich hoffe, dass ich Ihnen etwas weiterhelfen konnte. Für weitere Fragen und Anregungen stehe ich selbstverständlich zur Verfügung.

Hallo,

Danke für den Tip.

Eine Anmerkung, eine Frage:
– die Tabelle muss AGR_1016B heißen (im Text falsch, im Screenshot richtig)

Ich erhalte die Meldung USR12 müsste die rechte Tabelle im Join sein. Wie fange ich das ab?

Hallo Herr Völker,

erst einmal vielen Dank für den Hinweis. Da hat sich wohl der Fehlerteufel eingeschlichen. Sie haben recht, die Tabelle heißt AGR_1016B. Ich habe das im Text nachgebessert.
Die Fehlermeldung erscheint, wenn in der grafischen Ansicht des Joins die Tabelle USR12 vor einer Tabelle angeordnet wird, z.B. der AGR_1016B, und damit diese Join Bedingung verletzt wird.
Die Lösung ist zugegebener Maßen nicht intuitiv, aber einfach. Ordnen Sie die Tabellen einfach per Drag’n Drop nebeneinander an (in der Reihenfolge, wie die Tabellen auch im Text aufgezählt werden). Dadurch fangen Sie diesen Fehler ab.

Mit freundlichen Grüßen,
Oliver Gehring

Hallo Oliver,

super Anleitung! Läßt sich schnell und effizient nachbauen und sofort sinnvoll einsetzen.

Besten Dank,
Philipp

Hallo Herr Gehring,

ihr Ansatz ist aus meiner Sicht leider falsch, da Sie die geschachtelten Sammelprofile so nicht einfangen!!?? Da diese mehrstufig sein können (Sammelprofil in Sammelprofil in Sammelprofil…) können Sie das mit einem einfachen Join nicht auflösen und kommen in diesem Fall zu einem unvollständigen Ergebnis. Sie können das mal mit einem Benutzer mit einem SAP_ALL Profil ausprobieren. LG Ralph Grunge

Hallo Herr Grunge,

erst einmal vielen Dank für Ihr Feedback. In der Tat werden Rollen, die mehr als ein Profil besitzen nicht komplett ausgewertet. Ihr Beispiel mit dem Profil SAP_ALL ist dafür sehr gut geeignet. Wenn man eine Rolle erstellt, die aus diesem Profil generiert wird, enthält die Rolle mehr als ein Profil.
Im Regelfall ist jedoch die Anzahl an Berechtigungen, die in einer Rolle enthalten sind so gering, dass bei der Generierung des Rollenprofils nur ein Profil erstellt wird. Damit werden über die beschriebene SQVI in 99% der Fälle auch alle Berechtigungen eingefangen.
Für Ihren Sonderfall habe ich allerdings auch eine Lösung. Die Wahrheit befindet sich in den AGR Tabellen und damit auch alle Berechtigungen für eine Z_SAP_ALL Rolle.
Definieren Sie einfach zwei SQVI Abfragen. Eine Abfrage mit den Tabellen AGR_USERS und AGR_1251, die Ihnen die Berechtigungswerte zu den Rollen eines Benutzers liefert und eine Abfrage mit der AGR_1252 anstatt der AGR_1251. Diese liefert Ihnen noch die Werte zu den Orgebenen.

Mit welchem Ansatz werden Sie Herr der Lage?

Mit besten Grüßen,
Oliver Gehring

Hallo Herr Gehring,

vielen Dank für Ihre Antwort, aus meiner Sicht steht die Wahrheit in der UST12 und dem Bezug zur UST04 (über die Einzel- und Sammelprofile), bei der alle Berechtigungen enthalten sind, egal ob diese aus einer Rolle oder einem Profil kommen. Ich selbst führe diese Tabellen in einer SQL Datenbank ausserhalb von SAP zusammen, um dort die Sammelprofile auflösen zu können (diese Auflösen ist , soweit ich es beurteilen, kann leider nicht in der SQVI möglich). Über die Tabellen AGR_1251 und AGR_1252 gehen Ihnen genau die Informationen aus den Profilen verloren 😉

Hallo Herr Grunge,

vielen Dank für Ihren interessanten Ansatz und das Teilen Ihrer Erfahrungen.

Mit freundlichen Grüßen,
Oliver Gehring

ich hätte mal eine Frage zum exportieren in Excel.
Wenn ich in der letzten Abbildung auf Exportieren klicke und sich daraufhin Excel öffnet kommt immer folgende Fehlermeldung: Das Dateiformat und die Dateierweiterung von ´*.xls´passen nicht zueinander. Möglicherweise ist die Datei beschädigt oder nicht sicher….”
Wenn ich die Datei dann trotzdem öffne sind immer leere Spalten und Zeilen drin. Ein bearbeiten ist da nicht wirklich möglich weil Excel da immer wieder abstürzt. Hätten Sie vielleicht einen Rat wie der Fehler zu beheben ist?
mit freundlichen Grüßen, Dominik Pathe

Hallo Herr Pathe,

ich habe versucht den Fehler nachzustellen. “Leider” funktioniert bei mir der Export fehlerfrei bzw. wenn ich die Meldung trotz der Warnung bestätige, wird die Excel korrekt dargestellt und stürzt nicht ab. Ich habe auch keine Informationen über diesen Fehler im SCN gefunden. Mit welcher Version der SAP GUI arbeiten Sie denn?
Ich vermute, dass der Fehler dort zu finden ist.

Mit freundlichen Grüßen,
Oliver Gehring

Hallo,

ich habe den bisherige Diskussion interessiert verfolgt.

Bezüglich der Frage, wie ich die Unterprofile der Sammelprofile auflöse, würde ich gerne nachfolgenden Vorschlag zur Diskussion mit Ihnen stellen. Dieser lässt sich allerdings nicht mit SQVI lösen sondern müsste ggf. in einer externen Datenbank abgebildet werden:

Im Grunde muss man doch die Brücke zwischen den Benutzern und deren zugeordneten Berechtigungen über die nachfolgenden Tabellen schlagen:

1. UST04 (Berechtigungsprofile Benutzer) –> 2. UST10c (Sammelprofile) –> 3. UST10s (Profile mit Berechtigungen) –> 4. UST12 (Einzelberechtigungen mit Feldausprägungen)

Problem hierbei ist, dass bei einem einfachen Join der Tabellen, die Profil Hierarchie-Beziehungen, die in der Tabelle 2. UST10c (Sammelprofile) ggf. vorhanden sind verloren gehen. Daher muss man diese Tabelle UST10c mit Ihrer Zuordnung von Sammelprofil zu Unterprofil so lange (iterativ oder rekursiv) durchlaufen und prüfen, ob das jeweilige Unterprofil ggf. wieder ein Sammelprofil ist und ggf. die Tabelle erneut durchlaufen bis Verschachtelung der Sammelprofile endet (d.h. zum jeweiligen Profil kein weiteres Unterprofil mehr in der UST10c vorhanden ist). Hiermit löst man gewissermaßen die Hierachiebeziehung in den Sammelprofilen auf (vgl. User|Profilhierarchiestruktur bei Report RSUSR002). Am Ende hat man z.B. die nachfolgende exemplarische Profilhierarchie-Pfad-Relation aus der UST10c generiert:

Sammelprofil A -> Unter(-sammel)profil A’ -> Unterprofil A”

usw.

Sammelprofil A -> Unter(-sammel)profil B’ -> Unterprofil B”

Das Profil am unteren Ende der Hierarchie (Unterprofil A” oder auch Unterprofil B”) befindet sich in der Tabelle UST10s mit Hilfe derer durch die darin enthaltenen Berechtigungen auf die Tabelle UST12 rübergejoint werden kann, wo letztenendes die Berechtigungen mit Ihren Feldausprägungen stehen.

Beste Grüße
Nick

Wenn ich den Quickkview so nachbaue, wie im Screenshot mit den sechs verknüpften Tabellen abgebildet, bekomme ich folgende Fehlermeldung: “Tabelle AGR_1016B muß rechte Tabelle in einem Join sein”. Erst wenn ich das Feld PROFILE aus der AGR_1016B mit dem Feld PROFN aus der UST10S veknüpfe, ist alles in Ordnung. Sehen Sie dies anders oder wo liegt mein Fehler?
Beste Grüße Stephan

Hallo Stephan.
Das sieht richtig aus, auch wenn ich es gerade nicht nachgestellt habe. Wichtig ist auf jeden Fall: immer über die SUIM/Benutzerinformationssystem noch mal mit bekannten Ergebnissen verifizieren. Das Join-Verhalten ist nicht besonders transparent. Und sollte die SUIM mal falsch liegen und die Queries richtig – SUIM Sammelhinweise einspielen. 🙂
Viele Grüße, Tobias Harmes

Hallo,
die View funktioniert so prima. Ich hätte gern die Objektklasse ebenfalls ausgewertet. Aber egal mit welchen Tabellen ich das versuche, ich bekomme anschließend gar nichts mehr gelistet. Geht das überhaupt?
Viele Grüße
Romy

Hallo Romy,
wenn nichts mehr zurückgegeben wird, bildet der join oft eine Art “unmöglicher” Verknüpfung. Für die Objektklassen können die Tabellen TOBJ und TOBC ausgewertet werden. Versuch doch vielleicht einen kleineren Join nur mit AGR_1251, TOBJ und TOBC zu machen. Dann hast du zwar nur Berechtigungsdaten aus Rollen und keine Profile (SAP_ALL und Co), aber vielleicht hilft das schon mal.
Viele Grüße
Tobias

Kommentar verfassen


Unsere Top-Downloads

Kontaktieren Sie uns!
Renate Burg Kundenservice