Ansicht
Dokumentation

ABENFILE_INTERFACE_AUTHORITY - FILE INTERFACE AUTHORITY

ABENFILE_INTERFACE_AUTHORITY - FILE INTERFACE AUTHORITY

Vendor Master (General Section)   ABAP Short Reference  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

Automatische Berechtigungsprüfungen

Folgende Berechtigungsprüfungen finden bei Dateizugriffen automatisch statt:

Berechtigungsprüfung im Betriebssystem

Aus Sicht des Betriebssystems des Hostrechners einer werden alle Zugriffe auf Dateien vom AS ABAP ausgeführt. Dies hat zur Konsequenz, dass der Benutzer des Betriebssystems, der eine des AS ABAP instanziiert, eine Lese- und Schreibberechtigung für alle Verzeichnisse und Dateien haben muss, die von der ABAP-Dateischnittstelle behandelt werden. Liegt eine Berechtigung nicht vor, können die Anweisungen der Dateischnittstelle gar nicht oder nur teilweise ausgeführt werden. Wenn eine Anweisung wegen einer fehlenden Berechtigung im Betriebssystem nicht ausgeführt werden kann, wird der Rückgabewert sy-subrc ungleich 0 gesetzt.

Berechtigungsprüfung für spezielle Dateien

Vor jedem Zugriff auf eine PSE-Datei (Datei mit der Endung .pse für ein Personal Security Environment) wird automatisch eine Berechtigungsprüfung für den aktuellen Benutzer mit dem Wert "01" für das Feld ACTVT des Berechtigungsobjekts S_RZL_ADM der Systemadministration ausgeführt.

Berechtigungsobjekt S_DATASET

Vor jedem Öffnen oder Löschen einer Datei über

wird automatisch eine Berechtigungsprüfung für den aktuellen Benutzer und das aktuelle Programm mit dem vordefinierten Berechtigungsobjekt S_DATASET ausgeführt. Dieses Berechtigungsobjekt hat die Berechtigungsfelder PROGRAM für den Programmnamen, FILENAME für die zu öffnende Datei und ACTVT mit den Aktivitäten Löschen, Lesen, Schreiben, Lesen mit Filter und Schreiben mit Filter. Falls die entsprechende Berechtigung nicht vorliegt, kommt es zu einer behandelbaren Ausnahme der Klasse CX_SY_FILE_AUTHORITY. Um dies zu verhindern, kann vor der entsprechenden ABAP-Anweisung der Funktionsbaustein AUTHORITY_CHECK_DATASET aufgerufen werden, um das Vorliegen der Berechtigung zu überprüfen.

Hinweis

Bei der Berechtigungsprüfung mit dem Berechtigungsobjekt S_DATASET werden der in obigen Anweisungen verwendete physikalische Dateiname und die Werte des Berechtigungsfelds FILENAME literal verglichen. Relative Pfadangaben werden nicht in absolute Pfadangaben umgesetzt. Um unerwartete Ergebnisse zu vermeiden, sollten in physischen Dateinamen nur absolute Pfadangaben gemacht werden.

Datenbanktabelle SPTH und Berechtigungsobjekt S_PATH

Bei Zugriffen auf Dateien mit den Anweisungen

wird automatisch eine Überprüfung der Einträge in der Datenbanktabelle SPTH durchgeführt. Die Einträge in der Datenbanktabelle SPTH regeln die generellen Lese- und Schreibzugriffe aus ABAP-Programmen auf Dateien und ob Dateien in eine Sicherungsprozedur (Backup) aufgenommen werden sollen.

In der Datenbanktabelle SPTH können Lese- oder Schreibzugriffe auf absolut oder relativ spezifizierte Dateien unabhängig von Berechtigungsobjekten generell verboten werden. Für die übrigen Dateien (also solche, deren Lese- oder Schreibzugriffe in der Datenbanktabelle SPTH generell erlaubt sind) können Berechtigungsprüfungen auf der Grundlage von Berechtigungsobjekten durchgeführt werden. Hierfür können in der Datenbanktabelle SPTH Berechtigungsgruppen aus der Tabelle SPTHB (Texte in SPTHT, gemeinsamer View V_SPT) für programmunabhängige Berechtigungsprüfungen angegeben werden. Die folgende Tabelle zeigt die Spalten der Datenbanktabelle SPTH. Falls die Überprüfung der Datenbanktabelle SPTH ein negatives Ergebnis hat, kommt es zu einer behandelbaren Ausnahme der Klasse CX_SY_FILE_AUTHORITY.

