Unterschied zwischen S_PROGRAM und S_PROGNAM und die Verwendung von Parametertransaktionen

Einleitung

Der direkte Aufruf von ABAP-Programmen über generische Transaktionen wie SA38 oder SE38 birgt unerwünschte Risiken, da auf Grund der bereits zugewiesenen Berechtigungsgruppen oftmals ein uneingeschränkter Zugriff auf weitere Programme möglich ist. Dieser Zugriff lässt sich durch eine granulare Einschränkung von Berechtigungsobjekten vermeiden. Prinzipiell wird der Aufruf von Programmen in SAP über die Berechtigungsobjekte S_PROGRAM und S_PROGNAM gesteuert, wobei letzteres nur bei generischen Reportstarts geprüft wird. Die Prüfung auf S_PROGRAM findet folglich immer statt, sobald das ABAP-Programm einer Berechtigungsgruppe zugeordnet ist. Gezielt für generische Transaktionen wie die SA38 und SE38 bietet SAP zusätzlich die Möglichkeit, eine weitere Prüfung auf S_PROGNAM (Programmnamen) zu aktivieren. Sofern das schaltbare Berechtigungsszenario BC_GENERIC_REPORT_START über die Transaktion SACF aktiviert ist, werden bei generischen Reportstarts sowohl die Programmgruppe (S_PROGRAM), als auch die zusätzliche Abfrage auf den konkreten Programmnamen (S_PROGNAM) geprüft. Somit kann bei Verwendung von generischen Reportstarttransaktionen die effektive Programmausführung über den Programmnamen eingeschränkt werden.

Jedoch empfiehlt es sich, stattdessen sogenannte Parametertransaktionen oder Reporttransaktionen zu erstellen. Denn durch die Verwendung von Parametertransaktionen für einzelne Programme können kritische Transaktionen wie die SA38 per se vermieden und der Zugriff auf Programme wirkungsvoll eingeschränkt werden. Zudem können Parametertransaktionen klassisch über das Menü von Rollen berechtigt werden, womit auch passende Berechtigungsvorschlagswerte aus der SU24 bei der Pflege des Rollenprofils bereitgestellt werden können. Da ein Transaktionsstart prinzipiell nicht mehr einem generischen Reportstart entspricht, wird anders als bei der SA38 oder SE38 auch nach erfolgter Aktivierung des SACF-Szenarios lediglich auf S_PROGRAM (Programmgruppe) geprüft. Zu beachten gilt, dass bei der Transaktion START_REPORT grundsätzlich immer nur S_PORGRAM (Programmgruppe) geprüft wird, da diese Transaktion häufig als Grundlage für die Definition von Parametertransaktionen genutzt wird.

Im weiteren Verlauf dieses Blogbeitrags werde ich näher auf die Unterschiede zwischen S_PROGRAM und S_PROGNAM eingehen und aufzeigen, inwiefern die XAMS bei der Analyse und Pflege dieser Berechtigungsobjekte unterstützen kann.

Aufbau der Berechtigungsobjekte S_PROGRAM und S_PROGNAM

Das von SAP zuerst eingeführte Berechtigungsobjekt S_PROGRAM ist wie folgt aufgebaut:

Abbildung 1: Aufbau des Objektes S_PROGRAM
Abbildung 1: Aufbau des Objektes S_PROGRAM

Das Objekt wird mit den Feldern P_GROUP (Berechtigungsgruppe ABAP/4-Programm) und P_ACTION (Benutzeraktion ABAP/4-Programm) ausgeliefert, wobei die Benutzeraktionen folgende Auswahlmöglichkeiten zum Ausführen von ABAP-Programmen hergibt:

SUBMITAusführen von ABAP-Programmen
BTCSUBMITProgramme für die Hintergrundverarbeitung einplanen
VARIANTVarianten anlegen und pflegen

Ähnliche Felder sind bei dem neueren Berechtigungsobjekt S_PROGNAM vorhanden:

