Back to top

Le07c - Modelle und Techniken für eine effiziente und lückenlose...

Last modified Apr 4, 2012

Abstract

Bei der Entwicklung betrieblicher Anwendungen wird der Aspekt der Sicherheit häufig vernachlässigt. Die Implementierung von Sicherheitslösungen wendet zunächst nur potentielle Schadenseintritte ab, eine direkte Gegenüberstellung von Kosten und Nutzen ist nicht möglich. So werden Anforderungen an die Sicherheit einer Anwendung häufig durch Adhoc-Lösungen implementiert.


Im Fall der Zugriffskontrolle bedeutet so eine Adhoc-Lösung, dass der Entwickler der Anwendung Zugriffskontrollüberprüfungen in den Quellcode der Anwendung platziert, wo immer es notwendig erscheint. Diese unsystematische Vorgehensweise erschwert die Änderbarkeit, die Wartung und die Überprüfung der Zugriffskontrolle auf Vollständigkeit und Korrektheit.


In dieser Arbeit wird ein systematisches Vorgehen für die Integration von Zugriffskontrollfunktionalität in eine betriebliche Anwendung entwickelt. Eine Architektur für die Zugriffskontrolle entkoppelt die Definition der Berechtigungspolicy von der Durchsetzung derselben innerhalb der Anwendung. Anpassungen der Zugriffskontrollanforderungen, d. h. Änderungen und Konfiguration definierter Berechtigungen, können flexibel und unabhängig von der eigentlichen Funktionalität der Anwendung vorgenommen werden. Der Aufwand für die Anpassungen kann gering gehalten werden.


Für die Definition der Berechtigungspolicy wird die regelbasierte, deklarative Berechtigungsbeschreibungssprache PathExpressions entwickelt, welche auf die Zugriffskontrollanforderungen  betrieblicher Anwendungen zugeschnitten ist. Sie kann sowohl benutzerbestimmbare als auch rollenbasierte Berechtigungen darstellen. Die Verwendung von deklarativ spezifizierten Regeln für die Spezifikation der Berechtigungen ermöglicht eine zentrale Sicht auf alle Berechtigungen innerhalb der Anwendung.


Berechtigungen beziehen sich auf die in der Anwendung verwalteten Geschäftsobjekte und können auch abhängig von den Beziehungen der Geschäftsobjekte untereinander sein. Bei Änderungen des Datenmodells, welches die Geschäftsobjekttypen und ihre Beziehungen abbildet, müssen auch die Berechtigungen aktualisiert werden. Bisher wurden deklarativ spezifizierte Berechtigungspolicies entkoppelt von der Anwendung erstellt und in einem von der Anwendung unabhängigen Dokument oder einer unabhängigen Komponente abgelegt. Die Subjekte, Objekte und Aktionen, die in den Zugriffsregeln spezifiziert werden, müssen auf Subjekte, Objekte und Aktionen innerhalb der Anwendung abgebildet werden und umgekehrt. Hierfür muss auf Objektidentifier oder ähnliche Referenztechniken zugegriffen erden. Die Objektidentifier bestehen aus Zeichenketten und unterliegen keiner Typüberprüfung. Weiterhin ist nicht gewährleistet, dass die verwendeten Objektidentifier tatsächlich in der Anwendung existieren. Die PathExpressions lösen dieses Problem. Die spezifizierten Berechtigungen werden direkt mit dem Datenmodell der Anwendung verknüpft. So ist es einfach, die Zugriffsregeln auch bei Änderung des Datenmodells konsistent mit den in der Anwendung verwalteten Geschäftsobjekttypen zu halten.


Die Durchsetzung der Zugriffsregeln erfolgt direkt im Quellcode der Anwendung. Die Zugriffskontrolldurchsetzung gehört zu den so genannten Querschnittsaspekten, d. h. der Quellcode für die Zugriffsdurchsetzung ist über die gesamte Anwendung verstreut. Ein systematischer Ansatz für die Einbettung von Zugriffskontrollabfragen fehlt bislang noch. In dieser Arbeit wird ein Framework entwickelt, welches dedizierte Eingriffspunkte für die Berechtigungsüberprüfung für jeden Dienst der betrieblichen Anwendung vorsieht. Weiterhin können auch die Antworten, welche ein Dienst einem anfragenden Client zurückliefert, konfiguriert und gefiltert werden, so dass der Client nur die Teile der Antwortnachricht erhält, für die er leseberechtigt ist.


Wenn der Entwickler Quellcode für die Zugriffsdurchsetzung per Hand in die Anwendung integriert, so ist die Korrektheit und Vollständigkeit der Berechtigungsüberprüfungen nicht gewährleistet. In dieser Arbeit wird der Ansatz verfolgt, die Zugriffskontrollinformationen automatisch aus dem Quellcode zu inferieren. Hierfür werden Techniken der statischen Quellcodeanalyse und der abstrakten Interpretation verwendet. Für jeden Dienst der betrieblichen Anwendung wird die Datenstruktur AccessTypes erstellt, welche alle notwendigen Informationen enthält, um Quellcode für die Zugriffsdurchsetzung automatisch in die vom Framework bereitgestellten Eingriffspunkte zu generieren. Die AccessTypes stellen quasi eine Zusammenfassung der im Quellcode vorkommenden, zugriffsgeschützten Anweisungen dar. Die geschützten Anweisungen sind jeweils mit Zugriffsberechtigungen verknüpft. Die automatische Generierung von Quellcode für die Zugriffsdurchsetzung sorgt dahingehend für eine effiziente Zugriffsüberprüfung, als dass doppelte Überprüfungen vermieden werden. Jede Zugriffskontrollüberprüfung ist in der Regel mit einer kostspieligen Datenbankabfrage verbunden, insbesondere, wenn aufgrund der Komplexität der Anfragen eine Caching-Strategie bereits durchgeführter Anfragen schwierig zu realisieren ist. Wiederholte, unnötige Berechtigungsüberprüfungen führen zu Performanzeinbußen. Ebenso wird durch die statische Codeanalyse eine lückenlose Zugriffskontrolle gewährleistet, d. h. es gibt keinen Ausführungspfad innerhalb der betrieblichen Anwendung, welcher nicht durch die Zugriffskontrolle abgedeckt wird. Ansonsten könnte es Ausführungshistorien geben, die zum Verlust der Vertraulichkeit und / oder der Integrität der in der Anwendung verwalteten Daten führen.


Es wurde eine prototypische Umsetzung der Zugriffsentscheidungskomponente, des Werkzeugs zur Integration der Zugriffsdurchsetzung sowie der für die Zugriffskontrolle erweiterten Architektur in einem Java-Framework für betriebliche Anwendungen implementiert.

Files and Subpages

There are no subpages or files.