# Resource Access Control Facility

Resource Access Control Facility (RACF) ist IBMs Implementierung der Sicherheitschnittstelle SAF (System Authorization Facility) der Großrechnerbetriebssysteme MVS (Kern des z/OS) und – in einer älteren Version – z/VM. Der heutige Name lautet SecureWay Security Server – RACF. Die erste Einführung erfolgte 1976.
Die Hauptfunktionen, die es erfüllt sind:
* Identifikation und Verifikation der Benutzer mittels Benutzerschlüssel und Passwortprüfung (Authentifizierung)
* Schutz von Ressourcen durch die Verwaltung der Zugriffsrechte (Autorisierung)
* Protokollierung der Zugriffe auf geschützte Ressourcen (Auditing).
Der RACF-Administrator pflegt mittels RACF-Kommandos die RACF-Datenbank. Diese enthält in sogenannten Profilen die Benutzerschlüssel (Userids), die zu schützenden Ressourcen (Resources) und Gruppen (Groups).

## Userids

Benutzer des Systems sind natürliche Personen und auch technische Benutzer, die sich mit einer RACF-Userid in einem Onlinesystem wie TSO, CICS oder IMS an einem Terminal anmelden oder auch Server-Prozesse („Started Tasks“ im MVS-Sprachgebrauch), denen die RACF-Administration eine Userid zugeordnet hat.
In einem Benutzer-Profil speichert RACF neben Namen des Benutzers statistische und weitere Informationen:
* Änderungsdatum des Passwortes
* Letzte Benutzung der Userid
* Passwort (verschlüsselt), Passwort-Historie
* Gruppenzugehörigkeit
* Benutzerattribute wie REVOKED welches anzeigt, dass die Userid gesperrt ist und besondere, administrative Berechtigungen.
* Weitere Eigenschaften, die die Nutzung der MVS-Teilsysteme wie Unix System Services, CICS, TSO oder des Dateisystems beschreiben und festlegen.

### Administrative Berechtigungen für Userids

Im Benutzerprofil können für einen Benutzer auch administrative Berechtigungen eingestellt werden:

#### SPECIAL

    Macht den Benutzer zum RACF-Systemverwalter. Ein solcher Benutzer kann alle RACF-Einstellungen administrieren.

#### AUDITOR

    erlaubt es dem Benutzer (z. B. einem Revisor) die Zugriffsüberwachung (Protokollierung) zu steuern.:

#### ROAUDIT

    (READ ONLY AUDITOR) erlaubt es dem Benutzer die Daten anzuzeigen wie sie ein SPECIAL oder AUDITOR zu sehen bekommt, jedoch ohne die Rechte die Zugriffsüberwachung (Protokollierung) zu steuern. (Ab ZOS 2.2.0)

#### OPERATIONS

    erlaubt dem Benutzer vollen Zugriff auf alle Dateiressourcen. Dies Attribut wird oft an Mitarbeiter der Speicherverwaltung vergeben. Zugriffe, die über dieses Attribut erfolgen, werden optional protokolliert.

### Überwachung (Auditing) von Userids

Kritische oder hoch autorisierte Benutzer können optional auditiert werden. Zu diesem Zweck wird im RACF das Attribut UAUDIT für die entsprechenden Benutzer gesetzt. D. h. alle Aktionen dieser Benutzer werden als sogenannter SMF-Record in den Betriebssystem-Logdateien abgelegt. Eine Auswertung kann dann mit speziellen Anwendungen durchgeführt werden.

## Ressourcen

Ressourcen sind klassisch Dateien, Bänder, Terminals, heute jedoch ganz abstrakt alles, was eine Installation für schützenswert erachtet, z. B. Konsolenbefehle, Namen von Online-Transaktionen oder die Erlaubnis, das Passwort eines anderen Benutzers zurückzusetzen.
Eine Ressource wird durch ein Ressourcen-Profil geschützt. Ein Ressourcen-Profil wird identifiziert durch einen Klassennamen (z. B. DATASET) und einen Namen, der die zu schützende Ressource vollständig (diskretes Profil) oder teilweise (generisches Profil) beschreibt. Z. B. schützt das generische DATASET-Profile SYS1.** alle Dateien, die mit SYS1. beginnen, sofern diese nicht durch ein spezifischeres Profil geschützt werden.
Ein Profil legt den sogenannten Universal Access fest, der für alle Benutzer gilt. In der Zugriffsliste können für einzelne Benutzer oder Benutzergruppen andere Berechtigungen definiert werden.
RACF kennt sechs Stufen von Zugriffsrechten, die von den Ressourcenmanagern des z/OS (siehe unten) in naheliegender Weise interpretiert werden:
* NONE: Kein Zugriff
* EXECUTE: Ausführungsrecht für ein Programm, das Programm kann aber nicht kopiert werden und wird sogar im Speicherauszug unterdrückt.
* READ: Bei Dateien lesender Zugriff, beinhaltet EXECUTE
* UPDATE: Bei Dateien schreibender Zugriff, beinhaltet READ
* CONTROL: Bei Dateien schreibender Zugriff, beinhaltet UPDATE
* ALTER: Bei Dateien uneingeschränkter Zugriff: Anlegen, Löschen, Umbenennen der Datei, beinhaltet CONTROL
Ursprünglich war RACF nur zum Schutz von Dateien vorgesehen. Die Erweiterung auf weitere Ressourcen wurde erst später realisiert. Aus diesem Grunde beziehen sich die Namen der Zugriffsstufen auf Dateizugriffe.

## RACF-Gruppen

Hinter RACF-Gruppen steht ein komplexes Konzept:
* Zum einen können sie verwendet werden, um Userids zusammenzufassen und dann Vollmachten an diese Gruppe, statt an jeden einzelnen Benutzer zu geben. Ein Benutzer kann maximal 8191 Gruppen angehören und genießt die Summe der Vollmachten aller Gruppen, denen er angehört (wenn RACF Option 'LIST OF GROUPS ACCESS CHECKING IS ACTIVE' gesetzt ist).
* Gruppen sind hierarchisch organisiert: Die oberste Gruppe heißt SYS1. Diese Hierarchie ist die Basis dafür, die RACF-Administration nach organisatorischen Gesichtspunkten zu dezentralisieren. Wenn ein Benutzer mit Administrationsrechten zu einer Gruppe verbunden ist, hat er auch Administrationsrechte für alle Untergruppen dieser Gruppe.

## Ressource-Manager

RACF, d. h. eigentlich SAF, arbeitet passiv. Die Nutzer des Systems greifen mittels eines Ressourcenmanagers auf eine Ressource zu. Der jeweilige Ressourcenmanager bildet einen Ressourcenamen und fragt dann SAF, ob der Zugriff gestattet ist. SAF/RACF antwortet mit ja, nein oder „weiß nicht“ (nämlich dann, wenn die Ressource nicht durch ein Profil geschützt ist). Das Subsystem gestattet daraufhin die Nutzung der Ressource (oder auch nicht).
Beispiele für Ressource-Manager sind das Dateisystem des Betriebssystems z/OS mit der Ressource-Datei oder CICS mit der Ressource (unter vielen anderen) Transaktionscode. Es ist auch möglich, das Datenbanksystem DB2 so zu fahren, dass es die Datenbank-Vollmachten nicht mit SQL-Grants im eigenen Katalog, sondern als RACF-Ressourcen im RACF ablegt. Ab Version 8 der DB2 z/OS können durch Multilevel Security (MLS) mit Row Level Granularity sogar Zugriffsberechtigungen zu einzelnen Datensätzen in einer DB2-Tabelle über RACF vergeben werden.