Abbildung 2: Aufbau des Objektes S_PROGNAM
Abbildung 2: Aufbau des Objektes S_PROGNAM

Dieses Objekt wird über die Felder P_ACTION und P_PROGNAM (Programmname mit Suchhilfe) gesteuert.

Der grundlegende Unterschied zwischen diesen beiden Objekten liegt also in den Feldern P_GROUP und P_PROGNAM. Im ersten Fall bezieht sich die Einschränkung auf Programmgruppen und im letzteren Fall auf einzelne Programmnamen. Hinter den Programmgruppen kann eine Vielzahl an Programm liegen, für welche User dann entsprechend ausführbare Berechtigungen erhalten würden. Anders als bei P_GROUP, wird bei P_PROGNAM granular auf das Ausführen von einzelnen Programmen berechtigt. Das Berechtigen von einzelnen Programmnamen sorgt so für wesentlich mehr Transparenz und reduziert das Risiko für den Zugriff auf unerwünschte ABAP-Programme. Aus diesem Grund empfiehlt es sich für generische Transaktionen (SA38, SE38) die zusätzliche Prüfung auf S_PROGNAM zu aktivieren.

Aktivierung des Objektes S_PROGNAM

Da das Berechtigungsobjekt S_PROGNAM erst später von SAP eingeführt wurde (siehe hierzu u.a. SAP-Hinweis 1946079), sollte zunächst über die Transaktion SACF (Schaltbare Berechtigungsprüfungen) geprüft werden, ob dieses Szenario der Berechtigungsprüfung überhaupt vorhanden und aktiviert ist. Das Szenario hat den Namen BC_GENERIC_REPORT_START und muss zur aktiven Nutzung dieser Berechtigungsprüfung eingeschaltet sein:

Abbildung 3: Aktivierung der schaltbaren Berechtigungsprüfung
Abbildung 3: Aktivierung der schaltbaren Berechtigungsprüfung

Bei der Aktivierung dieses Szenarios ist jedoch höchste Vorsicht geboten. Um produktive Störungen zu vermeiden, sollten im Vorfeld unbedingt die Berechtigungen für das Objekt S_PROGNAM in den Rollen aufgenommen werden. Hierzu bietet die Transaktion SACF auch einen entsprechenden Logging-Modus an, um die vorhandenen Rollen schrittweise mit den fehlenden Berechtigungen für S_PROGNAM zu erweitern. Denn sobald das Szenario aktiv ist, wird bei den generischen Transaktionen neben der Prüfung auf die Programmgruppe über S_PROGRAM, zusätzlich eine Prüfung auf S_PROGNAM stattfinden. Sofern auch das SACF-Szenario BC_GENERIC_REPORT_START_BATCH aktiviert wird, gilt dies auch für die Planung und Ausführung von Hintergrundjobs, weshalb Aktivierungen in der SACF grundsätzlich wohl überlegt und gut geplant werden müssen (siehe hierzu SAP-Hinweis 2272827).

Verwendung von Parametertransaktionen