Spalte Bedeutung
PATH Absolute oder relative Pfadangabe für Verzeichnis- oder Dateinamen. Die Angaben der übrigen Spalten dieser Zeile betreffen alle Dateien der , auf die der Eintrag in dieser Spalte am genauesten zutrifft.
SAVEFLAG Ein Wert "X" in dieser Spalte kann von Sicherungsprozeduren (Backup) ausgewertet werden. Das ABAP-Laufzeit-Framework selbst führt keine Sicherungsprozedur aus.
FS_NOREAD Wenn diese Spalte den Wert "X" enthält, können aus ABAP keine Zugriffe auf die in der Spalte PATH angegebenen Dateien durchgeführt werden. Diese Einstellung übersteuert die Einstellungen in den Spalten FS_NOWRITE und FS_BRGRU sowie die Berechtigungsprüfung über das Berechtigungsobjekt S_DATASET.
FS_NOWRITE Wenn diese Spalte den Wert "X" enthält, können aus ABAP keine schreibenden Zugriffe auf die in der Spalte PATH angegebenen Dateien durchgeführt werden. Diese Einstellung übersteuert die Einstellungen in der Spalte FS_BRGRU sowie die Berechtigungsprüfung über das Berechtigungsobjekt S_DATASET.
FS_BRGRU In dieser Spalte kann eine Berechtigungsgruppe angegeben werden, die in der Tabelle SPTHB definiert ist. Die Dateien mehrerer Zeilen können dadurch in Berechtigungsgruppen zusammengefasst werden. Bei der Auswertung der Datenbanktabelle SPTH wird eine Berechtigungsprüfung für den aktuellen Benutzer gegen das Berechtigungsobjekt S_PATH ausgeführt, das ein Berechtigungsfeld FS_BRGRU und ein Berechtigungsfeld ACTVT mit den möglichen Werten "03" (Anzeige), "02" (Ändern), "A6" (Anzeige mit Zusatz FILTER ) und "A7" (Ändern mit Zusatz FILTER) enthält, wodurch Zugriffe auf die in PATH angegebenen Dateien benutzerabhängig vergeben werden können. Wenn keine Berechtigungsgruppe angegeben ist, wird keine Berechtigungsprüfung gegen das Berechtigungsobjekt S_PATH ausgeführt.

In den Pfadangaben der Spalte PATH können wie folgt Platzhalter für bestimmte Profilparameter oder für den aktuellen Mandanten angegeben werden:

... P=name> ...

Ein Platzhalter wird bei der Auswertung durch den Wert des in name angegebenen Profilparameters bzw. durch die aktuelle Mandantenkennung ersetzt. Die möglichen Werte für name sind in der Dokumentation der Tabelle SPTH aufgeführt.

Beim Zugriff auf eine Datei mit den Anweisungen OPEN DATASET und DELETE DATASET wird ein physikalischer Dateiname verwendet. Für die Umsetzung der Angaben der Datenbanktabelle SPTH wird überprüft ob der physikalische Dateiname mit einem Eintrag in der Spalte PATH beginnt und es wird die Zeile mit der längsten übereinstimmenden Pfadangabe verwendet. Vor der Überprüfung wird eine Pfadangabe im physikalischen Dateinamen wie folgt normalisiert:

  • Die Anteile ../ werden entfernt. Beispielsweise wird eine Pfadangabe /tmp/sub1/../sub2/file in /tmp/sub2/file verwandelt.
  • Wenn es sich nicht um ein MS-Windows-Betriebssystem handelt, werden die Zeichen / nach \ und alle Buchstaben in Großbuchstaben umgesetzt.

Wenn keine übereinstimmende Pfadangabe in der Spalte PATH gefunden wird, wird die Zeile verwendet, in der die Spalte PATH den Eintrag "*" enthält. Wenn auch dieser Eintrag nicht vorhanden ist, wird keine automatische Berechtigungsprüfung durchgeführt.

Das Zeichen "*" in der Spalte PATH spielt nur dann eine besondere Rolle, wenn es dort als einziges Zeichen enthalten ist. Innerhalb von Pfadangaben wirkt es nicht als Maskenzeichen sondern wird literal verglichen.

