Verwendung generischer Anwendungszugriffsregeln in der SAP-Eigenentwicklung

Bei SAP-Anwendungen ist es häufig erforderlich, den Zugriff bestimmter Entitäten auf eine Teilmenge aller Instanzen zu beschränken. In den meisten Fällen reicht das SAP-Berechtigungskonzept hierfür aus. Die Verwendung von SAP-Berechtigungen hat jedoch einige Nachteile:

  • Bei der Einführung eines neuen Geschäftsprozesses ist möglicherweise nicht klar, auf welche Instanzen zugegriffen werden muss und welche unzugänglich gemacht werden sollten 
  • Es besteht immer die Gefahr, dass einigen Benutzern Rollen zugewiesen werden, die uneingeschränkten Zugriff auf eine Entität gewähren (Berechtigungsfeld XYZ = „*“).
  • Es ist schwierig, unbefugte Zugriffsversuche auf eine gesperrte Instanz zu erkennen

Entwickler können diese Nachteile beseitigen, indem sie Zulassungslisten in Geschäftsprozesse integrieren. Durch die Zuweisung einer geeigneten Auslieferungsklasse zur Zulassungslistentabelle bzw. -ansicht ist es möglich, separate Namensräume für Inhalte von Drittanbietern und Kunden zu reservieren. Die Trennung der Namensräume erfordert jedoch häufig die Einführung von künstlichen Schlüsseln, da die Entitätsschlüssel in der Regel nicht den Namensraumbedingungen entsprechen.

Allgemeine Zugriffsregeln für SAP-Anwendungen

Die generischen SAP-Anwendungszugriffsregeln führen ein Switch-Framework ein, das alle zuvor beschriebenen Einschränkungen überwindet. Es rückte in den Fokus, als SAP begann, Zugriffsregeln für den Fernzugriff auf beliebige Tabellen über den Funktionsbaustein RFC_READ_TABLE bereitzustellen (siehe SAP RFC Read Table: Zugriff auf beliebige Tabellen in SAP). Die Möglichkeiten zur Einschränkung dieser Art von Fernzugriff auf Tabellen sind:

  • Verhindern Sie jeden Aufruf von RFC_READ_TABLE im System über das Unified Connectivity Framework (UCON)
  • Beschränken Sie die Nutzung des Funktionsbausteins über das Berechtigungsobjekt S_RFC auf bestimmte Benutzer
  • Gewähren Sie bestimmten Benutzern über die Berechtigungsobjekte S_TABU_DIS oder S_TABU_NAM eingeschränkten Zugriff auf bestimmte Tabellen

Mit der Einführung von Zugriffsregeln wurden die folgenden zwei control hinzugefügt:

  • Den Zugriff auf bestimmte Tabellen für alle Benutzer einschränken 
  • Legen Sie fest, aus welchen Programmen der Funktionsbaustein aufgerufen werden darf
  • (Wird RFC_READ_TABLE über die RFC-Schnittstelle aufgerufen, ist das aufrufende Programm immer SAPMSSY1.)
Allgemeine SAP-Anwendung RFC_READ_TABLE

Generische Zugriffsregeln können als zusätzliche Ebene zur Einschränkung des Benutzerzugriffs genutzt werden. Dieses Framework steht für alle SAP NetWeaver AS ABAP-Versionen ab 7.0 zur Verfügung.

Verwaltung allgemeiner SAP-Zugriffsregeln

Die zentrale Transaktion für die Pflege generischer Zugriffsregeln ist die Transaktion SLDW. Über diese Transaktion werden Zugriffsregeldefinitionen und aktive Zugriffsregeln gepflegt.

Note: In SAP NetWeaver Releases < 7.56, Generic Access Rules are called “Generic Whitelists” and/or “Generic Allowlists”. Unfortunately, the renaming was not completely done in all areas of the SLDW application. Therefore, this post also uses the previous wording whenever it directly references a part of the application that was not yet renamed by SAP.

Definition einer SAP-Zugriffsregel

Ausgangspunkt für die Erstellung einer Zugriffsregel ist die Zugriffsregeldefinition. Die Definition enthält die Kopfdaten einer Zugriffsregel sowie optional ein oder mehrere Zugriffsregelelemente.