Die Kombination der generischen Transaktionen SA38 oder SE38, zusammen mit dem Objekt S_PROGRAM, kann folglich zu kritischen Risiken im Bereich der ausführbaren ABAP-Programme führen. Dies hat den Hintergrund, dass beispielsweise über die generische Transaktion SA38 diverse Programme ausgeführt werden können – sofern der ausführende Benutzer hinreichende Berechtigungen für das Objekt S_PROGRAM in einem seiner zugeteilten Rollenprofile besitzt. Unglücklicherweise ist dies oftmals der Fall, sodass S_PROGRAM und das Feld P_GROUP mit weitreichenden Berechtigungswerten ausgeprägt ist. Dieses Szenario, dass Benutzer Zugriff auf das Ausführen diverser ABAP-Programme über die Transaktion SA38 erhalten, sollte dringend vermieden werden. Die empfohlene Lösung liegt in der Verwendung von sogenannten Parametertransaktionen. Darüber kann gezielt gewährleistet werden, dass die Benutzer des SAP-Systems nur Programme ausführen können, für die Sie auch über das Rollenmenü berechtigt sein sollen. Im Besten Fall erstellt man also für jedes Programm eine Parametertransaktionen, sodass eine granulare Einschränkung auf einzelne Programme gewährleistet ist. Im SAP Standard werden Parametertransaktionen über die SE93 erstellt. Die Xiting bietet jedoch mit dem XAMS-Modul Role Replicator die Möglichkeit, auch massenhaft Parametertransaktionen als Ersatz für z.B. die Vergabe der SA38 zu erstellen. Es handelt sich dabei um eine Automatisierung der ABAP-Workbench-Transaktion SE93, bei welcher die Erstellung von Parametertransaktionen über einen einzigen Excel-Upload erledigt wird. Das Format dieser Excel-Datei erwartet lediglich die folgenden Werte:

  • Name des Transaktionsobjektes
  • Text der Transaktionsbeschreibung
  • Paketname, dem die Transaktion zugewiesen werden soll
  • Parameter der Transaktion, die den Programmnamen übergibt

Ein Beispiel zum Aufbau der benötigten Excel-Datei kann wie folgt aussehen:

Spalte ASpalte BSpalte CSpalte D
Z_PARATCD1Parametertransaktion 1Z_DEMORGRMTF00
Z_PARATCD2Parametertransaktion 2Z_DEMO/SDF/AJM_SHOW_SM37_JOBLIST
Z_PARATCD3Parametertransaktion 3Z_DEMOZ_PROGRAMM_DEBITOR

Nachdem die Parametertransaktionen erstellt worden sind, können diese in ein Rollenmenü aufgenommen werden. Um die Parametertransaktion ausführen zu können, ist es nötig die Programmgruppe über die SU24 in dem Rollenprofil zu hinterlegen, sofern dem zugrundeliegenden Programm eine Berechtigungsgruppe zugeordnet wurde. Die Ausprägung in dem Rollenprofil würde dann wie folgt für die Parametertransaktion Z_PARATCD1 aussehen:

Abbildung 4: Ausprägung des Objektes S_PROGRAM im Rollenprofil
Abbildung 4: Ausprägung des Objektes S_PROGRAM im Rollenprofil

Pflege der SU24 für S_PROG* Parametertransaktionen

Die Verwendung von Parametertransaktionen wird empfohlen, um die Vergabe von den generischen Transaktionen SA38 und SE38 zu vermeiden. Damit eine effiziente Administration und die Transparenz durch die Vergabe von Parametertransaktionen erhalten bleibt, sollte eine saubere Pflege der SU24 Vorschlagswerte für diese Transaktionen sichergestellt werden. Unter einer sauberen Pflege ist die konkrete Pflege von Programmnamen bzw. Programmgruppen der Berechtigungsobjekte S_PROGNAM und S_PROGRAM über die Transaktion SU24 gemeint. Neben der massenhaften Erstellung von Parametertransaktionen, können mit dem XAMS-Modul Role Profiler deshalb ebenfalls massenhaft SU24 Vorschlagswerte dieser Transaktionen gepflegt werden. Nur so kann eine langfristig administrierbare und transparente Rollenpflege gewährleistet werden. Der Xiting Role Profiler enthält einen Report, welcher gezielt nach Parametertransaktionen sucht, die ausführbare Programme starten. Sobald ein Programm einer S_PROGRAM Gruppe zugeordnet ist, wird diese Transaktion in dem Report auftauchen. Zusätzlich dazu wird von dem Report geprüft, ob die Programmgruppe bzw. der Programmname ordnungsgemäß in den SU24 Vorschlagswerten der betroffenen Parametertransaktion hinterlegt ist.

