XACML (eXtensible Access Control Markup Language) gilt als der Standard, mit dem sich Autorisierungsregeln und -entscheidungen über zentrale Systeme, statt im Code einzelner Anwendungen steuern lassen. Nur: Wie gut ist XACML wirklich?
Zwei der wichtigsten Herausforderungen bei XACML sind die Komplexität der Regelwerke mit der daraus resultierenden großen Anzahl von Regeln und der Fakt, dass es sich um einen XML-Standard handelt. Die Beschreibung von Business-Regeln in XACML kann schnell zu umfangreichen Regelwerken führen, weil XACML auf granulare Autorisierungsregeln und -entscheidungen ausgerichtet ist. Das bedeutet, dass man sich von Beginn an Gedanken darüber machen muss, wie man diese Komplexität beherrscht. Hier gibt es verschiedene Ansätze – von Entitlement-Management-Systemen, die eine Formulierung der Regeln auf höherer Ebene ermöglichen und nicht nur XACML unterstützen, über spezielle Analyse- und Verwaltungswerkzeuge für das XACML-Regelwerk, bis hin zur automatischen Generierung von XACML-Regeln aus den abstrakteren Business-Regeln. Welcher Ansatz sich etablieren wird, bleibt abzuwarten. Klar ist aber: Wenn man sich mit XACML beschäftigt, muss man sich von Beginn an Gedanken darüber machen, wie man das Regelwerk erzeugt und pflegt.Auch die zweite genannte Herausforderung steht damit in Zusammenhang. XML ist zwar vergleichsweise einfach lesbar. Aber die Beschreibung und Pflege eines komplexen Regelwerks direkt über XML-Dokumente ist natürlich viel zu komplex. Mehr noch: Anwendungsentwickler werden kaum begeistert sein, wenn sie ihre Autorisierungsabfragen direkt in XACML formulieren müssen. Hier geht es darum, möglichst mit einer Code-Zeile auszukommen, über die eine Methode aufgerufen wird.
Anders formuliert: XACML ist zwar nützlich, aber direkt damit zu arbeiten ist doch einigermaßen umständlich. XACML muss daher genauso verborgen werden, wie es bei den meisten anderen Standards der Fall ist. Wer eine Verbindung im Netzwerk zu einem anderen Rechner herstellt, muss dazu heute praktisch nichts mehr von TCP, IP, ARP und all den anderen Standards wissen, die benötigt werden. Wer Autorisierungsregeln pflegen will oder Autorisierungsentscheidungen anfordern möchte, sollte genauso wenig von XACML wissen müssen. Denn Standards sind nur dann gut, wenn man nichts oder zumindest möglichst wenig von ihnen merkt.
Wer den – wichtigen und richtigen – Schritt hin zur Externalisierung von Sicherheit aus Anwendungen macht, sollte daher seinen Blick zunächst darauf richten, wie die Regeln beschrieben, verwaltet und in Anwendungen genutzt werden. XACML als Standard, der im Hintergrund transparent genutzt wird, wird dabei zwangsläufig eine Rolle spielen. XACML als Standard, mit dem man sich intensiv auseinandersetzen muss, macht dagegen wenig Sinn, weil die so entstehende Komplexität nicht beherrschbar ist.