Hinweise

  • Im Vergleich zur Berechtigungsprüfung über das Berechtigungsobjekt S_DATASET (siehe oben) ist die Berechtigungsprüfung gegen das Berechtigungsobjekt S_PATH unabhängig vom verwendeten ABAP-Programm.
  • Pfadangaben in der Spalte PATH sollten in normalisierter Form vorliegen.
  • Bei der Normalisierung der Pfadangabe in einem physikalischen Dateinamen werden relative Pfadangaben nicht in absolute Pfadangaben umgesetzt. Verknüpfungen und andere veränderliche Angaben werden nicht aufgelöst.
  • Die Vergleichsregel für die Pfadangabe in der Spalte PATH mit einem für den Zugriff auf eine Datei verwendeten physikalischen Dateinamen ist zum einen literal und wegen der Überprüfung auf Übereinstimmung des Anfangsteils aber auch generisch. Folgendes ist zu beachten, um unerwartete Ergebnisse zu vermeiden:
  • Das Zeichen "*" spielt keine Sonderrolle, außer es ist als einziges Zeichen in der Spalte PATH enthalten.

  • Die Tabelle SPTH sollte immer einen Eintrag mit dem Wert "*" für die Spalte PATH enthalten, der dann verwendet wird, wenn kein anderer Eintrag passt.

  • Die Namen von Verzeichnissen sollten immer mit dem Zeichen "/" abgeschlossen werden. Ansonsten bezeichnet eine Pfadangabe wie "/tmp" in der Spalte PATH nicht nur das Verzeichnis "/tmp/" sondern auch alle Dateien und Verzeichnisse, die mit "/tmp" beginnen, wie "/tmpxxx".

  • Eine Pfadangabe in der Spalte PATH ist generell nicht eindeutig. Sie kann harte Verknüpfungen (Hardlinks) und symbolische Verknüpfungen (Softlinks) enthalten. Es kann veränderliche Einhängepunkte (mount points), Netzwerkpfade usw. geben. Deshalb ist Folgendes zu beachten:
  • Eine Kombination der Pfadangaben in der Spalte PATH mit Werten "X" in den Spalten FS_NOREAD und FS_NOWRITE definiert benutzerunabhängige Ausschlusslisten verbotener Pfadangaben. Wegen deren Uneindeutigkeit kann die Begrenzung der Zugriffsrechte nicht ausreichend sein.

  • Eine Kombination der Pfadangaben in der Spalte PATH mit Berechtigungsgruppen in der Spalte FS_BRGRU definiert Einschlusslisten erlaubter Pfadangaben für berechtigte Benutzer. In diesem Fall ist die Uneindeutigkeit nicht kritisch.

Aus diesem Grund wird empfohlen statt mit den Spalten FS_NOREAD und FS_NOWRITE im Wesentlichen mit Berechtigungsgruppen in der Spalte FS_BRGRU und dem Berechtigungsobjekt S_PATH zu arbeiten.
  • Anders als eine Berechtigungsprüfung über das Berechtigungsobjekt S_PATH erfolgt eine Überprüfung der Spalten FS_NOREAD und FS_NOWRITE nicht im Rahmen des allgemeinen Berechtigungskonzepts und es werden keine der zugehörigen Protokolleinträge geschrieben.
  • Aus Kompatiblitätsgründen wird bei einer Überprüfung des Berechtigungsobjekts S_PATH auch noch ein leerer Wert für die Aktivität akzeptiert und erlaubt das Öffnen von Dateien mit dem Zusatz FILTER.
  • Die Spalte SAVEFLAG für eventuelle Sicherungsprozeduren sollte nur zusammen mit einem Wert in einer anderen Spalte, vorzugsweise in FS_BRGRU verwendet werden. Andernfalls findet für die Dateien, die durch die Pfadangabe in PATH abgedeckt werden, keine Berechtigungsprüfung statt.

Beispiel

Die Tabelle SPTH sei wie folgt gefüllt:

PATH SAVEFLAG FS_NOREAD FS_NOWRITE FS_BRGRU
* - - - SUPR
/ - - - ROOT
/dir_open/ - - - -
/tmp/sub/data/ - - - UDAT
/tmp/sub/data/work/ - - - UWRK
/tmp/sub/prefix - - - UPRE