Die Kopfdaten umfassen:

  • Name  
  • Kurzbeschreibung
  • Status prüfen
  • Mögliche Werte sind:
    • A: Whitelist-Prüfung aktiv
    • N: Whitelist-Prüfung deaktiviert
    • I: Informelle Whitelist (Warnung ohne Fehlercodierung)
    • R: Aufnahmemodus (neue Elemente im Dialogfeld hinzufügen)
    • X: Aufnahmemodus (neue Elemente erhalten den Status „Gültig“)
    • D: Aufnahmemodus (neue Elemente erhalten den Status „Ungültig“)
  • SAL-Modus (Sicherheitsüberwachungsprotokoll-Modus)
  • Mögliche Werte sind:
    • N: Kein Eintrag im Sicherheitsprotokoll
    • E: Fehlgeschlagene Prüfungen in SAL erfassen
    • A: Alle Prüfungen im Sicherheitsprotokoll aufzeichnen
  • Ein SAP-Dokumentobjekt
  • Eine Fehlermeldung (optional)

Das Interessante daran ist, dass man eine Zugriffsregel im Lernmodus ausführen kann, der alle neu geprüften Elemente aufzeichnet (Prüfstatus: R, X, D). Eine weitere hilfreiche Funktion ist die Anbindung an das Sicherheitsüberwachungsprotokoll (SAL). Die folgenden Ereignisse müssen im SAL aktiviert werden:

Ereignis-ID

Beschreibung

DUL

Zeichnet erfolgreiche Prüfungen auf (nur erforderlich, wenn der SAL-Modus für mindestens eine Zugriffsregel auf „A“ eingestellt ist)

DUM

Protokolliert fehlgeschlagene Prüfungen (nur erforderlich, wenn der SAL-Modus für mindestens eine Zugriffsregel auf „A“ oder „E“ eingestellt ist) 

DUN

Zeichnet alle Änderungen an aktiven Zugriffsregeln auf. Dies geschieht unabhängig von den Einstellungen für den SAL-Modus in den Zugriffsregeln.

Die Elementliste einer Zugriffsregeldefinition enthält Informationen zu den zulässigen und (optional) den unzulässigen Werten. Mögliche Statuswerte für ein Element sind:

  • <space>:    Not maintained
  • X: Gültiger Regeleintrag
  • D: Ungültiger Eintrag (zur Löschung vorgemerkt)
  • A: Eintrag für „Check Note“ (Notizmodus)    

An Access Rule Definition usually only contains entries of status ‘X’ since values not included in the element list are automatically disallowed. Records with status value <space> or ‘D’ are usually inserted into the element list of an Active Access Rule during recording (refer to next section). 

SAP Active Access-Regel

Sobald die Erstellung einer Zugriffsregeldefinition abgeschlossen ist, muss diese aktiviert werden. Mit der Transaktion SLDW kann die Zugriffsregeldefinition in eine aktive Zugriffsregel übertragen werden. Die aktive Zugriffsregel übernimmt zunächst alle in der Zugriffsregeldefinition definierten Eigenschaften und Elemente. Diese können anschließend entweder manuell oder durch Aktivieren eines der Aufzeichnungsmodi angepasst werden. Dieses Konzept ermöglicht es SAP und Drittanbietern, aktualisierte Zugriffsregeldefinitionen bereitzustellen, ohne die aktiven Einstellungen des Kunden zu überschreiben. Kunden können dann ihre aktive Zugriffsregel in einem separaten Schritt an die aktualisierte Zugriffsregeldefinition anpassen. Diese Anpassungen können mit der Transaktion SLDW_COMPARE durchgeführt werden.

Überprüfung der SAP-Zugriffsregeln im Quellcode

Um das Vorhandensein und den Status eines Elements anhand einer Active-Access-Regel zu überprüfen, muss der folgende Methodenaufruf verwendet werden:

cl_sldw=>access_check_entry( EXPORTING id_wl_name  = ‘<Access Rule>’
                                                    id_wl_ename = CONV #( ‘<Element to check>’ )
                                                      id_silent   = abap_false ).

Wenn die Prüfung erfolgreich ist, gibt die Methode den Wert 0 zurück. Mit dem Parameter id_silent lässt sich control die Methode ein eigenes Fehlermeldungs-Popup anzeigen soll oder ob der Fehler vom Aufrufer der Methode behandelt wird. Im letzteren Fall können die Meldungsnummer und der Meldungsbereich aus Systemvariablen ausgelesen werden. Die Meldungskennungen können im Rahmen der Kopfdaten der Zugriffsregeldefinition angepasst werden.

Wichtig: Die Prüfmethode gibt auch dann den Wert 0 zurück, wenn der Prüfstatus der geprüften Active-Access-Regel auf „Whitelist-Prüfung inaktiv“ gesetzt ist oder wenn die Active-Access-Regel gar nicht existiert! Sie können die Konsistenzprüfung in der Transaktion SLDW_COMPARE nutzen, um solche Szenarien zu erkennen, allerdings nur, wenn die Active-Access-Regel beim Start der Konsistenzprüfung noch fehlt.  
 