Abbildung 5: Role Profiler Report SU24 für S_PROG* Parametertransaktionen (rote Ampeln)
Abbildung 5: Role Profiler Report SU24 für S_PROG* Parametertransaktionen (rote Ampel)

In dem obigen Screenshot ist anhand der roten Ampeln zu erkennen, dass der Report keinen hinterlegten SU24 Vorschlagswert für die Beispiel-Transaktion Z_PARATCD1 und dem Objekt S_PROGNAM (Feld P_PROGNAM mit Wert RGRMTF00) oder S_PROGRAM (Feld P_GROUP mit Wert GRWT) gefunden hat. Mit diesem Report kann man nun für alle aufgelisteten Transaktionen die SU24 Vorschlagswerte beider Objekte per Knopfdruck nachpflegen, sofern der Programmname oder die Programmgruppe des dahinterliegenden Programms bekannt ist. In unserem Beispiel würde man für die Transaktion Z_PARATCD1 nun die Programmgruppe „GRWT“ hinzufügen, sodass die Ampel anschließend auf grün umspringt, da der Vorschlagswert für Objekt S_PROGRAM entsprechend in der SU24 nachgepflegt wurde:

Abbildung 6: Role Profiler Report SU24 für S_PROG* Parametertransaktionen (grüne Ampel)
Abbildung 6: Role Profiler Report SU24 für S_PROG* Parametertransaktionen (grüne Ampel)

Auch eine massenhafte Pflege der Vorschlagswerte für S_PROGRAM oder S_PROGNAM kann über den Expertenmodus mit diesem Tool umgesetzt werden. Gerade auch im Hinblick auf das SACF-Szenario BC_GENERIC_REPORT_START_BATCH ist die Pflege beider Objekte anzustreben.

Fazit

Die Vergabe von generischen Transaktionen wie SA38 oder SE38 kann zu einem erhöhten Risiko führen, da im schlimmsten Fall diverse oder sogar alle ABAP-Programme von Benutzern ausgeführt werden können. Aus diesem Grund sollten stattdessen sogenannte Parametertransaktionen erstellt werden, worüber gezielt nur einzelne Programme gestartet werden. Da über die SA38 oftmals eine Vielzahl von Programmen aufgerufen werden, bietet sich der Role Replicator zur massenhaften Erstellung von Parametertransaktionen an. Die erstellten Transaktionen können anschließend in einem Rollenmenü aufgenommen und die Benutzer entsprechend über die Rolle berechtigt werden.

Zusätzlich dazu empfehlen wir die Berechtigungsprüfung für das Objekt S_PROGNAM zu aktivieren, um sich bei generischen Transaktionen vor dem Aufruf diverser ABAP-Programmen zu schützen. Um einen Überblick der SU24 Vorschlagswerte zu bekommen und diese auch massenhaft für Parametertransaktionen nachzupflegen, bietet sich der in diesem Beitrag aufgezeigte Role Profiler Report an. Dadurch kann eine ordnungsgemäße Analyse und Pflege der Programmgruppen und Programmnamen hinter Parametertransaktionen gewährleistet werden. Bevor die Verwendung des Objektes S_PROGNAM für generische Transaktionen möglich ist, muss zunächst jedoch sichergestellt werden, dass die Rollen entsprechend vorbereitet wurden und dass das schaltbare Berechtigungsszenario BC_GENERIC_REPORT_START über die Transaktion SACF aktiviert ist.

Steffen Lüken
Kontakt

Nehmen Sie Kontakt mit uns auf!

Haben Sie Fragen zu unseren Produkten?

+41 43 422 8803
[email protected]
+49 7656 8999 002
[email protected]
+1 855 594 84 64
[email protected]
+44 1454 838 785
[email protected]
Kontakt
Webinare

Besuchen Sie unsere Live-Webinare und lernen Sie von unseren Experten mehr zu SAP-Berechtigungen, XAMS, SAP IDM und zu vielen weiteren Themen im Kontext von SAP Security.

Hier anmelden