Die Einträge erzielen folgende Wirkung:

  • Jeder Benutzer darf lesend und schreibend auf Dateien des Verzeichnisses /dir_open und seiner Unterverzeichnisse zugreifen, da keinerlei Beschränkungen eingetragen sind.
  • Nur Benutzer, die eine Berechtigung für die Berechtigungsgruppe UWRK haben, dürfen auf Dateien des Verzeichnisses /tmp/sub/data/work/ und seiner Unterverzeichnisse zugreifen.
  • Nur Benutzer, die eine Berechtigung für die Berechtigungsgruppe UDAT haben, dürfen auf Dateien des Verzeichnisses /tmp/sub/data/ und seiner Unterverzeichnisse mit Ausnahme von /tmp/sub/data/work/ zugreifen. Für /tmp/sub/data/work/ wird stattdessen eine Berechtigung für die Berechtigungsgruppe UWRK benötigt.
  • Benutzer, die eine Berechtigung für die Berechtigungsgruppe UPRE haben, dürfen sowohl auf Dateien im Verzeichnis /tmp/sub zugreifen, deren Name mit prefix beginnt, als auch auf alle Dateien in Unterverzeichnissen deren Name mit /tmp/sub/prefix beginnt. Falls der Zugriff auf die Dateien eines Unterverzeichnisses /tmp/sub/prefix eingeschränkt werden soll, muss die Angabe in der Spalte PATH mit "/" abgeschlossen werden.
  • Benutzer, die eine Berechtigung für die Berechtigungsgruppe ROOT haben, dürfen auf Dateien jedes Verzeichnisses zugreifen, vorausgesetzt, die Angabe des physikalischen Dateinamens beginnt beim Zugriff mit "/" bzw. ist absolut.
  • Benutzer, die eine Berechtigung für die Berechtigungsgruppe SUPR haben, dürfen auf Dateien beliebiger relativ angegebener Verzeichnisse zugreifen, deren Angabe nicht mit "/" beginnt.

Beispiel

Die Tabelle SPTH sei wie folgt gefüllt:

PATH SAVEFLAG FS_NOREAD FS_NOWRITE FS_BRGRU
* - X X -
/ - - - ROOT
/tmp/ - - - -
/tmp/myfiles/ - - - FILE

Die Einträge in der

  • ersten Zeile gelten für alle Dateien der bis auf die der Pfade /, /tmp/ und deren Unterverzeichnisse.
  • zweiten Zeile gelten für alle Dateien der im Pfad / bis auf die Dateien des Pfads /tmp und dessen Unterverzeichnisse,
  • dritten Zeile gelten für alle Dateien der im Pfad /tmp bis auf die Dateien des Pfads /tmp/myfiles und dessen Unterverzeichnisse,
  • vierten Zeile gelten für die Dateien im Pfad /tmp/myfiles und dessen Unterverzeichnisse.

Die Einträge legen fest, dass kein Benutzer lesend oder schreibend auf über relative Pfadangaben angegebene Dateien zugreifen darf. Benutzer mit Berechtigung für die Berechtigungsgruppe ROOT dürfen auf alle über absolute Pfadangaben angegebene Dateien zugreifen, bis auf die Dateien des Pfads /tmp/myfiles. Alle Benutzer können lesend und schreibend auf die Dateien des Pfads /tmp/ zugreifen. Nur Benutzer, die eine Berechtigung für die Berechtigungsgruppe FILE haben, können auf die Dateien des Pfads /tmp/myfiles/ lesend und schreibend zugreifen. Mit obiger Tabelle führen also die folgenden Programmzeilen für alle Benutzer, außer solchen mit Berechtigung für die Berechtigungsgruppe ROOT zu einem Laufzeitfehler:

DATA fname TYPE string.
fname = `/system/files`.
OPEN DATASET fname FOR OUTPUT IN BINARY MODE.

Die Konfiguration verbietet jede relative Pfadangabe beim Zugriff auf Dateien. In der Regel ist eine solche Konfiguration nur empfohlen, wenn dies tatsächlich gewünscht ist.

  • Alle erlaubten relativen Pfade sollten explizit in der Tabelle SPTH aufgeführt und mit entsprechenden Berechtigungsgruppen verknüpft werden.
  • Auch der Zugriff auf die Pfadangabe "* sollte über eine Berechtigungsgruppe geregelt sein, welche den Zugriff über alle relative Pfadangaben für berechtigte Benutzer erlaubt.





PERFORM Short Reference   CL_GUI_FRONTEND_SERVICES - Frontend Services  
Diese Dokumentation steht unter dem Copyright der SAP AG.

Length: 27267 Date: 20240523 Time: 164712     sap01-206 ( 407 ms )