Lebenszyklus einer SAP-Kundenzugriffsregel

  1. Erstellen Sie auf dem Entwicklungssystem eine Zugriffsregel-Definition unter „
    “. Wenn Sie sich bezüglich der zulässigen Elemente nicht sicher sind, aktivieren Sie einen geeigneten Aufzeichnungsmodus.

             => Die Zugriffsregeldefinition wird in einem Transportauftrag als R3TR-SLDD-Objekt erfasst

  1. Verwenden Sie die Transaktion SLDW, um die Zugriffsregeldefinition in die entsprechende aktive Zugriffsregel zu übertragen

             => Die Active-Access-Regel wird in einem Transportauftrag als R3TR-SLDC-Objekt erfasst

  1. Den Transportauftrag in eine Testumgebung übertragen
  2. Nach Ablauf des Aufzeichnungszeitraums können Sie auf der Grundlage der im Testsystem aufgezeichneten Einträge entweder die Zugriffsregeldefinition und die aktive Zugriffsregel manuell im Entwicklungssystem anpassen oder die Ergebnisse mithilfe der Transaktion SLDW_TRANSFER über eine Dateischnittstelle vom Test- in das Entwicklungssystem übertragen
    Hinweis: Während die Transaktion SLDW_COMPARE zur Synchronisierung einer Zugriffsregeldefinition mit der entsprechenden aktiven Zugriffsregel verwendet werden kann, scheint es keine Möglichkeit für die umgekehrte Richtung zu geben. Daher müssen Einträge, die einer aktiven Zugriffsregel durch Aufzeichnung hinzugefügt wurden, immer manuell auf die Zugriffsregeldefinition angewendet werden.
  3. Ändern Sie den Prüfstatus der Zugriffsregel-Definition auf „Whitelist-Prüfung aktiv“
  4. Verwenden Sie die Transaktion SLD_COMPARE und die Option „Massenaktualisierung – Kopfdaten – Aktive Regeln“, um den Prüfstatus der aktiven Zugriffsregel entsprechend anzupassen.
  5. Leiten Sie den Transportauftrag, in dem die Änderungen erfasst wurden, an die Folgesysteme weiter.

Der Lebenszyklus einer von SAP oder einem Drittanbieter bereitgestellten Zugriffsregel wird im SAP-Hinweis Nr. 1922712 mit dem Titel „SLDW: FAQ: Ergänzende Hinweise zur Pflege der Whitelist“ erläutert.

Fazit

Das Rahmenwerk der generischen Zugriffsregeln kann als Alternative oder zusätzliche Option genutzt werden, wenn der Zugriff auf eine bestimmte Entität eingeschränkt werden soll. Die Vorteile sind:

  • Der Aufzeichnungsmodus ermöglicht die anfängliche Erfassung aller Instanzen einer Entität, auf die zugegriffen werden muss
  • Das Framework, das als zusätzliche Filterstufe auf dem SAP-Berechtigungskonzept aufsetzt, kann den uneingeschränkten Zugriff verhindern, der durch versehentlich zugewiesene generische Berechtigungen gewährt wird (Berechtigungsfeld XYZ = „*“)
  • Jeder Versuch, auf eine unzulässige Instanz zuzugreifen, kann im SAP-Sicherheitsprotokoll aufgezeichnet und erkannt werden
  • SAP und Drittanbieter können aktualisierte Inhalte bereitstellen, ohne die laufenden Geschäftsprozesse des Kunden zu beeinträchtigen

Nützliche Transaktionen und Berichte

Name

Typ

Beschreibung

SLDW

Transaktion

Pflege der Zugriffsregeln für Anwendungen

SLDW_COMPARE

Transaktion

Anwendungszugriffsregeln vergleichen und anpassen 

SLDW_DEMO

Transaktion

Demo-Anwendung für Zugriffsregeln 

SLDW_INFO

Transaktion

Infosystem für Zugriffsregeln auf Anwendungen 

SLDW_TRANSFER

Transaktion

Dateischnittstelle zur systemübergreifenden Übertragung von Anwendungszugriffsregeln

SLDW_SHOW_HISTORY

Bericht

Dokumente für generische Zugriffsregeln ändern

SLDW_TEST_UND_DEMO

Bericht

Beispielbericht zur Umsetzung einer Überprüfung der generischen Zugriffsregel

SLDW_API_DEMO

Bericht

Demo zur systemübergreifenden Konsistenzprüfung und zum Informationssystem