OpenStack RBAC

OpenStack verwendet role based access control (RBAC) als Authorisierungsmodell. Das bedeutet, dass Berechtigungen nicht direkt für einzelne User oder Gruppen von User gewährt werden. Berechtigungen werden stattdessen über einen Satz von Regeln (Rules) zu Rollen zugeordnet, welche dann wiederum Nutzern oder Gruppen von Nutzern zugeordnet werden.

Hat ein Nutzer beispielsweise in seinem Projekt die Member-Rolle, sind damit im Hintergrund diverse Berechtigungen verknüpft, wie für das Hochladen von Images oder Starten von Virtuellen Maschinen. Obwohl Rollen gewöhnlich bezüglich eines Projekts oder einer Domain vergeben werden, sind einige der Berechtigungen – insbesondere für Admins – global gültig.

policy.json

Der Regelsatz, mit dem einer Rolle Berechtigungen zugewiesen werden, wird Policy genannt. Standardmäßig sind diese Policies für jede Komponente in einer JSON-Datei hinterlegt, die policy.json heißt. Der Trend geht jedoch in OpenStack dahin, die Standarpolicy im Quelltext statt einer policy.json auszuliefern.

Es gibt zwei Arten von Regeln in einer policy.json-Datei: Regeln, die direkt einem API-Call entsprechen, und Regeln, die aus Übersichtsgründen definiert werden, um sie innerhalb der policy.json wiederzuverwenden.

Beispiele

Die folgenden Zeilen sind aus einer policy.json von Keystone.

In der ersten Zeile wird eine Regeln admin_required definiert, die erfüllt ist, wenn der Nutzer die Rolle admin hat.

Die nächste Zeile erlaubt jedem, der die Regel admin_required erfüllt, list_services-API-Calls auszuführen. Mit dem OpenStackClient würde das dem Kommando openstack service list entsprechen.

Es lassen sich ebenfalls Regeln definieren, die immer erfüllt sind. Die meisten Komponenten haben weitere Prüfungen im Quelltext eingebaut, die Zugriffe nur Admins und Usern erlauben, die im richtigen Projekt eingeloggt sind.

Außer der Rolle, die ein User innehat, können viele andere Werte abgefragt und zur Definition von Regeln verwendet werden. Zum Beispiel kann überprüft werden, ob die Domain der angefragten Ressource der Domain des Users entspricht.

 

Weitere Informationen

Weitere Informationen zu OpenStack Policies finden sich in der offiziellen Dokumentation:
https://docs.openstack.org/security-guide/identity/policies.html

David Rabel arbeitet bei B1 Systems als Trainer und Consultant für Themen rund um Linux und OpenStack. Er ist Mitglied des Debian OpenStack Packaging Teams und steuert selbst gelegentlich Patches zum OpenStack Code oder der Dokumentation bei.