09.11.2013 Aufrufe

Entwicklung und Implementierung einer ... - GeoBranchen

Entwicklung und Implementierung einer ... - GeoBranchen

Entwicklung und Implementierung einer ... - GeoBranchen

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

FAKULTÄT FÜR INFORMATIK<br />

DER TECHNISCHEN UNIVERSITÄT MÜNCHEN<br />

<strong>Entwicklung</strong> <strong>und</strong> <strong>Implementierung</strong> <strong>einer</strong><br />

raumbezogenen Zugriffskontrolle für<br />

Geo Web Services<br />

Diplomarbeit im Fach Informatik<br />

vorgelegt von<br />

Jan Herrmann<br />

Abgabedatum 15.03.2005


2<br />

<strong>Entwicklung</strong> <strong>und</strong> <strong>Implementierung</strong> <strong>einer</strong><br />

raumbezogenen Zugriffskontrolle für<br />

Geo Web Services<br />

Diplomarbeit im Fach Informatik<br />

vorgelegt von<br />

Jan Herrmann<br />

Aufgabensteller:<br />

Prof. Dr. Johann Schlichter<br />

Betreuer:<br />

Dipl. Ing. Andreas Matheus<br />

Beginn der Arbeit: 15.09.2004<br />

Abgabe der Arbeit: 15.03.2005


3<br />

Kurzreferat<br />

Bei der Nutzung eines Geo Web Services können beliebige Aktionen auf den vom Dienst angebotenen<br />

geographischen Daten ausgeführt werden. Ein gewünschtes Ziel dieser Interaktion<br />

ist, dass ausschließlich autorisierte Zugriffe auf den Geo Web Service genehmigt werden.<br />

Hierfür muss ein Zugriffskontrollsystem eingesetzt werden, in dem Vorschriften zu definieren<br />

sind, unter welchen Umständen ein Subjekt eine gewünschte Aktion auf dem Geo Web Service<br />

ausführen darf. Das Zugriffskontrollsystem nutzt diese Vorschriften, um die Kommunikation<br />

zwischen Nutzer <strong>und</strong> Dienst inhaltlich zu überprüfen. Da es sich bei den ausgetauschten<br />

Informationen zwischen einem Nutzer <strong>und</strong> einem Geo Web Service vorwiegend um Daten zu<br />

geographischen Objekten handelt <strong>und</strong> diese als besonderes Merkmal einen Raumbezug <strong>und</strong><br />

eine Ausdehnung haben, ist in diesem Zusammenhang eine spezielle Art der inhaltsabhängigen<br />

Zugriffskontrolle möglich. Es kann unter anderem in Abhängigkeit der Ausdehnung <strong>und</strong><br />

Lage eines geographischen Objektes festgelegt werden, ob der Zugriff auf die zugehörigen<br />

Daten genehmigt oder abgelehnt werden soll. Durch diese raumbezogene Zugriffskontrolle ist<br />

es auf einfache Weise möglich, komplexe Autorisationen im Zugriffskontrollsystem zu definieren.<br />

Bisher fehlen Konzepte, wie raumbezogener Zugriffsschutz in einem Zugriffskontrollsystem<br />

für Geo Web Services erreicht werden kann. An dieser Stelle setzt die vorliegende Diplomarbeit<br />

an. Sie beschreibt den Entwurf <strong>und</strong> die prototypische <strong>Implementierung</strong> eines Zugriffskontrollsystems,<br />

mit dem eine mächtige, feingranulare, inhaltsabhängige <strong>und</strong> raumbezogene<br />

Zugriffskontrolle möglich ist.<br />

Zunächst werden gängige Konzepte <strong>und</strong> Mechanismen zur Realisierung von Zugriffskontrolle<br />

diskutiert. Im Anschluss wird das auf XACML basierende Modell, mit dem lesender <strong>und</strong> modifizierender<br />

Zugriff auf XML/GML-kodierte geographische Datenobjekte in Abhängigkeit<br />

ihrer Inhalte kontrolliert werden kann vorgestellt. Zuletzt wird die prototypische <strong>Implementierung</strong><br />

des herausgearbeiteten Modells beschrieben. Das umgesetzte Zugriffskontrollsystem<br />

wurde am Beispiel des Web Feature Services mit Testdaten <strong>und</strong> -regeln experimentell validiert<br />

<strong>und</strong> ist einsatzbereit.


4<br />

FAKULTÄT FÜR INFORMATIK<br />

DER TECHNISCHEN UNIVERSITÄT MÜNCHEN<br />

Aufgabenstellung<br />

<strong>Entwicklung</strong> <strong>und</strong> <strong>Implementierung</strong> <strong>einer</strong><br />

raumbezogenen Zugriffskontrolle<br />

für Geo Web Services<br />

Ausgangssituation<br />

Bei einem Geo Web Service handelt es sich um einen Dienst im Internet, der den Zugriff auf<br />

geographische Daten (Geodaten) ermöglicht. Dieser Zugriff kann u.a. folgender Art sein: Einfügen,<br />

Schreiben, Lesen <strong>und</strong> Löschen. Geht man von <strong>einer</strong> objektartigen Strukturierung der<br />

Geodaten aus, so kann der Zugriff auf jedes geographische Objekt durch individuelle<br />

Zugriffsrechte gesteuert werden. Ein geographisches Objekt kann einen Raumbezug <strong>und</strong> eine<br />

Ausdehnung haben, die in einem bestimmten Raumbezugsystem (Spatial Reference System –<br />

SRS) beschrieben sind. Somit kann der Zugriff auf geographische Objekte durch Zugriffsrechte<br />

eingeschränkt werden, die sich auf den Raumbezug der Objekte stützen. Hierzu werden<br />

beispielsweise zweidimensionale Gebiete definiert, für die eine bestimmte Zugriffsbeschränkung<br />

gilt. Eine Zugriffsbeschränkung definiert hier, welches Subjekt (z.B. ein Nutzer) mit<br />

welcher Operation (hier Einfügen, Schreiben, Lesen <strong>und</strong> Löschen) auf bestimmte Objekte in<br />

diesem Gebiet zugreifen darf. Betrachtet man eine Leseoperation auf dem Geo Web Service,<br />

so wird ein Ergebnis berechnet, das an den Benutzer zurückgegeben werden soll. Die Antwort<br />

auf die Web Service Anfrage besteht aus <strong>einer</strong> Menge geographischer Objekte, die vom<br />

Zugriffskontrollsystem auf erforderliche Berechtigungen überprüft werden muss, bevor sie an<br />

den Nutzer gesendet werden kann.<br />

Die auf der eXtensible Markup Language (XML) basierende Access Control Markup Language<br />

(XACML) ist ein Standard von OASIS. Sie ermöglicht die Deklaration von Zugriffsrechten,<br />

die den Zugriff auf Ressourcen durch Subjekte festlegen. Sofern von einem XMLkodierten<br />

<strong>und</strong> daher strukturierten Web Service Anfrage- <strong>und</strong> Antwortformat ausgegangen<br />

werden kann, erlaubt XACML die Deklaration von inhaltsabhängigen Zugriffsbeschränkun-


5<br />

gen auf Element- <strong>und</strong> Attributebene. Geographische Objekte, die durch Sachdaten <strong>und</strong> georeferenzierte<br />

geometrische Objekte definiert sind, können in der Geographic Markup Language<br />

(GML) – <strong>einer</strong> standardisierten XML Anwendung des Open GIS Consortiums – beschrieben<br />

werden.<br />

Aufgabe der Diplomarbeit<br />

Geographische Informationsobjekte, auch räumliche Features genannt, sollen durch ein GML<br />

Anwendungsschema definiert sein. Basierend auf dieser XSD können Zugriffsrechte an<br />

1. Featuretypen,<br />

2. Featureinstanzen <strong>und</strong><br />

3. den Raumbezug der Features geb<strong>und</strong>en sein.<br />

Die Aufgabe der Diplomarbeit ist es, zum einen ein einfaches Modell <strong>einer</strong> Zugriffskontrolle<br />

zu entwerfen, das die Optionen 1. bis 3. unterstützt. Insbesondere sollen die raumbezogenen<br />

Zugriffsrechte an zweidimensionale Flächen geb<strong>und</strong>en werden. Des weiteren sollen die<br />

Zugriffsbeschränkungen für die prototypische Realisierung in XACML formuliert werden.<br />

Die <strong>Implementierung</strong> soll anhand der in XACML vorgestellten Struktur mit „Policy Enforcement<br />

Point“ (PEP) <strong>und</strong> „Policy Decision Point“ (PDP) erfolgen. Ein „Policy Administration<br />

Point“ (PAP) soll nicht implementiert werden. Weil XACML keine Sprachelemente <strong>und</strong><br />

Funktionen bereitstellt, die Zugriffsrechte basierend auf Raumbezug <strong>und</strong> Geometrie ermöglichen,<br />

muss eine entsprechende Erweiterung beschrieben werden.<br />

Zur Überprüfung der <strong>Implementierung</strong> soll ein Web Feature Service (WFS), der räumliche<br />

Abfragen unterstützt, durch einen PEP mit <strong>einer</strong> Zugriffskontrolle versehen werden. Für diesen<br />

Geo Web Service sollen verschiedene Testszenarien erstellt werden, welche die <strong>Implementierung</strong><br />

überprüfen.<br />

Die Realisierung soll in Java erfolgen <strong>und</strong> die Erweiterungen der Sprache XACML sollen auf<br />

Gr<strong>und</strong>lage von SUNXACML (XACML <strong>Implementierung</strong> der Firma SUN) umgesetzt werden.<br />

Zur Berechnung raumbezogener Relationen <strong>und</strong> Operationen soll die Java Topology Suite<br />

verwendet werden.


6<br />

Erklärung<br />

Ich versichere, dass ich diese Diplomarbeit ohne fremde Hilfe selbstständig verfasst <strong>und</strong> nur<br />

die angegebenen Quellen <strong>und</strong> Hilfsmittel verwendet habe.<br />

10.03.2005<br />

....................................................................................<br />

Datum Unterschrift


7<br />

Inhalt<br />

Seite<br />

Verzeichnis der Abbildungen...................................................................................................................9<br />

Verzeichnis der Tabellen..........................................................................................................................9<br />

Liste der Abkürzungen...........................................................................................................................10<br />

Verzeichnis der Begriffe <strong>und</strong> Definitionen ............................................................................................12<br />

1 Einleitung ............................................................................................................................................16<br />

1.1 Motivation ....................................................................................................................................16<br />

1.2 Zielsetzung ...................................................................................................................................18<br />

1.3 Konventionen zum Schriftsatz......................................................................................................18<br />

1.4 Aufbau der Arbeit.........................................................................................................................18<br />

2 Gr<strong>und</strong>lagen..........................................................................................................................................20<br />

2.1 XML Technologien ......................................................................................................................20<br />

2.1.1 XML <strong>und</strong> XML Schema ........................................................................................................20<br />

2.1.2 Adressierung per XPath <strong>und</strong> Transformation mit XSL..........................................................21<br />

2.2 Geodaten <strong>und</strong> GML......................................................................................................................22<br />

2.3 Web Service..................................................................................................................................27<br />

2.4 Geo Web Service..........................................................................................................................28<br />

2.5 Web Feature Service.....................................................................................................................29<br />

3 Zugriffskontrolle .................................................................................................................................33<br />

3.1 Gr<strong>und</strong>legende Begriffe <strong>und</strong> Konzepte..........................................................................................33<br />

3.1.1 Subjekt, Aktion <strong>und</strong> Objekt ...................................................................................................33<br />

3.1.2 Konzepte <strong>und</strong> Strategien für Zugriffskontrolle bei Web Services .........................................35<br />

3.2 Klassifizierung von Zugriffskontrollmechanismen ......................................................................41<br />

3.2.1 Built-in Ansatz – Integration der Zugriffskontrolle in das DBMS ........................................42<br />

3.2.2 Instance-Tagging Ansatz........................................................................................................43<br />

3.2.3 View-basierte Umsetzung der Zugriffskontrolle ...................................................................44<br />

3.2.4 Statischer Analyseansatz........................................................................................................45<br />

3.2.5 Pre-Processing Ansatz............................................................................................................46<br />

3.2.6 Post-Processing Ansatz..........................................................................................................49<br />

3.3 Eignung der Zugriffskontrollmechanismen für Geo Web Services..............................................52<br />

3.3.1 Eignung des Pre-Processing Ansatzes – evalQuery(merge(Q, R), D) ...................................52<br />

3.3.2 Eignung des Post-Processing Ansatzes – evalRule(R, evalQuery(Q, D)) .............................55<br />

3.3.3 Der Hybridansatz ...................................................................................................................56<br />

3.3.4 Fazit .......................................................................................................................................59<br />

4 Zugriffskontrolle mit XACML............................................................................................................60<br />

4.1 XACML – eXtensible Access Control Markup Language...........................................................60<br />

4.1.1 Was ist XACML? ..................................................................................................................60<br />

4.1.2 Das Sprachmodell des Regelwerkes ......................................................................................63<br />

4.1.3 Der XACML Request <strong>und</strong> Response Context .......................................................................66<br />

4.2 Zugriffskontrolle für XML Dokumente mit XACML..................................................................68<br />

4.2.1 Die vom PEP generierte globale Zugriffsentscheidungsanfrage............................................69<br />

4.2.2 Varianten zur Weiterleitung der globalen Zugriffsentscheidungsanfrage zu <strong>einer</strong><br />

hierarchischen Ressource durch den Context Handler an den PDP.......................................70<br />

4.2.3 Auswertung der individuellen Zugriffsentscheidungsantworten im PEP ..............................74<br />

4.2.4 Modellierung rekursiven Regelverhaltens .............................................................................75<br />

4.2.5 Erweiterung der Mechanismen zur Referenzierung von Attributen aus XACML<br />

Regeln....................................................................................................................................76


8<br />

4.3 Modellierung unterschiedlicher Regeltypen für Geo Web Services ............................................76<br />

4.3.1 Festlegen von Zugriffsregeln auf den Featuretyp ..................................................................77<br />

4.3.2 Deklarieren von Zugriffsregeln für bestimmte Features........................................................82<br />

4.3.3 Fazit .......................................................................................................................................83<br />

5 Raumbezogene Zugriffskontrolle mit XACML ..................................................................................85<br />

5.1 Raumbezogene Zugriffsregeln......................................................................................................86<br />

5.2 Auswerten der topologischen Relationen .....................................................................................93<br />

5.3 Erweiterungen von XACML zur Unterstützung raumbezogener Zugriffskontrolle.....................95<br />

5.3.1 Erweiterung der XACML Attributtypen................................................................................95<br />

5.3.2 Erweiterung der XACML Funktionen ...................................................................................96<br />

5.3.3 Aufbau <strong>einer</strong> Raumregel ........................................................................................................97<br />

5.3.4 Der RaumInstanz Regeltyp ....................................................................................................99<br />

5.4 Pre-Processing mit XACML.......................................................................................................101<br />

5.4.1 Die Einfügeoperation ...........................................................................................................101<br />

5.4.2 Die Update-Operation..........................................................................................................103<br />

5.4.3 Die Löschoperation..............................................................................................................104<br />

5.4.4 Die Leseoperation ................................................................................................................106<br />

6 Prototypische <strong>Implementierung</strong> eines Zugriffskontrollsystems für Geo Web Services....................109<br />

6.1 SUNXACML..............................................................................................................................109<br />

6.2 Erweiterungen von SUNXACML ..............................................................................................111<br />

6.2.1 Der Spatial Attributtyp.........................................................................................................111<br />

6.2.2 Topologische <strong>und</strong> räumliche Funktionen.............................................................................112<br />

6.2.3 Funktionen zum Auflösen der Referenzen in den Regeln auf Daten im XACML Request<br />

Context.................................................................................................................................114<br />

6.2.4 Das Resource Finder Modul zur Unterstützung hierarchischer Resourcen .........................115<br />

6.3 Der PDP......................................................................................................................................117<br />

6.3.1 <strong>Implementierung</strong> des PDP ...................................................................................................117<br />

6.3.2 Instanzieren der georeferenzierten geometrischen Objekte .................................................118<br />

6.3.3 Auswertung der raumbezogenen Funktionen ......................................................................119<br />

6.3.4 Koordinatensystemüberprüfung <strong>und</strong> Transformation der Koordinaten...............................120<br />

6.4 Der PEP ......................................................................................................................................121<br />

6.4.1 Generierung der globalen Zugriffsentscheidungsanfrage ....................................................121<br />

6.4.2 Modifikation der Web Service Antwort beim Post-Processing ...........................................123<br />

6.4.3 Erweiterung der Web Service Anfrage beim Pre-Processing ..............................................125<br />

6.5 Validierung der <strong>Implementierung</strong>...............................................................................................126<br />

7 Zusammenfassung, Evaluierung <strong>und</strong> Ausblick.................................................................................127<br />

7.1 Zusammenfassung der Arbeit.....................................................................................................127<br />

7.2 Evaluierung <strong>und</strong> Ausblick ..........................................................................................................128<br />

Literaturverzeichnis..............................................................................................................................130<br />

Anhang A Anwendungsszenario – Die Schweizer Bank .....................................................................136<br />

Anhang A.1 Das den Geodaten zugr<strong>und</strong>eliegende Datenmodell .....................................................136<br />

Anhang A.2 Beispielanfrage an <strong>und</strong> Antwort vom WFS .................................................................139<br />

Anhang A.3 Das Regelwerk der Schweizer Bank ............................................................................141<br />

Anhang B Verwendbarkeit topologischer Relationen .........................................................................145<br />

Anhang C Organisiation der XACML PolicySets, Polices <strong>und</strong> Regeln...............................................147<br />

C.1 Vorgeschaltete Überprüfung inhaltsunabhängiger Zugriffsregeln.............................................147<br />

C.2 Grobstruktur des Regelwerkes bei Web Services ......................................................................148<br />

C.3 Feinstruktur des Regelwerkes ....................................................................................................152<br />

C.4 Organisation der SSOs...............................................................................................................152<br />

C. 5 Regelwerk für die Verwaltung der Zugriffsgesetze der Anwendung .......................................153<br />

C.6 Designprinzipien bei der Deklaration von Zugriffsegeln für XML Dokumente .......................154


9<br />

Verzeichnis der Abbildungen<br />

Abbildung 2.1 Datenfluss bei der Nutzung eines Web Services........................................................... 27<br />

Abbildung 2.2 Nachrichtenfluss bei lesendem Zugriff auf einen WFS................................................ 31<br />

Abbildung 3.1 Schema des Built-in Ansatzes....................................................................................... 42<br />

Abbildung 3.2 Schema des View-basierten Ansatzes........................................................................... 44<br />

Abbildung 3.3 Schema des statischen Analyseansatzes........................................................................ 45<br />

Abbildung 3.4 Schema des primitiven Pre-Processing Ansatzes.......................................................... 47<br />

Abbildung 3.5 Schema des QFilter Ansatzes........................................................................................ 48<br />

Abbildung 3.6 Schema des YFilter Ansatzes........................................................................................ 49<br />

Abbildung 3.7 Schema des evalQuery(Q, D) ∩ evalRule(R, D) Ansatzes........................................... 51<br />

Abbildung 4.1 Datenfluss in einem XACML-basierten Zugriffskontrollsystem.................................. 61<br />

Abbildung 4.2 Klassendiagramm der Sprache XACML...................................................................... 64<br />

Abbildung 5.1 Zwei Geometrien, welche die equals Relation erfüllen................................................ 88<br />

Abbildung 5.2 Zwei Geometrien, welche die disjoint Relation erfüllen............................................... 88<br />

Abbildung 5.3 Zwei Geometrien, welche die intersects Relation erfüllen............................................ 89<br />

Abbildung 5.4 Zwei Geometrien, welche die touches Relation erfüllen...............................................89<br />

Abbildung 5.5 Zwei Geometrien, welche die crosses Relation erfüllen............................................... 90<br />

Abbildung 5.6 Zwei Geometrien, welche die overlaps Relation erfüllen............................................. 90<br />

Abbildung 5.7 Zwei Geometrien, welche die within Relation erfüllen.................................................91<br />

Abbildung 5.8 Zwei Geometrien, welche die contains Relation erfüllen............................................. 91<br />

Abbildung 5.9 „intersection“ Matrix für zwei sich überlappende Polygone......................................... 94<br />

Abbildung A.1 Gebäude-, Straßen- <strong>und</strong> Bankautomat-Objekte der Schweizer Bank in Zürich......... 138<br />

Verzeichnis der Tabellen<br />

Tabelle 3.1 Vor- <strong>und</strong> Nachteile des Pre-Processing Ansatzes............................................................... 55<br />

Tabelle 3.2 Vor- <strong>und</strong> Nachteile des Post-Processing Ansatzes............................................................. 56<br />

Tabelle 3.3 Vor- <strong>und</strong> Nachteile des Hybridansatzes.............................................................................. 58


10<br />

Liste der Abkürzungen<br />

ACID<br />

ACL<br />

ACT<br />

API<br />

DAC<br />

DBMS<br />

DE-9IM<br />

DES<br />

DTD<br />

FGAC<br />

GIS<br />

GML<br />

GML-QL<br />

HTML<br />

IPSEC<br />

JTS<br />

KNF<br />

MAC<br />

MD5<br />

NFA<br />

OASIS<br />

OGC<br />

PAP<br />

PDP<br />

PEP<br />

PGP<br />

PIP<br />

RDBMS<br />

RSA<br />

SET<br />

SOAP<br />

SQL<br />

SRS<br />

SSL<br />

SSO<br />

UDDI<br />

URL<br />

W3C<br />

WFS<br />

Atomicity Consistency Isolation Durability<br />

Access Control List<br />

Access Control Table<br />

Application Programmers Interface<br />

Discretionary Access Control<br />

DataBase Management System<br />

Dimensionally Extended Nine-Intersection Matrix<br />

Data Encryption Standard<br />

Document Type Definition<br />

Fine-Grained Access Control<br />

Geographic Information System<br />

Geographic Markup Language<br />

GML Query Language<br />

HyperText Markup Language<br />

IP Security Protocol<br />

Java Topology Suite<br />

Konjunktive NormalForm<br />

Mandatory Access Control<br />

Message Digest 5 (Algorithmus von Ron Rivest)<br />

Nondeterministic Finite Automaton<br />

Organization for the Advancement of Structured Information Standards<br />

Open GIS Consortium<br />

Policy Administration Point<br />

Policy Decision Point<br />

Policy Enforcement Point<br />

Pretty Good Privacy<br />

Policy Information Point<br />

Relational DBMS<br />

asym. Datenverschlüsslungsalgorithmus nach Rivest, Shamir, Adelmman<br />

Secure Electronic Transactions<br />

Simple Object Access Protocol<br />

Structured Query Language<br />

Spatial Reference System<br />

Secure Socket layer<br />

System Security Officer<br />

Universal Description, Discovery and Integration<br />

Universal Resource Locator<br />

World Wide Web Consortium<br />

Web Feature Service


11<br />

WSDL<br />

XACML<br />

XML<br />

XPath<br />

XSD<br />

XSL(T)<br />

Web Service Description Language<br />

eXtensible Access Control Markup Language<br />

eXtensible Markup Language<br />

XML Path Language<br />

XML Schema Definition<br />

eXtensible Stylesheet Language (Transformations)


Verzeichnis der Begriffe <strong>und</strong> Definitionen<br />

12<br />

Autorisation<br />

Jemandem das Recht geben, etwas zu tun oder zu haben (Opincaru 2004).<br />

Datenbasis<br />

Der Begriff Datenbasis stellt eine Abstraktion dar, die stellvertretend für alle zu schützenden<br />

Daten steht. Mit Datenbasis kann eine Menge an statisch vorliegenden XML Dokumenten<br />

<strong>und</strong>/oder alle Werte <strong>einer</strong> Datenbank gemeint sein, die verwendet werden, um dynamisch<br />

XML Dokumente zu erzeugen.<br />

Feature<br />

Eine Gruppe von räumlichen Elementen, die zusammen eine Einheit der realen Welt repräsentieren.<br />

Oft synonym mit dem Ausdruck Objekt verwendet. Kann auch zu komplexen Features<br />

(Objekten) zusammengesetzt werden, die aus mehr als <strong>einer</strong> Gruppe von räumlichen E-<br />

lementen bestehen (nach GI-Lexikon; siehe auch 2.2).<br />

Feingranulare Zugriffskontrolle (fine-grained Access Controll – FGAC)<br />

(siehe 3.1.2)<br />

Geodaten<br />

„Geodaten sind Daten über Gegenstände, Geländeformen <strong>und</strong> Infrastruktur an der Erdoberfläche,<br />

wobei als wesentliches Merkmal ein Raumbezug vorliegen muss…“ (Schilcher GeoInf1;<br />

siehe auch 2.2).<br />

Geographische Information<br />

(siehe Geodaten)<br />

Geographisches Informationssystem (GIS)<br />

Ein GIS ist „… eine organisierte Zusammenstellung von Computer-Handware, Software,<br />

geographischen Daten <strong>und</strong> Personal, entworfen um jede Art geographisch referenzierter<br />

Informationen effizient aufzunehmen, zu speichern, instand zu halten, zu aktualisieren, zu<br />

manipulieren, zu analysieren <strong>und</strong> anzuzeigen.“ (GI-Lexikon).<br />

Geography Markup Language (GML)<br />

Standardisierte Sprache des Open GIS Consortiums für die Kodierung objektstrukturierter<br />

Geodaten auf Basis von XML (siehe auch 2.2).<br />

Georeferenzierung<br />

Die Festsetzung der Beziehung zwischen den ebenen Koordinaten <strong>einer</strong> Karte <strong>und</strong> den bekannten<br />

Koordinaten eines geodätischen Bezugssystems (GIS-Glossar, S. 57).


13<br />

Geo Web Service<br />

Ein Geo Web Service ist ein internetbasierter Dienst, der über seine Dienstschnittstelle Funktionalitäten<br />

für die Nutzung von Geodaten () bereitstellt. Die Nutzung von Geodaten umfasst<br />

den Zugriff auf sowie die Erfassung, Manipulation, Transformation <strong>und</strong> Präsentation<br />

von Geodaten. (nach GI-Lexikon; siehe auch 2.4). Synonyme für den Begriff Geo Web Service<br />

sind Geodienst, Web GIS oder Internet GIS.<br />

Identitätsbasierte Zugriffskontrolle<br />

(siehe 3.1.2)<br />

Inhaltsabhängige Zugriffskontrolle (engl. content dependant access control)<br />

(siehe 3.1.2)<br />

Interoperabilität<br />

Bedeutung nach GI-Lexikon:<br />

“1. Kunstwort, das die Fähigkeit von Rechnern verschiedener Hersteller beschreibt, mit Hilfe<br />

unterschiedlicher Protokolle zusammenarbeiten zu können.<br />

2. Interoperabilität bezeichnet auch die Möglichkeit, verschiedenartige Daten in einen einzelnen<br />

Arbeitsablauf zu integrieren. Dies setzt voraus, dass Syntax <strong>und</strong> Semantik der Daten dem<br />

Anwender in einheitlicher Form zur Verfügung gestellt wird. Interoperabilität erlaubt den<br />

transparenten Zugang zu mehreren raumbezogenen Daten- <strong>und</strong> Verarbeitungsressourcen innerhalb<br />

eines einzigen Arbeitsablaufes, ohne sie in einen Datenbestand zu überführen.“<br />

Kontextabhängige Zugriffskontrolle<br />

(siehe 3.1.2)<br />

Namensraum (engl. Namespace)<br />

Ein Mittel, um Elemente <strong>und</strong> Attribute unterschiedlicher XML Vokabulare zu unterscheiden,<br />

die den selben Namen haben (O’Reilly 2002).<br />

Prädikat<br />

Eine Aussage zu Attributen, die auf Wahrheit geprüft werden kann (XACML Spec 1.1).<br />

Raumbezogene Zugriffskontrolle (engl. spatial access control)<br />

(siehe 3.1.2)<br />

Raumbezugssystem<br />

oder: räumliches/geodätisches Bezugssystem (engl. Spatial Reference System – SRS)<br />

Summe von Definitionen (Koordinatensystem, Passpunkte, Blattschnitte), welche die Semantik<br />

des Lagebezuges räumlicher Objekte in einem GIS ordnen (GIS-Glossar, S. 92; oder vgl.<br />

Definition nach ISO19111).


14<br />

Räumliche Analyse (engl.: Spatial analysis)<br />

Räumliche Analyse stellt in dieser Arbeit einen Oberbegriff dar, mit dem sowohl topologische<br />

Operationen () als auch räumliche Operationen () auf raumbezogene Daten gemeint sind.<br />

Räumliche Operation<br />

In dieser Arbeit wurde definiert, dass zur Gruppe der räumlichen Operationen die folgenden<br />

Funktionen zählen:<br />

• die Funktion zur Berechnung des Flächeninhalts eines Polygons (area)<br />

• die Funktion zur Berechnung der Länge eines Linienzuges (length)<br />

• die Funktion zur Berechnung des räumlichen Abstands (distance)<br />

• sowie die Funktion isWithinDistance<br />

(Details siehe 5.1)<br />

Regelbasierte Zugriffskontrolle (engl. Rule Set Based Access Control – RSBAC)<br />

(siehe 3.1.2)<br />

Rollenbasierte Zugriffskontrolle<br />

(siehe 3.1.2)<br />

Sichere Anfrage<br />

Eine sichere Anfrage (engl. secure Query) ist eine Anfrage an einen Web Service bzw. an eine<br />

Datenquelle, deren Auswertung nur noch rechtmäßig zugängliche Daten liefert (d.h. der<br />

Zugriff auf diese Daten verstößt gegen keine Zugriffsbeschränkungsregel).<br />

System Security Officer (SSO)<br />

Ein Administrator, der dafür zuständig ist, den Zugriff auf die Daten oder die Dienste des<br />

Web Services zu regulieren.<br />

Topologische Operation<br />

Topologische Operationen sind boolesche Methoden, die überprüfen, ob zwischen zwei Geometrien<br />

eine bestimmte topologische Relation besteht (siehe auch 5.1). In dieser Arbeit werden<br />

die folgenden topologischen Operationen betrachtet:<br />

equals, disjoint, intersects, touches, crosses, overlaps, within <strong>und</strong> contains.<br />

Web Service<br />

siehe 2.3<br />

WFS<br />

siehe 2.5


15<br />

XACML Request Context<br />

XACML-kodierte Zugriffsentscheidungsanfrage<br />

XML<br />

siehe 2.1.1<br />

XML Schema<br />

Ein XML Vokabular, um den erlaubten Inhalt von XML Dokumenten festzulegen (O’Reilly<br />

2002; siehe auch 2.1.1). Eine XML Schemadefinition wird in so genannten XSD Dateien gespeichert.<br />

XPath<br />

Eine nicht-XML Syntax, die von XPointer <strong>und</strong> XSLT genutzt wird, um Teile eines XML Dokumentes<br />

zu identifizieren (O’Reilly 2002; siehe auch 2.1.2).<br />

XSLT<br />

Eine XML Anwendung, die Transformationen von einem Dokument in ein anderes beschreibt<br />

(O’Reilly 2002; siehe auch 2.1.2).<br />

Zugriffskontrolle (engl. Access control)<br />

Die Zugriffskontrolle prüft, ob ein Anwender, der die Zugangskontrolle passiert hat, berechtigt<br />

ist, mit bestimmten Daten zu arbeiten (GI-Lexikon; siehe auch Kapitel 3).<br />

Zugriffskontrollliste (engl. Access Control List – ACL)<br />

Eine computerimplementierte Liste, die Regeln für einen Zugriffsmechanismus enthält. Damit<br />

kann beispielsweise der Zugriff auf Daten auf bestimmte Nutzergruppen eingeschränkt werden<br />

(GI-Lexikon; siehe auch 3.1.1).<br />

Zugriffsrecht (engl.: permission, authorization, access right <strong>und</strong> privilege)<br />

Die gezielte Vergabe von Rechten für Benutzer, damit diese die freigegebenen Daten <strong>und</strong><br />

Ressourcen im Netzwerk benutzen können (GI-Lexikon; siehe auch 3.1).


16<br />

1 Einleitung<br />

1.1 Motivation<br />

In der heutigen Gesellschaft besteht aufgr<strong>und</strong> der stetig wachsenden Menge an Informationen<br />

<strong>und</strong> dem immer weiter voranschreitenden Prozess der Globalisierung ein zunehmender Bedarf<br />

an Informationsaustausch. Durch die Entstehung des Internets ist eine ansprechende Plattform<br />

geschaffen worden, die in vielen wirtschaftlichen <strong>und</strong> gesellschaftlichen Bereichen zum Austausch<br />

von Daten genutzt werden kann. Technologische Fortschritte im Bereich der Datenübertragung<br />

sowie die <strong>Entwicklung</strong> von standardisierten Datenformaten, Protokollen <strong>und</strong><br />

Softwarekomponenten haben zu <strong>einer</strong> rasanten Verbreitung <strong>und</strong> Weiterentwicklung dieses<br />

neuen Kommunikationsmediums geführt.<br />

Zur Kodierung der über das Internet ausgetauschten Informationen hat sich die eXtensible<br />

Markup Language (XML 1 ) als der quasi Standard etabliert. Ein Hauptgr<strong>und</strong> für die weltweite<br />

Akzeptanz von XML ist die Möglichkeit, mit XML Inhalt <strong>und</strong> Struktur von Daten standardisiert<br />

zu kodieren, wodurch eine automatisierte, rechnergestützte Verarbeitbarkeit ermöglicht<br />

wird.<br />

Auf Basis dieses universellen Datenaustauschformates ist mit den so genannten Web Services<br />

eine neue Generation von Anwendungen entstanden. Web Services sind ein standardisiertes<br />

Konzept, mit dem Ziel, das Anbieten von interoperablen Daten <strong>und</strong> Diensten zu erleichtern.<br />

Die Vorteile dieses Konzeptes haben zur <strong>Entwicklung</strong> vieler, zum Teil verb<strong>und</strong>ener Web Services<br />

geführt, die – sofern erwünscht – für eine breite Masse nutzbar sein können. Die steigende<br />

Anzahl an Diensten im Netz zieht viele neue Nutzer an. Dies wiederum impliziert, dass<br />

es ständig zur <strong>Entwicklung</strong> neuer Dienste kommt. Dieser Kreislauf wird aber derzeit noch<br />

immer durch fehlende oder nicht ausreichend mächtige Konzepte im Informationsverarbeitungssektor<br />

gebremst (Opincaru 2004). Als Beispiel sind Sicherheitsaspekte bei Web Services<br />

zu nennen.<br />

Da Nutzer <strong>und</strong> Web Services über das Internet miteinander kommunizieren, läuft der Nachrichtenaustausch<br />

über ein unsicheres Medium. Daher sind Web Services bzw. die Informationsflüsse<br />

zwischen Dienst <strong>und</strong> Nutzer zahlreichen Bedrohungen wie unautorisierten Zugriffen<br />

(z.B. Abhören, Modifikation oder Löschen), Maskerade, Denial-of-Service, IP-spoofing,<br />

man-in-the-middle Attacke etc. ausgesetzt. Dem gegenüber steht der zunehmende Bedarf an<br />

Sicherheit <strong>und</strong> Schutz von sensiblen <strong>und</strong> privaten Daten bzw. Diensten im Netz, für den eine<br />

sichere Kommunikation eine Vorraussetzung ist. Gewünschte Eigenschaften eines sicheren<br />

Datenaustausches sind die Autorisation sowie die Authentifizierung, die Geheimhaltung <strong>und</strong><br />

die Nachrichtenintegrität. Abgesehen von der Autorisation sind die geforderten Eigenschaften<br />

1 Eine Liste aller verwendeten Abkürzungen sowie ein Verzeichnis mit Begriffsdefinitionen findet sich auf Seite<br />

10-15.


17<br />

inzwischen durch Verfahren <strong>und</strong> Systeme wie SSL, IPSec, RSA, DES, MD5, Kerberos, PGP<br />

etc. zufriedenstellend gelöst <strong>und</strong> für Geo Web Services nutzbar. Es kann daher die Existenz<br />

eines sicheren Datenkanals mit korrekter Authentifizierung des Nutzers vorausgesetzt werden,<br />

wovon auch in dieser Arbeit ausgegangen wird.<br />

Die Autorisationsproblematik dagegen wurde bislang nur sehr rudimentär gelöst, obwohl sie<br />

ebenfalls Voraussetzung für die sichere Nutzung von Web Services ist. Ausschließlich aktionsgeb<strong>und</strong>ener<br />

Zugriffschutz auf Dateiebene (z.B. beim Apache Web Server) oder ähnlich<br />

grobgranulare Konzepte, sind für die heutigen XML-basierten Anwendungen nicht mehr ausreichend<br />

mächtig. Begünstigt durch das strukturierte Datenmodell von XML sind neue Autorisationskonzepte<br />

möglich <strong>und</strong> erforderlich, um auf feingranularer Ebene Zugriffe auf vertrauliche<br />

Daten inhaltsabhängig regulieren zu können. Weiterentwicklungen von Web Services<br />

beschäftigen sich daher unter anderem mit der Umsetzung eines Konzeptes für eine flexible<br />

<strong>und</strong> effiziente Autorisation, die auf der Sicherheitsschicht aufsetzt.<br />

An diesem Punkt setzt auch die vorliegende Diplomarbeit an. Bislang existieren nur wenige<br />

Konzepte für die Umsetzung <strong>einer</strong> feingranularen Zugriffskontrolle für XML Dokumente<br />

bzw. Web Services. Für die im Fokus dieser Arbeit stehenden Geo Web Services kommt aufgr<strong>und</strong><br />

der speziellen Anforderungen im Geodatenmarkt bezüglich Datenschutz des weiteren<br />

erschwerend hinzu, dass viele dieser Ansätze wegen mangelnder Flexibilität oder Mächtigkeit<br />

unbrauchbar sind. Es existiert derzeit noch kein umfassendes Konzept feingranularer, raumbezogener<br />

Zugriffskontrolle für Geo Web Services bzw. für Geodaten.<br />

Dieser Mangel ist angesichts der flächendeckenden Verfügbarkeit qualitativ hochwertiger<br />

Geodaten, ausgereifter Technik von Geoinformationssystemen <strong>und</strong> der steigenden Bedeutung<br />

der Nutzung von Geoinformation in Wirtschaft, Verwaltung <strong>und</strong> Politik besonders unerfreulich<br />

(Schilcher et al. 2004, S. 5). Festzuhalten ist daher, dass trotz der großen Fortschritte im<br />

Geoinformatiksektor weiterer Forschungsbedarf im Bereich der Geo Web Services gegeben<br />

ist. Wie Professor J. Frankenberger <strong>und</strong> Professor M. Schilcher im Abschlussbericht des Forschungsprojektes<br />

Geoportal (Schilcher et al. 2004, S. 6) betonen, sind vor allem Untersuchungen<br />

zur Zugriffskontrolle für Geo Web Services von besonderer Dringlichkeit.<br />

Hinzu kommt, dass viele Anbieter von Web Services kommerzielle Interessen verfolgen <strong>und</strong><br />

daher die Abrechnung von Diensten eine wichtige Rolle spielt. Auch für diesen Bereich kann<br />

durch ein Autorisationssystem, das den Dienstkonsumenten nur die zugänglichen Daten – d.h.<br />

die Daten, für die bezahlt wurde – zur Verfügung stellt, ein Gr<strong>und</strong>stein gelegt werden.


18<br />

1.2 Zielsetzung<br />

Diese Diplomarbeit versucht den Missstand mangelnder Autorisationskonzepte für Geo Web<br />

Services zu beheben, indem das im Rahmen dieser Arbeit entwickelte Konzept für raumbezogene<br />

Zugriffskontrolle <strong>und</strong> seine prototypische <strong>Implementierung</strong> vorgestellt wird.<br />

Es werden Lösungsansätze für eine feingranulare, inhaltsabhängige <strong>und</strong> raumbezogene<br />

Zugriffskontrolle vorgestellt <strong>und</strong> diskutiert, die als Leitfaden bei der Umsetzung eines mächtigen<br />

Zugriffskontrollsystems für Geo Web Services genutzt werden können.<br />

Hierdurch soll ein Beitrag zum quantitativen <strong>und</strong> qualitativen Ausbau der Geodateninfrastruktur<br />

erbracht werden. Ziel ist es, den vorhandenen Geodatenbestand für neue Nutzer- <strong>und</strong><br />

Dienstanbietergruppen zu erschließen, so dass sich das Marktpotential von Geodaten <strong>und</strong><br />

GIS-Technologien besser entfalten kann.<br />

1.3 Konventionen zum Schriftsatz<br />

Zur besseren Lesbarkeit dieser Arbeit wurden Klassennamen, Funktionsnamen, Bezeichner<br />

von XML Knoten, XPath-Ausdrücke etc. in Schreibmaschinenschrift gesetzt. Um<br />

besondere Sachverhalte hervorzuheben, wird zur Betonung fettgedruckte Schrift verwendet.<br />

Literaturangaben werden durch r<strong>und</strong>e Klammern gekennzeichnet <strong>und</strong> in der Form (Autor<br />

Jahreszahl, Seite) dargestellt.<br />

Um dem Leser eine vertraute Form <strong>und</strong> Darstellung <strong>einer</strong> wissenschaftlichen Arbeit zu bieten,<br />

wurden für die Gestaltung dieser Diplomarbeit die Konventionen aus Scholz 2001 verwendet,<br />

die den entsprechenden DIN-Normen genügen.<br />

1.4 Aufbau der Arbeit<br />

Um aufzuzeigen, wie raumbezogene Zugriffskontrolle realisiert werden kann, wurde die vorliegende<br />

Arbeit wie folgt gegliedert.<br />

Abschnitt 2 führt für die Arbeit relevante Begriffe <strong>und</strong> Technologien aus der (Geo-) Informatik<br />

ein.<br />

Abschnitt 3 geht auf den Prozess der Zugriffskontrolle ein. Es werden gängige Ansätze <strong>und</strong><br />

Vorgehensweisen zur Definition <strong>und</strong> Durchsetzung von Zugriffsregeln be-


19<br />

schrieben <strong>und</strong> deren Eignung für den Anwendungsfall Geo Web Services analysiert.<br />

Abschnitt 4 widmet sich der konzeptionellen Strukturierung eines Zugriffskontrollsystems.<br />

Auf Basis <strong>einer</strong> standardisierten Sprache zur Beschreibung von Regelwerken<br />

(eXtensible Access Control Markup Language – XACML) wird gezeigt, wie<br />

inhaltsabhängige Zugriffskontrolle für dynamisch generierte XML Dokumente<br />

bzw. objektartig strukturierten Geodaten erreicht werden kann. Im Fokus dieses<br />

Abschnittes stehen Autorisationen für lesende Zugriffe auf einen Geo Web<br />

Service.<br />

Abschnitt 5 betrachtet, wie raumbezogene Zugriffsregeln festgelegt werden können. Da<br />

XACML hierfür keine ausreichende Funktionalität bietet, wird an dieser Stelle<br />

eine Erweiterung der Sprache zur Unterstützung raumbezogener Zugriffskontrolle<br />

beschrieben. Abschließend wird darauf eingegangen, wie Zugriffskontrolle<br />

für modifizierende Aktionen (einfügen, löschen, updaten) auf einen Geo<br />

Web Service erreicht werden kann.<br />

Abschnitt 6 gibt Einblick in die verwendeten Techniken zur Umsetzung des im Rahmen<br />

dieser Arbeit entwickelten Zugriffskontrollsystems. Es wird gezeigt, wie das<br />

vorgestellte Konzept zur Realisierung raumbezogener Zugriffskontrolle implementiert<br />

werden kann.<br />

Abschnitt 7 fasst die Ergebnisse dieser Arbeit zusammen <strong>und</strong> gibt einen Ausblick auf mögliche<br />

Weiterentwicklungen.<br />

Anhang A<br />

Anhang B<br />

Anhang C<br />

beschreibt ein fiktives aber realistisches Anwendungsszenario. Im Hauptteil<br />

der Arbeit vorgestellte Lösungsansätze werden durch Beispiele ergänzt, die<br />

sich auf diesen Anwendungsfall beziehen. Dies soll dem besseren Verständnis<br />

der Ausführungen in dieser Arbeit dienen. Zudem finden sich hier weitere Beispiele<br />

auf die an den entsprechenden Stellen der Arbeit verwiesen wird.<br />

gibt Hinweise zur Verwendung topologischer Operationen bei der Definition<br />

von raumbezogenen Zugriffsregeln.<br />

enthält einen Vorschlag, wie ein Regelwerk für Geo Web Services zu definieren<br />

<strong>und</strong> zu strukturieren ist.


20<br />

2 Gr<strong>und</strong>lagen<br />

2.1 XML Technologien<br />

In diesem Abschnitt wird ein knapper Überblick zur Struktur <strong>und</strong> zu den Eigenschaften der<br />

eXtensible Markup Language gegeben. XML ist ein vom World Wide Web Consortium 2<br />

(W3C) verabschiedeter, weltweit akzeptierter Standard. Das normative Dokument zu XML<br />

1.0 ist die XML Spezifikation (W3C XML 1.0).<br />

Des weiteren werden in diesem Abschnitt XML Schema <strong>und</strong> die XML Technologien XPath<br />

<strong>und</strong> XSLT, die in dieser Arbeit zu tragen kommen, vorgestellt.<br />

2.1.1 XML <strong>und</strong> XML Schema<br />

XML ist eine mächtige Meta-Auszeichnungssprache <strong>und</strong> dient zur syntaktischen Repräsentation<br />

von strukturierten Dokumenten. Der Inhalt der Dokumente, die Daten, werden durch so<br />

genannte Tags (Markup) umschlossen, welche die Daten beschreiben <strong>und</strong> hierarchisch strukturieren.<br />

Dateneinheiten werden durch so genannte Elemente <strong>und</strong> Attribute ausgezeichnet.<br />

Durch die Schachtelung von Elementen können hierarchisch strukturierte Dokumente aufgebaut<br />

werden. XML Dokumente können als ein Baum von Knoten (z.B. Element-, Attributoder<br />

Textknoten) angesehen werden. Wichtige Konzepte von XML sind die Wohlgeformtheit,<br />

die Erweiterbarkeit, <strong>und</strong> die Validierbarkeit.<br />

Durch die XML Spezifikation wird unter anderem eine Grammatik festgelegt, die beschreibt,<br />

wie Tags zu verwenden sind. Zusätzlich wird definiert, welchen syntaktischen Anforderungen<br />

die Tags genügen müssen. XML Dokumente, die der XML Spezifikation genügen, werden als<br />

wohlgeformt bezeichnet. Wohlgeformte XML Dokumente sind, da sie der normierten Syntax<br />

genügen, von Parsern lesbar. Diese zerlegen das XML Dokument in seine Basiseinheiten (Elemente,<br />

Attribute usw.) <strong>und</strong> übergeben diese an weiterverarbeitende Programme.<br />

Unter Erweiterbarkeit versteht man, dass bei der Erstellung von XML Dokumenten ein beliebiges<br />

Vokabular an Elementen <strong>und</strong> Attributen verwendet <strong>und</strong> erweitert werden kann. Für bestimmte<br />

Anwendungen kann allerdings – beispielsweise aus Interoperabilitätsgründen – vereinbart<br />

werden, dass nur eine fest vorgegebene Menge an Tags verwendet werden darf. Diese<br />

Menge an Tags wird als XML Anwendung bezeichnet (O’Reilly 2002, Kap. 1.1) <strong>und</strong> definiert<br />

eine Klasse von XML Dokumenten (z.B. GML oder MathML). Welches Markup in <strong>einer</strong><br />

XML Anwendung erlaubt ist, wird durch ein Schema beschrieben. Dokumente, die dem<br />

Schema genügen, werden als gültig oder valide (engl. valid) bezeichnet. Zur Deklaration des<br />

2 eines der führenden Standardisierungsgremien für Internettechnologien


21<br />

Schemas stehen unterschiedlich mächtige XML Schemasprachen zur Verfügung (z.B. Document<br />

Type Definition (DTD) oder W3Cs XML Schema). Durch diese Sprachen wird die<br />

Struktur des XML Dokuments <strong>und</strong> neue Datentypen, die im Schema verwendbar sein sollen,<br />

beschrieben (Details siehe W3C XML Schema). Konkreter ausgedrückt bedeutet dies, dass<br />

festgelegt wird, welche Elemente <strong>und</strong> Einheiten an welcher Stelle auftauchen dürfen <strong>und</strong> wie<br />

deren Inhalt auszusehen hat. Ob eine XML Dokumentinstanz <strong>einer</strong> Dokumentklasse bzw. <strong>einer</strong><br />

bestimmten XML Anwendung angehört, kann über so genannte validierende Parser abgefragt<br />

werden. Diese überprüfen neben der Wohlgeformtheit, ob die XML Dokumentinstanz<br />

unter dem Schema der Dokumentklasse als gültig bezeichnet werden kann. Die Validierbarkeit<br />

von XML Dokumenten macht es möglich, dass der Empfänger eines Dokumentes überprüfen<br />

kann, ob dessen Struktur <strong>und</strong> Inhalte seinen Erwartungen entsprechen.<br />

Da XML ein einfaches, standardisiertes, automatisiert lesbares <strong>und</strong> neutrales (d.h. plattform<strong>und</strong><br />

sprachenunabhängiges) Dokumentformat ermöglicht, eignet es sich besonders zur Speicherung<br />

<strong>und</strong> zum Austausch von textbasierten Daten. Die Erstellung von Werkzeugen, welche<br />

XML Daten lesen, schreiben <strong>und</strong> verarbeiten können, ist aufgr<strong>und</strong> der Standardisierung,<br />

Textbasiertheit <strong>und</strong> der Verfügbarkeit von Parsern leicht möglich.<br />

2.1.2 Adressierung per XPath <strong>und</strong> Transformation mit XSL<br />

Aufbauend auf XML haben sich zahlreiche weitere Standards entwickelt. Dazu zählen die<br />

XML Path Language (XPath) <strong>und</strong> die eXtensible Stylesheet Language Transformations<br />

(XSLT), die aufgr<strong>und</strong> ihrer Relevanz für die Arbeit kurz vorgestellt werden sollen.<br />

XPath ist eine nicht XML-basierte Sprache mit der man Teile des hierarchisch aufgebauten<br />

XML Dokumentes adressieren kann. Aus Sicht von XPath ist das XML Dokument ein Baum<br />

mit Knoten. Man unterscheidet zwischen sieben verschiedenen Knotenarten (Element-, Attribut-,<br />

Text-, Kommentar-, Verarbeitungsanweisungs- <strong>und</strong> Namensraumknoten). Durch so genannte<br />

Lokalisierungspfade – auch XPath-Ausdrücke genannt – kann man beliebig im XML<br />

Dokumentbaum navigieren <strong>und</strong> Knotenmengen adressieren. Ein Lokalisierungspfad besteht<br />

aus mehreren Lokalisierungsschritten. Durch Prädikate je Lokalisierungsschritt kann man die<br />

selektierten Knotenmengen weiter verf<strong>einer</strong>n oder Funktionen auf diesen ausführen.<br />

Weiter Informationen zu XPath sind beispielsweise unter W3C XPath 2.0 oder O’Reilly<br />

2002, Kap. 9 zu finden.<br />

Mit XSLT können Regeln zur Transformation von XML Dokumenten, z.B. die Umwandlung<br />

eines XML Dokuments in ein HTML Dokument oder in ein strukturell unterschiedliches<br />

XML-Dokument beschrieben werden. Ein anderer Anwendungsfall für XSLT ist beispielsweise,<br />

eine gewisse Teilmenge an Daten aus einem XML Dokument zu extrahieren.


22<br />

Ein XSLT Dokument, auch Stylesheet genannt, besteht aus <strong>einer</strong> Liste von Schablonenregeln<br />

(template rules). Jede Schablonenregel enthält ein Muster (per XPath-Ausdruck spezifiziert),<br />

durch das gekennzeichnet ist, für welche Knoten es greift, <strong>und</strong> zusätzlich Anweisungen zur<br />

Erzeugung <strong>einer</strong> Ausgabe. Ein XSLT Prozessor liest ein XML Dokument ein <strong>und</strong> arbeitet das<br />

Stylesheet ab. Wenn der Prozessor im Eingabedokument eine Übereinstimmung mit dem<br />

Muster <strong>einer</strong> Schablonenregel des Stylesheets erkennt, wird eine Ausgabe gemäß der Anweisung<br />

der Schablonenregel erstellt.<br />

Weiterführende Informationen finden sich beispielsweise unter W3C XSLT 1.0 oder<br />

O’Reilly 2002, Kap. 8.<br />

2.2 Geodaten <strong>und</strong> GML<br />

Geographische Informationen bzw. geographische Daten – kurz Geodaten (d.h. die datenverarbeitungstechnische<br />

Form von Geoinformation) beschreiben Gegenstände, Geländeformen<br />

<strong>und</strong> Infrastruktur auf der Erdoberfläche, wobei als wesentliches Merkmal ein Raumbezug vorliegen<br />

muss (vgl. Schilcher GeoInf1, S.2 f). Geodaten bestehen demnach aus<br />

Geometriedaten 3 (geometrische Form <strong>und</strong> Lage eines Objektes im Raum) <strong>und</strong> zusätzlich gegebenenfalls<br />

aus Sachdaten (nicht-räumliche Eigenschaften der Objekte). Die räumlichen Eigenschaften<br />

sind durch Angabe eines geodätischen Bezugssystems, auch Raumbezugssystem<br />

genannt (engl. Spatial Reference System – SRS) eindeutig verortet. Ein SRS ist eine mathematische<br />

Methode, um einem Ort auf der Erde Koordinaten zuzuordnen. Es existieren zahlreiche<br />

Raumbezugssysteme (z.B. World Geodetic System (WGS84), Gauss-Krüger Koordinatensystem,<br />

Universale Transverale Mercatorprojektion etc.), die durch einige Parameter, wie<br />

z.B. die Referenzfläche sowie die geodätische Abbildung, vollständig <strong>und</strong> eindeutig bestimmt<br />

sind. Die Systeme unterscheiden sich indem sie bestimmte Gebiete auf der Erdoberfläche unterschiedlich<br />

gut annähern <strong>und</strong> dadurch in Abhängigkeit der Lage eines Objektes unterschiedlich<br />

genaue Koordinatenangaben ermöglichen. Ursache für diese Differenzen ist die Tatsache,<br />

dass die Erde mathematisch gesehen ein recht unr<strong>und</strong>es Gebilde ist, das über unterschiedliche<br />

Ellipsoide angenähert werden kann. Beispielsweise stellt WGS84, das im Jahr 1984 für das<br />

Global Positioning System (GPS) entwickelt wurde, weltweit gesehen die größtmögliche Annäherung<br />

an die Form der Erde dar.<br />

Koordinaten, die sich auf ein bestimmtes SRS beziehen, können durch komplexe Transformationsalgorithmen<br />

exakt in ein anderes System umgerechnet werden, wenn das Ein- bzw. Ausgangssystem,<br />

deren Projektionen <strong>und</strong> die verwendeten Ellipsoide bekannt sind. Detaillierte<br />

Informationen zu Raumbezugssystemen <strong>und</strong> geodätischen Transformationen finden sich in<br />

Schilcher GeoInf1, S. 7-13 <strong>und</strong> Huber 2002, S. 205-214.<br />

3 auch räumliche Eigenschaft(en) oder Rauminformation genannt


23<br />

In dieser Arbeit wird davon ausgegangen, dass das den Geodaten zugr<strong>und</strong>e liegende Datenmodell<br />

objektbasiert ist. Die Welt wird demnach als eine Oberfläche angesehen, die von unterscheidbaren<br />

Objekten welche <strong>einer</strong> Objektklasse angehören (z.B. Gebäude, Straßen usw.)<br />

bedeckt ist. Ferner wird angenommen, dass die Geometrien der räumlichen Objekte ausschließlich<br />

zweidimensional sind <strong>und</strong> in vektororientierter Form vorliegen. In Vektordarstellung<br />

angegebene Geometrien lassen sich auf Linien bzw. Punkte zurückführen <strong>und</strong> sind somit<br />

allein durch die Angabe der so genannten Führungspunkte vollständig charakterisiert (Bungartz<br />

1996, S.6). Führungspunkte sind durch die Angabe ihrer Koordinaten in einem Raumbezugssystem<br />

eindeutig definiert.<br />

Effizienter Austausch von geographischer Information ist nur dann möglich, wenn sich die<br />

Anwendungen (z.B. geographische Informationssysteme – kurz GIS) an Standards <strong>und</strong> Normen<br />

im Bereich Geodaten halten. Nur so ist Datenaustausch ohne umständliche Konvertierungen<br />

möglich. Leider existiert noch kein allumfassender Standard zur Beschreibung bzw.<br />

zum Austausch von Geodaten. Beispiel für gängige interoperable Formate zur Speicherung<br />

<strong>und</strong> zum Austausch von Geodaten sind die Geography Markup Language (GML – eine XML<br />

Anwendung), shape oder tiff Dateien. Für objektorientiert modellierte Geodaten hat sich<br />

GML als quasi Standard zur Kodierung der geographischen Information etabliert. Durch die<br />

dadurch bekannte Struktur der Daten ist es möglich feingranular – d.h. auf Knotenebene – den<br />

Zugriff auf die Daten kontrollieren zu können. Aus diesem Gr<strong>und</strong> wird in dieser Arbeit davon<br />

ausgegangen, dass Geodaten in GML-kodierter Form vorliegen.<br />

Die von OGC standardisierte Geography Markup Language (für diese Arbeit verwendete<br />

Version: OGC GML 2.1.2) ist eine XML Anwendung zur Beschreibung <strong>und</strong> Kodierung geographischer<br />

Information. Zur Modellierung von Phänomenen auf der Erde wird in der GML<br />

Spezifikation (wie auch in OGC SFS 1.1, JTS Tech Spec 1.4, OGC Filter Spec 1.0) der<br />

Begriff Feature verwendet. Unter einem Feature versteht man die digitale Repräsentation eines<br />

Gegenstandes, <strong>einer</strong> Geländeform oder <strong>einer</strong> Infrastruktur auf der Erdoberfläche. Jedes<br />

Feature hat einen Typ, der dem Begriff der Klasse in objektorientierter Ausdrucksweise entspricht.<br />

Der Zustand eines Features ist durch eine Menge an „Eigenschaften“ (engl. properties<br />

4 ) definiert. Eine „Eigenschaft“ kann als ein {Name, Typ, Wert} Tripel betrachtet werden.<br />

Unter einem geographischen Feature versteht man ein Feature, das mindestens eine räumliche<br />

Eigenschaft <strong>und</strong> beliebig viele nicht-räumliche Eigenschaften (die Sachdaten zu dem Feature)<br />

besitzt. Man spricht von einfachen geographischen Features, wenn die Geometrien, welche<br />

die raumbezogenen Eigenschaften definieren, zweidimensional sind <strong>und</strong> Kurven in linear interpolierter<br />

Form vorliegen (OGC GML 2.1.2, S. 4). Da beide Bedingungen gemäß der Aufgabenstellung<br />

stets erfüllt sind, werden demnach in dieser Arbeit ausschließlich einfache geographische<br />

Features betrachtet. Zur Verbesserung der Lesbarkeit wird allerdings der Zusatz<br />

einfaches geographisches Feature im Folgenden weggelassen.<br />

4 Der englische Begriff properities wurde bewusst nicht als Attribut übersetzt, um die Verwechslung mit XML<br />

oder XACML Attributen zu vermeiden.


24<br />

Im Kern wird GML durch zwei XML Schemata beschrieben: Das „geometry“ Schema <strong>und</strong><br />

das „feature“ Schema (OGC GML 2.1.2, S. 49-62). Die GML Spezifikation bietet ein Framework,<br />

das genutzt werden kann, um benutzerdefinierte XML/GML Anwendungsschemata<br />

zu deklarieren. Technisch gesehen wird dies durch Einbinden der Schemata in feature.xsd,<br />

geometry.xsd <strong>und</strong> ggf. xlinks.xsd im Schema <strong>einer</strong> Anwendung des Nutzers erreicht. Dadurch<br />

stehen dem Nutzer standardisierte Basiseinheiten zur Verfügung, mit denen er unter Berücksichtigung<br />

einiger Regeln ein konkretes Anwendungszenario in GML modellieren kann.<br />

In GML werden die Lage <strong>und</strong> Form der räumlichen Eigenschaften eines Features als zweidimensionale<br />

Geometrien in einem Raumbezugssystem ausgedrückt. Zur Beschreibung der<br />

Geometrien stehen die Datentypen Punkt, Multipunkt, Linenzug, Multilinienzug, Polygon,<br />

Multipolygon oder die heterogene Geometry Collection zur Verfügung, die über einfache<br />

standardisierte Tags umgesetzt sind. In allen Fällen ist zur Geometrie immer das SRS, auf<br />

welches sich die Angaben beziehen, zu spezifizieren.<br />

Punkt:<br />

Ein Punkt ist eine 0-dimensionale Geometrie <strong>und</strong> repräsentiert genau einen Ort im Raum. Er<br />

wird durch eine X- <strong>und</strong> Y-Koordinate sowie durch Angabe eines Raumbezugssystems eindeutig<br />

beschrieben. Die Kodierung eines Punktes kann mittels GML wie folgt dargestellt werden:<br />

<br />

280,300<br />

<br />

Der Wert des srsName Attributes definiert, auf welches Koordinatensystem sich die im coordinates<br />

5 Element angegebenen Koordinaten beziehen. Die Attribute decimal <strong>und</strong> cs<br />

legen fest, welche Zeichen zur Darstellung des Dezimalpunktes <strong>und</strong> zum Trennen einzelner<br />

Koordinatenwerte verwendet wurden.<br />

Multipunkt:<br />

Ein Multipunkt ist eine Menge von nicht verb<strong>und</strong>enen Punkten.<br />

In GML werden homogene Mengen von Geometrien mittels eines MultiGeometrietyp<br />

Elementes kodiert. Dessen Kinder sind eine Menge an geometrietypMember Elementen,<br />

in denen die Geometrien vom Typ geometrietype definiert sind (siehe Codebeispiel für Menge<br />

an Punkt Geometrien).<br />

<br />

<br />

5 Alternativ könnte auch das coord Element verwendet werden, was in dieser Arbeit allerdings vernachlässigt<br />

wurde.


25<br />

<br />

...<br />

<br />

<br />

<br />

<br />

...<br />

<br />

<br />

...<br />

<br />

Linienzug:<br />

Ein Linienzug ist eine lineare Interpolation zwischen Punkten. Er wird durch eine geordnete<br />

Menge an verb<strong>und</strong>enen Punkten beschrieben. Ein Sonderfall eines Linienzuges ist ein linearer<br />

Ring. Bei diesem ist der Start- <strong>und</strong> Endpunkt des Linienzuges identisch. Ähnlich zum Punkt<br />

werden Linienzüge in GML wie folgt kodiert:<br />

<br />

<br />

120,280 200,200 320,240 320,300 240,300 240,340<br />

<br />

<br />

Durch das ts Attribut wird das Zeichen angegeben, das zum Trennen der einzelnen Koordinatentupel<br />

(entsprechend den Punkten, die den Linienzug definieren) verwendet wurde.<br />

Multilinienzug:<br />

Ein Multilinienzug ist eine Menge an nicht verb<strong>und</strong>enen Linienzügen (Kodierung in GML<br />

siehe Multipunkt).<br />

Polygon:<br />

Ein Polygon ist eine planare Fläche, die durch eine äußere <strong>und</strong> beliebig viele innere Grenzen<br />

– repräsentiert durch lineare Ringe – definiert ist. Innere Grenzen stellen Löcher im Polygon<br />

dar. Ein Sonderfall eines Polygons ist ein Rechteck, das als so genannte Box bezeichnet werden<br />

kann. Eine Box ist durch die Angabe zweier diagonal liegender Eckpunkte eindeutig bestimmt.<br />

Die Definition eines Polygons mittels GML erfolgt durch Angabe seines äußeren <strong>und</strong> s<strong>einer</strong><br />

inneren Ränder:<br />

<br />

<br />

<br />

<br />

140,180 140,240 200,260 220,200 180,180 140,180<br />


26<br />

<br />

<br />

<br />

<br />

<br />

160,220 180,220 160,200 160,220 160,220<br />

<br />

<br />

<br />

<br />

Multipolygon:<br />

Ein Multipolygon ist eine Menge an unabhängigen Polygonen (Kodierung in GML siehe<br />

Multipunkt).<br />

Geometry Collection:<br />

Eine Geometry Collection ist eine heterogene Menge an geometrischen Objekten. Sie kann<br />

aus beliebig vielen Punkten, Multipunkten, Linenzügen, Multilinienzügen, Polygonen <strong>und</strong><br />

Multipolygonen bestehen. Die Kodierung in GML kann beispielsweise wie folgt aussehen:<br />

<br />

<br />

<br />

280,300<br />

<br />

<br />

<br />

<br />

<br />

120,280 200,200 320,240 320,300 240,300 240,340<br />

<br />

<br />

<br />

<br />

Wie ersichtlich wird, sind Geometrien bzw. die räumlichen Eigenschaften eines Features, die<br />

mittels GML kodiert worden sind, eindeutig <strong>und</strong> vollständig definiert. Neben dem Raumbezugssystem,<br />

den Koordinaten <strong>und</strong> den Trennzeichen ist über die Elemente zugleich der Typ<br />

der Geometrie angegeben.<br />

Im Anhang A wird ein Beispielszenario eingeführt, anhand dessen die in dieser Arbeit vorgestellten<br />

Konzepte exemplarisch demonstriert werden. Unter A.1 findet sich ein kleines Beispiel<br />

für die praktische Nutzung von GML zur Kodierung der Geodaten des Beispielszenarios.<br />

Dort wird durch UML Klassendiagramme das Anwendungsschema vorgestellt <strong>und</strong> ergänzend<br />

ist unter A.2 eine dem Schema genügende Dokumentinstanz abgedruckt.


27<br />

2.3 Web Service<br />

Das World Wide Web Consortium (W3C) definiert das Konzept Web Service wie folgt:<br />

(W3C DefWS, Abschnitt 1.1):<br />

„A Web Service is a software system identified by a Unified Resource Identifier (URI), whose public<br />

interfaces and bindings are defined and described using XML. Its definition can be discovered<br />

by other software systems. These systems may then interact with the Web service in a manner prescribed<br />

by its definition, using XML based messages conveyed by Internet protocols.”<br />

Web Services fördern das Anbieten <strong>und</strong> Nutzen von Daten <strong>und</strong> Diensten in verteilten Umgebungen,<br />

da sie unabhängig von <strong>einer</strong> Plattform, einem Betriebssystem <strong>und</strong> <strong>einer</strong> Programmiersprache<br />

verwendbar sind. Zusätzlich ist von Vorteil, dass Web Services standardisierte<br />

IT-Infrastruktur wie Protokolle, Datenformate, Sicherheitskonzepte etc. verwenden können.<br />

Bei der Nutzung eines Web Services können drei Basiskomponenten identifiziert werden<br />

(vgl. Abbildung 2.1).<br />

Verzeichnisdienst<br />

1. Publizieren 2.Suchen<br />

3. Ergebnis<br />

(WSDL)<br />

Dienstanbieter<br />

4. Anfrage<br />

(SOAP)<br />

5. Antwort<br />

Dienstkonsument<br />

Abbildung 2.1 Datenfluss bei der Nutzung eines Web Services (angelehnt an Hauser 2004, S. 16)<br />

Der Dienstanbieter entwickelt eine Web Service Applikation <strong>und</strong> publiziert diese bei einem<br />

Verzeichnisdienst („Gelbe Seiten“ für Web Services), damit der Dienst von Suchdiensten gef<strong>und</strong>en<br />

werden kann.<br />

Ein Verzeichnisdienst stellt eine zentrale Vermittlungsplattform zum Bereitstellen <strong>und</strong> Auffinden<br />

von Web Services dar. Er ermöglicht den Dienstkonsumenten einen Service nach bestimmten<br />

Kriterien zu suchen.<br />

Der Dienstkonsument (z.B. eine Person oder ein Softwareagent) möchte einen Dienst nutzen.<br />

Hierzu muss er zunächst den gewünschten Service beim Verzeichnisdienst suchen. Vorausgesetzt<br />

er findet einen Dienst mit der benötigten Funktionalität, erhält er vom Verzeichnisdienst


28<br />

Informationen zum Dienst – beispielsweise die Adresse des Dienstanbieters in Form <strong>einer</strong><br />

URL. Bei der Nutzung des Dienstes kann dadurch eine direkte Kommunikation zwischen<br />

Dienstkonsument <strong>und</strong> Dienstanbieter stattfinden, die auf standardisierten Anfragen <strong>und</strong> Antworten<br />

(in der Regel XML-kodiert) basiert. Der Dienst ist aus Sicht des Nutzers eine Black<br />

Box. Er kennt lediglich die zur Nutzung der Funktionalität benötigten Schnittstellen.<br />

Zur Kommunikation zwischen Dienstanbieter, Dienstkonsument <strong>und</strong> Verzeichnisdienst sind<br />

standardisierte Protokolle <strong>und</strong> Nachrichtenformate nötig. Zum Austausch der Anfragen <strong>und</strong><br />

Antworten hat sich das auf XML basierende SOAP (Simple Object Access Protocol) durchgesetzt.<br />

Die Beschreibung der Dienste samt ihrer Schnittstellen erfolgt mit der Web Services<br />

Description Language (WSDL). Als Standard für die Methoden des Verzeichnisdiensts zum<br />

Registrieren <strong>und</strong> Wiederauffinden der Dienste hat sich UDDI (Universal Description, Discovery<br />

and Integration) durchgesetzt. Durch die Festlegung auf herstellerunabhängige Standards<br />

(SOAP, WSDL <strong>und</strong> UDDI) wird das Nutzen von Web Services sowie die Integration vorhandener<br />

Web Services in neue Anwendungen erleichtert.<br />

2.4 Geo Web Service<br />

Eine besondere Klasse der Web Services sind die so genannten Geo Web Services. Ein Geo<br />

Web Service kann als Geodatenvermittler, -aufbereiter <strong>und</strong>/oder -verarbeiter angesehen werden.<br />

Geo Web Services bieten unter anderem die Möglichkeit, Geodaten mittels räumlicher<br />

Funktionen (distanz, länge, berührt etc.) abzufragen, zu analysieren oder zu bearbeiten (z.B.<br />

Anfordern aller Daten zu geographischen Objekten, die innerhalb Bayerns liegen).<br />

Das OpenGIS-Consortium (OGC) ist ein Zusammenschluss von Behörden, Universitäten sowie<br />

führenden Herstellern, Anbietern <strong>und</strong> Anwendern von Geoinformationssystemen <strong>und</strong><br />

Geodaten. OGC schafft offene Industriestandards, um Standardisierung <strong>und</strong> Interoperabilität<br />

im Geodaten- <strong>und</strong> GIS-Bereich voranzutreiben. Die OGC Spezifikationen (z.B. Web Feature<br />

Service oder Web Map Service Spezifikation) legen unter anderem Schnittstellen <strong>und</strong> Protokolle<br />

für Geo Web Services fest, die Basis für die Interoperabilität von Geodaten bzw. Geo<br />

Web Services mit anderen Anwendungen sind. Durch die Web Service Technologie sowie die<br />

standardisierten Interfaces der OGC Web Services <strong>und</strong> GML ist ein einfaches Arbeiten mit<br />

Geodaten im Netz ermöglicht worden. Der zuvor praktizierte Weg der Datenintegration mit<br />

aufwendigen Datenformatkonvertierungsprozessen <strong>und</strong> Aktualisierungsroutinen gehört seit<br />

dem Einsatz von Geo Web Services der Vergangenheit an.<br />

Besondere Herausforderungen, die ein Geo Web Service zu bewältigen hat, sind:<br />

• die performante Unterstützung räumlicher Anfragen oder Analysen<br />

• die Heterogenität der Geodatenformate (Shape, GML, SDO, TIFF etc.)


29<br />

• die Kopplung der Geodaten an unterschiedliche Raumbezugssysteme<br />

• das Datenvolumen sowie<br />

• die Verteiltheit der geographischen Daten<br />

Mit der Verteiltheit der Geodaten ist gemeint, dass diese in vielen räumlich getrennt liegenden<br />

staatlichen oder privaten Verwaltungseinheiten (z.B. Landesvermessungsämter, Kommunen,<br />

Telekom) erzeugt, gehalten <strong>und</strong> gepflegt werden. Nur so kann die Aktualität <strong>und</strong> Qualität<br />

der Geodaten gewährleistet werden. Daher müssen Geo Web Services in der Regel mehrere<br />

heterogene (z.B. RDBMS, XML-DB, Web Service…) <strong>und</strong> verteilt liegende Datenquellen für<br />

die Bearbeitung der Anfragen „konsultieren“.<br />

Zu den vielfältigen Einsatzmöglichkeiten von Geo Web Services gehören, um nur einige beispielhaft<br />

zu nennen (angelehnt an Leitfaden GIS 2003, S. 12-14):<br />

• Umweltschutz, Katastrophenschutz<br />

• Infrastrukturplanung, Ressourcenmanagement, Raumordnung<br />

• Auskunftsdienste <strong>einer</strong> Kommune (Gewerbeinformation, Liegenschaftsauskunft etc.)<br />

• Bauleitplanung (z.B. Bebauungsplan, Flächennutzungsplan)<br />

• Ver- <strong>und</strong> Entsorgung (z.B. Wasser-, Kanalkataster)<br />

• Ökologie (z.B. Bodenqualität, Emission)<br />

• Location-based Services<br />

• ...<br />

Allen Anwendungsbereichen gemein ist, dass Informationen mit Bezug zur Örtlichkeit –<br />

Raumbezug –vorliegen.<br />

2.5 Web Feature Service<br />

Als Beispiel für einen von OGC standardisierten Geo Web Service soll in dieser Arbeit der<br />

Web Feature Service (WFS) betrachtet werden. Ein Web Feature Service ist ein zustandsloser<br />

Dienst, der über das http Netzwerkprotokoll <strong>und</strong> standardisierte Schnittstellen das Abfragen,<br />

Einfügen, Modifizieren <strong>und</strong> Löschen von Geodaten, modelliert als GML-kodierte Features<br />

(vgl. 2.3 Geodaten <strong>und</strong> GML) ermöglicht. Anfragen an den WFS können sich dabei auf beliebige<br />

Eigenschaften der Features stützen, wodurch raumbezogene Selektion von Objektinstanzen<br />

bzw. teilen von Objektinstanzen möglich ist.<br />

Auf eine korrekt formulierte Anfrage (spezifiziert als XML Dokument oder über eine URL)<br />

bearbeitet der WFS die gewünschten Daten zu den Features in s<strong>einer</strong> zugr<strong>und</strong>e liegenden Datenbasis<br />

oder extrahiert selektierte Daten, sofern es sich um eine lesende Anfrage handelt <strong>und</strong>


30<br />

liefert diese z.B GML-kodiert an den Servicekonsumenten zurück. In der WFS Spezifikation<br />

(OGC WFS 1.0.0, S. 3) wird zwischen zwei Klassen des Web Feature Services unterschieden<br />

– Basic WFS <strong>und</strong> Transactional WFS.<br />

Ein Basic WFS muss die GetCapabilities-, DescribeFeatureType- <strong>und</strong> GetFeature-<br />

Operationen (s.u.) unterstützen. Durch diese Operationen ist es dem Nutzer des Dienstes möglich,<br />

lesend auf die angebotenen Geodaten zuzugreifen.<br />

Zusätzlich zu den Funktionen des Basic WFS unterstützt der Transactional WFS, wie der<br />

Name schon sagt, auch die Transaction-Operationen (s.u.). Dadurch können über den Dienst<br />

neue Geodaten in die Datenbasis aufgenommen <strong>und</strong> vorhandene Daten verändert oder gelöscht<br />

werden.<br />

GetCapabilities<br />

Der WFS muss in der Lage sein, seine Fähigkeiten <strong>und</strong> sein Datenangebot XML-basiert im so<br />

genannten WFS Capabilities Dokument beschreiben zu können, das als Antwort auf die Get-<br />

Capabilities Anfrage an einen WFS generiert wird. In diesem sind unter anderem Informationen<br />

zum Dienst (Version, Name, Beschreibung etc.), zu den verwendbaren Funktionen sowie<br />

allgemeine Informationen zu den bereitgestellten Features (z.B. Name, Titel, Beschreibung,<br />

Koordinatensystem) enthalten. Ein WFS Nutzer weiß anhand der Antwort auf die GetCapabilities<br />

Anfrage, wie er den Web Service ansprechen kann.<br />

DescribeFeatureType<br />

Die DescribeFeatureType Operation dient dem Abrufen detaillierter Informationen zu einem<br />

(oder mehreren) vom WFS unterstützten Feature(s). Der WFS liefert auf eine DescribeFeatureType<br />

Anfrage eine (oder mehrere) GML Schema Definition(en) (XSD Datei), in der die<br />

Struktur der angefragten Featuretypen definiert ist. Dadurch weiß der Web Service Nutzer,<br />

welche Daten zu einem Featuretyp vorhanden sind <strong>und</strong> auf welche Eigenschaften eines Featuretyps<br />

er seine Anfrage stützen kann. Zudem ist die Struktur der Antwort bekannt, wodurch<br />

die automatisierte Weiterverarbeitbarkeit der Antwort des WFS ermöglicht wird.<br />

GetFeature<br />

Über die GetFeature Anfrage werden gewisse Features oder Teile von diesen aus der Datenbasis<br />

des WFS selektiert <strong>und</strong> an den Nutzer zurückgegeben. Durch sie wird lesender Zugriff<br />

auf die vom WFS zur Verfügung gestellten Daten ermöglicht. Der Aufbau der Anfrage ist<br />

stark an die SQL Syntax angelehnt. In der Anfrage muss spezifiziert werden, auf welchen<br />

Featuretyp sich die Anfrage bezieht (SQL – z.B. from Gebäude). Zudem kann angegeben<br />

werden, welche Eigenschaften dieses Featuretyps abgerufen werden sollen (SQL – z.B. select<br />

Besitzer, Baujahr ). Durch die zusätzliche Deklaration von Filtern (vgl. OGC Filter<br />

Spec 1.0) werden nur bestimmte Features des angefragten Typs für die Generierung der Antwort<br />

berücksichtigt (SQL – z.B.: where Besitzer=“Schweizer Bank“). In den Filtern können<br />

komplexe logische, arithmetische, vergleichende <strong>und</strong> räumliche Operatoren gegebenenfalls<br />

kombiniert verwendet werden. Im Anhang A.2 ist exemplarisch eine GetFeature Anfrage auf


31<br />

den WFS des Beispielszenarios abgedruckt. Zusätzlich findet sich dort die auf die Anfrage resultierende<br />

Antwort des Dienstes.<br />

Transaction<br />

Durch die Transaktionsoperationen sind Änderungen an der Geodatenbasis durchführbar. Mit<br />

Hilfe entsprechender Transaktionen können Datenobjekte zu geographischen Features erzeugt,<br />

Daten zu diesen geändert oder gelöscht werden. Als Ergebnis erhält der Nutzer ein so<br />

genanntes WFS_TransactionResponse Dokument, das einen kurzen Statusreport zur abgesetzten<br />

Transaktionsoperation darstellt.<br />

LockFeature<br />

Im Transactional WFS können durch die LockFeature Operation einzelne Features für die<br />

Dauer der Transaktion mit <strong>einer</strong> Veränderungssperre (Lock) versehen werden. Dadurch können<br />

parallel ablaufende <strong>und</strong> länger andauernde, modifizierende Aktionen (einfügen, schreiben<br />

<strong>und</strong> löschen) auf dem WFS koordiniert werden. Die LockFeature Operation ist für die Gewährleistung<br />

des Transaktionsparadigmas (ACID) im Transactional WFS unverzichtbar.<br />

Das unten abgebildetem UML Sequenzdiagram (vgl. Abbildung 2.2) zeigt den Nachrichtenfluss<br />

zwischen dem Nutzer <strong>und</strong> dem WFS wenn dieser besipielsweise eine GetFeature Operation<br />

auf dem WFS ausführen möchte.<br />

WFS<br />

<br />

<br />

<br />

<br />

<br />

<br />

Abbildung 2.2 Nachrichtenfluss bei lesendem Zugriff auf einen WFS<br />

Aus Sicht eines Zugriffskontrollsystems sind die Operationen GetCapabilities sowie DescribeFeatureType<br />

uninteressant. Sie fragen nur Metadaten vom WFS ab, die keine sensiblen Da-


32<br />

ten enthalten. Sie werden daher im weiteren vernachlässigt. Erwähnt sei allerdings, dass es<br />

zum Schutz vor Denial-of-Service Attacken dennoch sinnvoll sein kann, diese Aktionen auf<br />

Autorisation zu prüfen.<br />

Detailliertere Informationen zum WFS, sowie Beispiele zu den einzelnen Anfragen sind in<br />

der Web Feature Service Implementation Specification (OGC WFS 1.0.0) zu finden.<br />

Zur Illustration des WFS <strong>und</strong> als Gr<strong>und</strong>lage für sämtliche Beispiele in dieser Arbeit wird im<br />

Anhang A ein Anwendungsszenario vorgestellt. Neben der Beschreibung des Beispielszenarios<br />

<strong>und</strong> des GML Anwendungsschemas (A.1) ist dort exemplarisch eine GetFeature Anfrage<br />

an den WFS des Anwendungsfalls <strong>und</strong> die entsprechenden WFS Antworten abgedruckt (A.2).


33<br />

3 Zugriffskontrolle<br />

Unter Zugriffskontrolle versteht man den Prozess der Entscheidungsfindung, ob eine Aktion<br />

auf ein Objekt gewährt oder abgelehnt werden soll. Zugriffskontrolle hat zur Folge, dass ausschließlich<br />

autorisierter Zugriff auf die Objekte stattfinden kann. Durch die Zugriffspolice<br />

wird im Zugriffskontrollsystem die Semantik der Zugriffsrechte festgelegt. Sie steuert das Ergebnis<br />

der Zugriffskontrolle. Auf welche Art <strong>und</strong> Weise Zugriffsrechte definiert werden können,<br />

ist von dem Konzept der Zugriffskontrolle abhängig. Durch den Zugriffskontrollmechanismus<br />

wird der Zeitpunkt sowie die Technik zur Durchsetzung der Zugriffskontrolle definiert.<br />

In Kapitel 3.1 wird ein Überblick über die wesentlichen Begriffe <strong>und</strong> Konzepte im Zusammenhang<br />

mit Zugriffskontrolle gegeben. Danach werden in 3.2 verschiedene Zugriffskontrollmechanismen<br />

vorgestellt. Parallel dazu werden die Stärken <strong>und</strong> Schwächen der Ansätze<br />

aufgeführt. Im Anschluss werden die Mechanismen hinsichtlich ihrer Eignung zur Umsetzung<br />

von Zugriffskontrolle für Geo Web Services betrachtet.<br />

3.1 Gr<strong>und</strong>legende Begriffe <strong>und</strong> Konzepte<br />

3.1.1 Subjekt, Aktion <strong>und</strong> Objekt<br />

Der erste Schritt beim Entwurf eines Zugriffskontrollsystems ist die Identifikation der zu<br />

schützenden Objekte (auch Ressourcen genannt), die Identifikation der Aktionen (z.B. lesen,<br />

modifizieren, löschen) auf den Objekten sowie die Identifikation der Subjekte (aktive Elemente<br />

im System; z.B. Personen, Softwareagenten, Prozesse etc.), die Aktionen auf den Objekten<br />

ausführen. In Abhängigkeit des Anwendungsgebietes können diese Basiseinheiten verschiedenster<br />

Art sein. Im Kontext von Betriebssystemen können Objekte beispielsweise Dateien<br />

oder Prozesse, bei Datenbanken dagegen Tabellen oder ihre Felder sein. Da in dieser<br />

Arbeit Zugriffskontrolle für Geo Web Services betrachtet wird, handelt es sich bei den zu<br />

schützenden Objekten um XML/GML Dokumente (genauer: um durch XPath spezifizierte<br />

Knotenmengen der dynamisch generierten Dokumente – siehe 3.1.2).<br />

Im Zugriffskontrollsystem gilt es Zugriffsrechte festzulegen. Diese drücken aus, wann welches<br />

Subjekt welche Aktion auf welchem Objekt ausführen darf.<br />

Eine Möglichkeit, diese Zugriffrechte konzeptuell zu beschreiben, ist das Zugriffsmatrixmodell.<br />

Das zuerst von Lampson (Lampson 1974, S. 18-24) im Kontext von Betriebssystemen<br />

vorgeschlagene Modell dient zur Festlegung aller in einem Zugriffskontrollsystem existieren-


34<br />

den Autorisationen. Es wurde später von Graham <strong>und</strong> Denning verf<strong>einer</strong>t <strong>und</strong> von Harrison,<br />

Ruzzo <strong>und</strong> Ullmann (HRU Modell) (Summers 1997) weiter formalisiert.<br />

Wie der Name Zugriffsmatrixmodell schon sagt, werden die Zugriffsmodi in <strong>einer</strong> Matrix gespeichert.<br />

Die Konfiguration des Zugriffskontrollsystems wird durch ein Dreiertupel (S, O, A) beschrieben.<br />

S steht dabei für die Menge an Subjekten, die Aktionen ausführen können. O stellt die<br />

Menge an zu schützenden Objekten dar. A ist die Zugriffskontrollmatrix, in der eine Zeile ein<br />

Subjekt <strong>und</strong> eine Spalte ein Objekt repräsentiert. Ein Eintrag in dieser Matrix A[s,o] drückt<br />

die Zugriffsmodi von s 6 auf o 6 aus.<br />

Beispiel <strong>einer</strong> Zugriffskontrollmatrix:<br />

Datei A Datei B Programm XY<br />

Eva lesen, schreiben ausführen<br />

Max<br />

lesen, schreiben<br />

Paul<br />

lesen<br />

Obwohl das Matrixmodell ein gutes Konzept für ein Zugriffskontrollsystem darstellt, ist es<br />

für <strong>Implementierung</strong>en nicht direkt geeignet, da der dafür nötige zweidimensionale Array<br />

groß ist <strong>und</strong> zugleich viele leere Felder enthält. Praktische <strong>Implementierung</strong>en sind daher:<br />

Autorisationstabelle (engl. Access Control Table - ACT):<br />

Man speichert vorliegende Autorisationen in <strong>einer</strong> Tabelle mit drei Spalten (Subjekt, Aktion,<br />

Objekt).<br />

Subjekt Aktion Objekt<br />

Eva lesen Datei A<br />

Eva schreiben Datei A<br />

Eva ausführen Programm XY<br />

Max lesen Datei B<br />

Max schreiben Datei B<br />

Paul lesen Datei A<br />

Zugriffskontrollliste (engl. Access Control List - ACL):<br />

In <strong>einer</strong> ACL wird die Matrix spaltenweise gespeichert. Dies bedeutet, dass zu jedem Objekt<br />

eine Liste gehalten wird, in der zu den jeweiligen Subjekten die Aktionen gespeichert werden,<br />

6 ein Element der entsprechenden Menge


35<br />

die das entsprechende Subjekt auf diesem Objekt ausführen darf (s.u.). Dieses Verfahren wird<br />

beispielsweise in Unix/Linux Betriebssystemen verwendet (Gallagher 1987).<br />

Datei A<br />

Eva<br />

lesen<br />

schreiben<br />

Paul<br />

lesen<br />

nil<br />

Capability Lists:<br />

Die Matrix wird zeilenweise gespeichert. Das heißt, dass je Subjekt eine Liste verwaltet wird,<br />

in der zu jedem Objekt die für ihn ausführbaren Aktionen gespeichert werden.<br />

Eva<br />

Datei A<br />

lesen<br />

schreiben<br />

Programm XY<br />

ausführen<br />

nil<br />

Welche der oben genannten Speichervarianten für die Zugriffskontrollmatrix zu verwenden<br />

ist, hängt vom Anwendungsfall ab. Sowohl die ACLs als auch die Capability Lists haben ihre<br />

Vor- <strong>und</strong> Nachteile. Mit ACLs können schnell die Autorisationen je Objekt herausgef<strong>und</strong>en<br />

werden. Möchte man allerdings sämtliche Autorisationen zu einem Subjekt abfragen, dann<br />

müssen zuerst alle ACLs durchsucht werden. Die umgekehrte Situation liegt bei den Capability<br />

Lists vor. Hier sind alle Autorisationen je Subjekt direkt auffindbar. Zur Bestimmung der<br />

Zugriffsrechte zu einem Objekt müssen allerdings alle Capabilities durchsucht werden.<br />

Wie Kapitel 3.1.2 zeigen wird, ist das Matrixmodell allerdings nicht mächtig genug, um Autorisationen,<br />

die in einem Zugriffskontrollsystem für Geo Web Services benötigt werden, beschreiben<br />

zu können.<br />

3.1.2 Konzepte <strong>und</strong> Strategien für Zugriffskontrolle bei Web Services<br />

Aufgabenstellung dieser Arbeit ist es, ein Konzept zur Realisierung raumbezogener Zugriffskontrolle<br />

für Geo Web Services zu entwickeln. In diesem Kontext handelt es sich bei den zu<br />

schützenden Objekten um dynamisch generierte XML/GML Dokumente, da davon ausgegan-


36<br />

gen wird, dass der Geo Web Service XML als Anfrage- <strong>und</strong> Antwortformat unterstützt. Ein<br />

GML/XML Dokument ist ein hierarchisches Objekt, das aus vielen Bausteinen – den Knoten<br />

– besteht. Seitens eines Zugriffskontrollsystems kann das Objekt (die XML Datei) unterschiedlich<br />

granular behandelt werden. Man muss zwischen Performance bzw. Administrierbarkeit<br />

<strong>und</strong> möglichst feingranularer Rechtevergabe abwägen. Je differenziertere die<br />

Zugriffskontrolle umso eher kann ein Nutzer unnötig Zugriff bekommen oder aber der Zugriff<br />

verweigert werden obwohl er ihn benötigt. Demgegenüber werden bei grob granularer<br />

Zugriffskontrolle unnötige Zugriffsrechte vergeben. Idealer weise sollten bei der Festlegung<br />

der Zugriffsrechte ein minimalistisches Prinzip verfolgt werden. Nutzer sollen nur minimale<br />

Zugriffsrechte haben d.h nur zu dem autorisiert sein was sie auch wirklich benötigen <strong>und</strong> dürfen.<br />

In dieser Arbeit sollen Objekte so detailliert wie möglich geschützt werden, wodurch minimale<br />

Privilegien umsetzbar sind. Das bedeutet für das im Folgenden vorgestellte Zugriffskontrollsystem,<br />

dass für jeden Knoten des dynamisch generierten Dokumentes Zugriffsrechte<br />

deklariert werden können. Man spricht in diesem Zusammenhang von feingranularer<br />

Zugriffskontrolle.<br />

Wie die Zugriffsrechte für die Knoten eines dynamisch generierten XML/GML Dokumentes<br />

beschrieben werden können, hängt davon ab, welches Konzept das Zugriffskontrollsystem<br />

verfolgen soll. Gängige Ansätze sind:<br />

Kontextabhängige Zugriffskontrolle<br />

Unter kontextabhängiger bzw. -basierter Zugriffskontrolle versteht man die Vergabe von<br />

Zugriffsrechten, die abhängig vom Ausführungskontext sind. Der Kontext entspricht dem Zustand<br />

des Systems zum Zeitpunkt des Zugriffs sowie den vorangegangenen Ereignissen. Kontextabhängige<br />

Zugriffsrechtdeklarationen sind beispielsweise:<br />

• Ein Bankangestellter darf nur zwischen 9 <strong>und</strong> 18 Uhr auf die K<strong>und</strong>endaten zugreifen<br />

• Ein Auszubildender <strong>einer</strong> Bank darf nur 100 Überweisungen pro Tag durchführen<br />

Inhaltsabhängige Zugriffskontrolle<br />

Inhaltsabhängige Zugriffskontrolle ist ein Mittel, um Zugriff von Nutzern auf Objekte in Abhängigkeit<br />

deren Inhalts kontrollieren zu können. Dadurch können gezielt sensible Daten der<br />

Datenquelle geschützt werden. Ein Beispiel für inhaltsabhängige Zugriffsrechtevergabe ist<br />

folgende Autorisation:<br />

Ein Bankangestellter darf den Kontostand der K<strong>und</strong>en sehen, wenn er kl<strong>einer</strong> 10 Millionen<br />

Euro ist.<br />

Der Preis für die Mächtigkeit <strong>und</strong> Flexibilität inhaltsabhängiger Zugriffskontrolle ist, dass bei<br />

der Zugriffskontrolle die Daten zu allen von der Interaktion betroffenen Objekten gelesen<br />

werden müssen, um eine Zugriffsentscheidung treffen zu können. Außerdem können kompli-


37<br />

zierte Zugriffsrechte ausgedrückt werden, wodurch der Verwaltungsaufwand der Zugriffsrechte<br />

im System ansteigt.<br />

Raumbezogene Zugriffskontrolle<br />

Eine Zugriffskontrolle für Geo Web Services erfordert ebenso die Deklaration von raumbezogenen<br />

Autorisationen. Diese sind ein Sonderfall der inhaltsbezogenen Zugriffskontrolle. Sofern<br />

die zu schützenden Objekte raumbezogene Daten enthalten, können zum Schutz der Daten<br />

zu den Objekten raumbezogene Zugriffsrechte spezifiziert werden, die sich auf die raumbezogenen<br />

Eigenschaften der Objekte stützen. Beispielsweise könnte man festlegen, dass für<br />

Nutzer XY alle Daten zu Gebäudeobjekten, die innerhalb Deutschlands liegen, lesend zugreifbar<br />

sind.<br />

Identitätsbasierte Zugriffskontrolle<br />

Bei der identitätsbasierten Zugriffskontrolle legt ein System Security Officer 7 (SSO) Zugriffsrechte<br />

für alle Subjekt fest. In der Praxis ergibt sich allerdings häufig das Problem, dass es für<br />

den SSO kaum möglich ist zu wissen, was für jeden einzelnen Nutzer erlaubt sein soll, geschweige<br />

denn die Zugriffsrechte dementsprechend zu konfigurieren <strong>und</strong> aktuell zu halten.<br />

Der Ansatz eignet sich daher eher für die Spezifikation von Zugriffsrechten auf grobgranularer<br />

Ebene. Darunter wird verstanden, dass die durch Zugriffsrechte zu schützenden Objekte<br />

„atomare“ Abstraktionen von Datenmengen darstellen. Das Objekt sind nicht die Knoten des<br />

XML Dokumentes, sondern die XML Datei. Daher existieren in einem grobgranularen<br />

Zugriffskontrollsystem nur wenige Objekte.<br />

Eine Erweiterung der identitätsbasierten Zugriffskontrolle ist das Konzept der Nutzergruppen.<br />

Gruppen stellen hierbei eine hierarchisch organisierte Abstraktion individueller Subjekte dar,<br />

müssen nicht disjunkt sein <strong>und</strong> können geschachtelt sein. Sie vereinfachen die Verwaltung der<br />

Autorisationen, da eine Autorisation für eine Gruppe den einzelnen Autorisationen für jedes<br />

Mitglied entspricht. Das Konzept der Nutzergruppen kann in analoger Weise auf Objekte <strong>und</strong><br />

Aktionen angewendet werden.<br />

Rollenbasierte Zugriffskontrolle<br />

Bei dieser Art der Zugriffskontrolle werden die Zugriffsrechte über Rollen vergeben. Für eine<br />

Rolle wird der Zugriff auf bestimmte Objekte durch gewisse Aktionen festgelegt. Indem jedem<br />

Nutzer einzeln beliebige Rollen zugewiesen werden, bekommt dieser die Zugriffsrechte<br />

der entsprechenden Rollen übertragen. Damit lassen sich die Zugriffsrechte hierarchisch organisieren.<br />

Der Unterschied <strong>einer</strong> Rolle gegenüber <strong>einer</strong> Gruppe ist, dass eine Gruppe eine<br />

Menge von Subjekten, eine Rollen dagegen eine Menge an Zugriffsrechten darstellt. Dadurch<br />

7 Ein Administrator, der dafür zuständig ist, den Zugriff auf die Daten oder die Dienste des Web Services zu<br />

regulieren.


38<br />

ergibt sich im Vergleich zur identitätsbasierten Zugriffskontrolle ein Vorteil für die Verwaltung<br />

der Zugriffsrechte, da beim rollenbasierten Ansatz die Zugriffsrechte <strong>einer</strong> Rolle (z.B.<br />

die Auszubildenden <strong>einer</strong> Firma) stabiler sind als die Zugriffsrechte eines bestimmten Auszubildendens,<br />

der bei jeder Beförderung mehr Zugriffsrechte bekommt.<br />

Um Ausnahmen in Rollen auszudrücken, müssen neue Rollen festgelegt werden. Je f<strong>einer</strong> <strong>und</strong><br />

komplexer das Regelwerks sein soll, umso mehr verkompliziert sich die Verwaltung der Rollen.<br />

Für detailliertere Informationen zu rollenbasierter Zugriffskontrolle siehe z.B. RBAC<br />

1996.<br />

Regelbasierte Zugriffskontrolle<br />

Ein Regelwerk, auch Police genannt, ist eine Menge an Regeln, welche die Zugriffsrechte eines<br />

Subjekts auf ein Objekt unter gewissen Bedingungen beschreibt (z.B. Ein Bankangestellter<br />

darf den Kontostand der K<strong>und</strong>en sehen, wenn er kein Auszubildender ist). Eine Zugriffsregel<br />

ist durch folgendes Tupel definiert:<br />

(Effekt, Subjekt, Aktion, Objekt, Bedingung)<br />

• Effekt (auch Vorzeichen der Regel genannt)<br />

o „Zugriff verboten“ (entspricht negativer Autorisation/Regel, Ablehnung oder engl.<br />

deny)<br />

o „Zugriff erlaubt“ (entspricht positiver Autorisation/Regel, Erlaubnis oder engl.<br />

permit)<br />

o „nicht auswertbar“ bzw. unbestimmt (engl. indeterminate)<br />

• Für welches Subjekt (bzw. für welche Rolle oder welchen Nutzer) gilt die Regel?<br />

• Für welche Aktion gilt die Regel (z.B. lesen, schreiben oder einfügen)?<br />

• Welche Objekte soll die Regel schützen (z.B. Elementknoten im XML Baum)?<br />

• Beliebige Bedingungen (kontextabhängig, inhaltsabhängig etc.), die erfüllt sein müssen,<br />

wenn die Regel angewendet werden soll<br />

Für Regelbeispiele in den Ausführungen dieses Kapitels wird eine Pseudosyntax zur syntaktischen<br />

Repräsentation der Autorisationen verwendet, die dem obigen Tupel entspricht – z.B.<br />

(+, Eva, lesen, /Objekt/Gebäude, falls Werktag). Zur Vereinfachung wird allerdings der Subjekt<br />

<strong>und</strong> Aktion Teil weggelassen, da er für die Beispiele irrelevant ist.<br />

Zu jeder Aktion eines Subjekts muss in einem regelbasierten Zugriffskontrollsystem zunächst<br />

geprüft werden, ob passende Regeln existieren. Diese müssen dann ausgewertet werden <strong>und</strong><br />

je nach Effekt der Regeln kann man die Zugriffsentscheidung bestimmen. Sofern zu <strong>einer</strong> Aktion<br />

mehrere Regeln greifen, müssen die Effekte der anwendbaren Regeln durch einen zu spezifizierenden<br />

Algorithmus (z.B. deny-overrides, fist-applicable etc.; eine Auflistung mit ausführlicher<br />

Beschreibung findet sich beispielsweise in Jajodia 2001, S. 22 <strong>und</strong> 23 oder<br />

XACML Spec 1.1, S. 124-132) kombiniert werden, um die Zugriffsentscheidung bestimmen<br />

zu können.


39<br />

Tritt bei der Auswertung <strong>einer</strong> Regel ein Fehler auf (z.B. eine Bedingung der Regel kann aufgr<strong>und</strong><br />

fehlender Informationen nicht ausgeführt werden), so ist der Effekt der Regel „nicht<br />

auswertbar“.<br />

Aus Sicht <strong>einer</strong> zugriffsgeschützten XML Dokumentinstanz gibt es für jeden Knoten eine<br />

Menge an Regeln, die sich auf diesen beziehen. Andererseits kann sich eine Regel auf einen<br />

oder mehrere Knoten in dem vom Web Service Nutzer angeforderten XML Dokument beziehen.<br />

Regeln werden in <strong>einer</strong> eindeutig definierten Sprache spezifiziert, die ausreichend mächtig<br />

sein muss, um die benötigten Autorisationen einfach ausdrücken zu können. Neben der Sprache<br />

zur Beschreibung des Regelwerkes muss ein Zugriffskontrollmechanismus zur Durchsetzung<br />

des Regelwerkes existieren. Dieser ist dafür zuständig, bei Aktionen der Subjekte den<br />

Prozess der Zugriffskontrolle, d.h. die Identifikation der relevanten Regeln sowie deren Auswertung,<br />

einzuleiten.<br />

Diskrete <strong>und</strong> verpflichtende Zugriffskontrolle<br />

Ein weiteres Charakteristikum zur Klassifizierung eines Zugriffskontrollsystems ist die Art<br />

<strong>und</strong> Weise wie Zugriffsrechte im System vergeben werden. Man unterscheidet zwischen der<br />

Vergabe von Rechten durch die Nutzer bzw. die Eigentümer der Daten (diskrete Zugriffskontrolle<br />

– engl. Discretionary Access Control – DAC) <strong>und</strong> der systemglobalen Vergabe (verpflichtende<br />

Zugriffskontrolle – engl. Mandatory Access Control – MAC) (vgl. z.B. Gallagher<br />

1987). Bei der DAC Strategie wird die Steuerung des Zugriffs auf die Daten dem Eigentümer<br />

selbst überlassen. Ein bekanntes Beispiel für DAC sind Linux Dateisysteme. Der Besitzer <strong>einer</strong><br />

Datei kann den Zugriff auf diese nach Belieben regulieren. Bei der MAC Strategie haben<br />

die Nutzer nicht die Möglichkeit, die Police zu ändern. Ein oder mehrere SSOs legen für das<br />

gesamte System eine verpflichtende Zugriffssemantik fest, die immer erfüllt sein muss. Subjekte<br />

dürfen ihre Zugriffsrechte nicht an andere Subjekte weitergeben (siehe hierzu z.B. Tannenbaum<br />

2002, Eckert 2002, ITSEC 2001).<br />

Regelwerke müssen aber keineswegs entweder die MAC oder die DAC Strategie verfolgen.<br />

Oft bietet es sich an, einen Teil des Regelwerkes verpflichtend – also durch MAC – abzubilden<br />

<strong>und</strong> den Rest über DAC auszudrücken. Konsequenz der Koexistenz verpflichtender <strong>und</strong><br />

diskreter Regeln ist es, dass erstere vorrangig zu behandeln sind, um die MAC Strategie tatsächlich<br />

gewährleisten zu können. In einem regelbasierten Zugriffskontrollsystem sind beispielsweise<br />

sowohl die MAC als auch die DAC Strategie umsetzbar. Zur Koordination der<br />

Vergabe der Zugriffsrechte ist allerdings ein zweites Regelwerk nötig. Dessen Regeln drücken<br />

aus, welche Subjekte welche Zugriffsregeln – dies sind die zu schützenden Objekte – für<br />

die Datenobjekte spezifizieren oder modifizieren dürfen.


40<br />

Neben dem Konzept für das Zugriffskontrollsystem gilt es festzulegen, welches Verhalten ein<br />

Zugriffskontrollsystem, das feingranulare Zugriffskontrolle ermöglicht, bei teilweise unautorisierten,<br />

lesenden Zugriffen eines Nutzers auf Objekte zeigt. Es stehen zwei Alternativen zur<br />

Auswahl, welches Ergebnis ein Zugriffskontrollsystem für einen Web Service an den Servicenutzer<br />

zurückliefern soll, wenn dieser nicht ausreichende Zugriffsrechte besitzt.<br />

1. „So viel wie geht“ Prinzip<br />

Bei <strong>einer</strong> lesenden Aktion erhält der Nutzer die Schnittmenge aus angefragten <strong>und</strong> rechtlich<br />

zugreifbaren Daten.<br />

2. „Alles oder nichts“ Prinzip<br />

Als Antwort auf die lesende Aktion erhält der Nutzer eine schlichte Fehlermeldung:<br />

„Zugriff verboten“<br />

Zur Verdeutlichung der Prinzipien folgendes kleines Beispiel:<br />

Ein Bankangestellter will über einen WFS die Daten zu Bankautomaten abrufen. Er ist allerdings<br />

nicht autorisiert die Eigenschaft „kameraüberwacht“ der Bankautomaten Instanzen abzufragen.<br />

Möchte der Bankangestellte nun alle Daten zu den Bankautomaten sehen, so würde<br />

die Zugriffskontrolle nach dem „So viel wie geht“ Prinzip alle Eigenschaften außer „kameraüberwacht“<br />

anzeigen. Bei der „Alles oder nichts“ Alternative dagegen wäre der komplette<br />

Datensatz zu den Bankautomaten zugriffsbeschränkt.<br />

Prinzip 1 stellt im Vergleich zu Prinzip 2 eine Obermenge an Herausforderungen für das<br />

Zugriffskontrollsystem dar. Zudem kann jedes Zugriffskontrollsystem, das Prinzip 1 realisieren<br />

kann, ebenfalls Prinzip 2 unterstützen. Daher wird in dem in dieser Arbeit vorgestellten<br />

Zugriffskontrollsystem das Prinzip 1 gefordert.<br />

Wie die unterschiedlichen Konzepte zeigen, ist das in 3.1.1 vorgestellte Matrixmodell nicht<br />

ausreichend mächtig, um die Zugriffsrechte, die durch regelbasierte Zugriffskontrolle ausgedrückt<br />

werden können (z.B. inhaltsabhängige oder raumbezogene Autorisationen), zu beschreiben.<br />

Mit dem Konzept der regelbasierten Zugriffskontrolle ist es möglich, sowohl kontextabhängige<br />

als auch inhaltsabhängige bzw. raumbezogene Zugriffsrechte zu beschreiben.<br />

Der Bezug zum Kontext oder Inhalt eines Objektes kann in den Bedingungen der Regeln ausgedrückt<br />

werden (z.B. wenn die Aktion von Nutzer XY zwischen 9 <strong>und</strong> 18 Uhr stattgef<strong>und</strong>en<br />

hat, dann ist ihm der Zugriff auf ein Objekt A gestattet). Zudem kann die Rechtevergabe zentral<br />

oder dezentral (MAC vs. DAC Strategie) erfolgen. Des weiteren kann mittels regelbasierter<br />

Zugriffskontrolle eine identitätsbasierte oder rollenbasierte Zugriffskontrolle erreicht werden.<br />

Das Subjekt ist dann je nach Ansatz ein Nutzer, eine Gruppe oder eine Rolle. Zur Vereinfachung<br />

der Formulierungen in dieser Arbeit ist stets von Nutzern die Rede. Es ist allerdings<br />

problemlos möglich den Begriff Nutzer mit dem Begriff Rolle oder Gruppe zu ersetzen.


41<br />

Aufgr<strong>und</strong> der Mächtigkeit regelbasierter Zugriffskontrolle basiert das in dieser Arbeit entwickelte<br />

Zugriffskontrollsystem für Geo Web Services auf diesem Konzept. Neben dem Konzept<br />

des Zugriffskontrollsystems muss ein Mechanismus festgelegt werden, der vorgibt wann<br />

<strong>und</strong> wie die Zugriffsrechte bzw. –regeln überprüft werden. Hierfür stehen zahlreiche Mechanismen<br />

zur Verfügung, die im folgenden Abschnitt diskutiert werden sollen.<br />

3.2 Klassifizierung von Zugriffskontrollmechanismen<br />

Für das in dieser Arbeit entwickelte Zugriffskontrollsystem wird regelbasierte Zugriffskontrolle<br />

zum Schutz der dynamisch generierten XML/GML Dokumente verwendet. Wie das<br />

Zugriffskontrollsystem die im Regelwerk beschriebenen Autorisationen im Anwendungsszenario<br />

Geo Web Service überprüfen kann, wird durch den Zugriffskontrollmechanismus festgelegt.<br />

Da zahlreiche Zugriffskontrollmechanismen zur Verfügung stehen, sollen zunächst die<br />

populärsten Mechanismen vorgestellt werden.<br />

Bei der Durchführung der Zugriffskontrolle für Web Services sind drei unabhängige Begriffe<br />

von entscheidender Bedeutung.<br />

1. Die Anfrage (engl. Query) Q – diese stellt die Anfrage des Nutzers dar <strong>und</strong> beschreibt,<br />

welche Datenobjekte von der Interaktion betroffen sind.<br />

2. strukturierte Daten D – z.B. Knoten im XML Dokument<br />

3. Regeln R, welche die Zugriffskontrolle definieren.<br />

Betrachtet man diese drei Begriffe als die Operanden, so kann man dazu drei mögliche Operationen<br />

festlegen (AC Mech 2004, S.6).<br />

• D’ = evalQuery(Q, D)<br />

Der „evalQuery“ Operator stellt die Evaluation <strong>einer</strong> Anfrage Q auf eine Datenquelle D<br />

dar. Handelt es sich um einen sicheren Query (Definition: seine Auswertung liefert nur<br />

zugreifbare Daten) oder sind D ausschließlich zugreifbare Daten, so sind in D’ nur zugreifbare<br />

Daten.<br />

• D’ = evalRule(R, D)<br />

Der „evalRule“ Operator stellt die Auswertung <strong>einer</strong> Regelmenge R auf die Datenquelle<br />

D dar. Ergebnis ist eine Datenmenge D’. Dadurch wird die für einen Nutzer zugängliche<br />

Datenmenge beschrieben.<br />

• Q’ = merge(Q, R)<br />

Der „merge“ Operator modifiziert den Query in der Art, dass er nur mehr zugreifbare Daten<br />

zurückliefert. Q’ liefert also eine Datenmenge, die <strong>einer</strong> Schnittmenge aus angeforderten<br />

<strong>und</strong> rechtlich zugänglichen Daten entspricht.


42<br />

Diese Operatoren können durch gewöhnliche Mengenoperationen in beliebiger Weise verknüpft<br />

bzw. verschachtelt werden.<br />

Durch dieses syntaktische Beschreibungsmittel kann nun leicht die Gr<strong>und</strong>idee hinter den einzelnen<br />

Varianten der Zugriffskontrollmechanismen beschrieben werden.<br />

Zur Einordnung der unterschiedlichen Mechanismen wird folgende Klassifizierung eingeführt<br />

(angelehnt an AC Mech 2004, S 7):<br />

1. evalQuery(Q, evalRule(R, D)) – Auswertung von Q auf der zugreifbaren Datenmenge<br />

2. evalQuery(merge(Q, R), D) – Erzeugung eines sicheren Q <strong>und</strong> Auswertung auf D<br />

3. evalRule(R, evalQuery(Q, D) – Überprüfung der Regeln auf den angefragten Daten<br />

4. evalQuery(Q, D) ∩ evalRule(R, D) – Schnitt der zugreifbaren <strong>und</strong> angefragten Daten<br />

3.2.1 Built-in Ansatz – Integration der Zugriffskontrolle in das DBMS<br />

Query<br />

Web Service<br />

autorisierte Daten<br />

DBMS mit Unterstützung feingranularer,<br />

inhaltsabhängiger<br />

Zugriffskontrolle<br />

Abbildung 3.1 Schema des Built-in Ansatzes 8<br />

Geht man davon aus, dass Web Services ihre Daten in einem DBMS halten, so ist in diesem<br />

die Umsetzung der Zugriffskontrolle möglich. Die Zugriffsrechte werden in ACTs (vgl. 3.1.1)<br />

gespeichert, die im DBMS verwaltet werden. Die Idee ist, jeden Knoten eines XML Dokumentes<br />

– d.h. ein Datenfeld in der DB – mit <strong>einer</strong> ACT zu verknüpfen. Die Komplexität dieses<br />

Ansatzes steckt zum einen in der Verwaltung der ACTs (ändert sich der Nutzerbestand,<br />

der Datenbestand oder die Zugriffsrechte, so müssen die ACTs erneuert werden), zum anderen<br />

kommt bei jeder Anfrageauswertung ein zusätzlicher Aufwand durch die Auswertung der<br />

relevanten ACTs hinzu. Ungeklärt ist, wie Vererbung von Zugriffsrechten zwischen den Knoten<br />

des XML-Baumes organisiert werden soll oder wie eine Verwaltung der Zugriffsrechte<br />

durch mehrere SSOs realisiert werden kann. Eine detaillierte Ausführung dieser Probleme<br />

8 Für alle Graphiken in diesem Abschnitt wurde eine einheitliche Farbwahl verwendet. Rot markiert auf<br />

Zugriffsrechte zu überprüfende Anfragen bzw. Daten. Blau wurde für Einheiten der Zugriffskontrolle verwendet.<br />

Grün stellt autorisierte Elemente dar.


43<br />

findet sich in Twig Queries 2002. Es stellt sich die Frage, ob Datenbanken eine inhaltsabhängige,<br />

feingranulare Zugriffskontrolle für XML Daten effizient verwalten <strong>und</strong> unterstützen<br />

können. Bis dato gibt es noch keine kommerziell verfügbaren XML Datenbanken, die eine<br />

umfassende Zugriffskontrolle ermöglichen (AC Mech 2004, S.8).<br />

Ferner ist dieser Ansatz für Web Services aus zwei weiteren Gründen ungeeignet:<br />

1. Es kann nicht davon ausgegangen werden, dass alle (Geo)Daten eines (Geo) Web Services,<br />

ausschließlich aus Datenquellen stammen, die eine integrierte Zugriffskontrolle besitzen.<br />

2. Zugriffsregeln für Web Services beziehen sich auf alle vom online Dienst angebotenen<br />

Daten. Da Dienste oft mehrere Datenbanken verwenden, müssen in jeder eingeb<strong>und</strong>enen<br />

Datenbank alle für den Dienst deklarierten Zugriffsregeln bekannt sein. Bei Datenbanken<br />

<strong>einer</strong> fremden Organisation ist dies nicht umsetzbar. Es kann daher der Schluss gezogen<br />

werden, dass die Zugriffsregeln auf Web Service Ebene gehalten, gepflegt <strong>und</strong> umgesetzt<br />

werden müssen.<br />

Gemäß der oben eingeführten Klassifizierung kann man diesen Ansatz der Klasse (1):<br />

evalQuery(Q, evalRule(R, D))<br />

zuordnen.<br />

3.2.2 Instance-Tagging Ansatz<br />

Unter der Vorraussetzung, dass die Zugriffsregeln <strong>und</strong> XML Daten am gleichen Ort vorliegen,<br />

können die Element- <strong>und</strong> Attributknoten der XML Dokumente direkt um Sicherheits-<br />

Markup erweitert werden. Ergänzend oder alternativ kann man das XML Schema, welches<br />

den XML Dokumenten zugr<strong>und</strong>e liegt, ausnutzen, um darin Zugriffsrechte per Sicherheitsmarkup<br />

9 zu deklarieren (Damiani 2001, S. 3). Dadurch sind Autorisationen auf Basis der<br />

Schema-Knoten, unabhängig von der konkreten Dokumentinstanz, möglich. Während<br />

Zugriffsrechte, die sich auf das XML Schema beziehen, besonders geeignet sind, um allgemeingültige<br />

Regeln festzulegen (z.B. Autorisationen, die für eine ganze Firma gelten sollen),<br />

ermöglicht ein Sicherheits-Markup in den konkreten Dokumentinstanzen eine individuelle<br />

Verf<strong>einer</strong>ung der Zugriffsrechte (z.B. unterschiedliche Einschränkungen je Abteilung).<br />

Wurden die XML Daten <strong>und</strong>/oder das Schema mit Sicherheits-Markup versehen, dann müssen<br />

bei <strong>einer</strong> Anfrage auf Knoten im XML Dokument die entsprechenden Zugriffsrechte-Tags<br />

überprüft werden.<br />

Problem dieser Vorgehensweise ist, dass die XML Dokumentinstanzen durch die Tags, welche<br />

die Zugriffsregeln ausdrücken, „verunreinigt“ werden. Zudem ist ersichtlich, dass diese<br />

Variante des Zugriffskontrollmechanismuses für Web Services mit vielen Nutzern <strong>und</strong> SSOs<br />

<strong>und</strong> bei sich ändernden Regeln <strong>und</strong> Datenbeständen schwer umsetzbar ist. Darüber hinaus<br />

9 Tags, die Zugriffrechte ausdrücken (z.B. )


44<br />

muss gewährleistet sein, dass alle Daten <strong>und</strong> Regeln am gleichen Ort vorliegen, was beispielsweise<br />

bei Geo Web Services selten der Fall ist (vgl. 2.4). Fazit dieser Überlegungen ist,<br />

dass sich dieser Ansatz nicht für Zugriffskontrolle bei (Geo) Web Services eignet.<br />

Wenn auch nicht exakt zutreffend, kann dieser Ansatz am ehesten der Klasse (1):<br />

evalQuery(Q, evalRule(R, D))<br />

zugeordnet werden.<br />

3.2.3 View-basierte Umsetzung der Zugriffskontrolle<br />

Query<br />

Web Service<br />

autorisierte Daten<br />

Views<br />

DBMS<br />

Abbildung 3.2 Schema des View-basierten Ansatzes<br />

Hinter diesem Ansatz verbirgt sich die Idee, für die Nutzer eigene Sichten (engl. Views) auf<br />

die Daten bereitzustellen. In diesen sind exakt die Knoten enthalten, die für den Nutzer zugänglich<br />

sein sollen. Die einzelnen Views können einmalig (offline – also nicht erst zum<br />

Zeitpunkt der Anfrage) berechnet werden <strong>und</strong> existieren in Abhängigkeit vom Algorithmus,<br />

der die Views bereitstellt, entweder physikalisch oder virtuell (siehe Damiani 2000, Damiani<br />

2002, AC XML 2002). Die Stärke dieses Ansatzes liegt in der schnellen (der Query wird über<br />

<strong>einer</strong> in der Regel kl<strong>einer</strong>en Datenmenge- die von den Views sichtbar gemachte Datenmenge<br />

– evaluiert) <strong>und</strong> sicheren 10 Beantwortung der Anfragen, die einfach über die Views ausgeführt<br />

werden. Die Views bieten den Vorteil, dass die Zugriffskontrolle nicht zur Laufzeit der Anfragebearbeitung<br />

ausgeführt werden muss. Bei den zuvor erwähnten Ansätzen muss die Anfrageverarbeitung<br />

des Web Services bzw. des DBMS bei jedem Knotenzugriff feststellen, ob<br />

Zugriff gewährleistet werden soll, was zu <strong>einer</strong> inakzeptablen Performance führen kann.<br />

Der View-basierte Ansatz entspricht ebenfalls der Klasse (1):<br />

evalQuery(Q, evalRule(R, D)).<br />

10 hier: nur rechtmäßig zugreifbare Daten werden zurückgegeben


45<br />

Die I/O Performance <strong>und</strong> die Speicherkosten dieses Ansatzes hängen stark von der Anzahl an<br />

Regeln <strong>und</strong> der Größe der Datenbasen ab. Da die Erzeugung der Views für einen konkreten<br />

Systemzustand offline geschehen kann, ist der dafür benötigte Zeitaufwand weniger kritisch.<br />

Sollte es aufgr<strong>und</strong> von Millionen Regeln <strong>und</strong> Benutzern zu Speicherproblemen kommen, so<br />

kann man durch Kompressionsverfahren Abhilfe schaffen (vgl. AC XML 2002).<br />

Nachteile dieses Ansatzes sind:<br />

• hohe Speicherkosten <strong>und</strong> View-Verwaltungskosten<br />

• Nach jedem Update der Regeln oder der Datenquelle müssen die Views angepasst werden.<br />

• Die Daten <strong>und</strong> Zugriffsbeschränkungsregeln müssen gemeinsam in einem System gespeichert<br />

sein.<br />

• Die Verwaltung <strong>und</strong> Umsetzung der Views ist bei <strong>einer</strong> großen Menge von Nutzern bzw.<br />

Rollen nicht skalierbar.<br />

Der View-basierte Ansatz ist für Web Services ungeeignet, da diese in der Regel eine dynamische<br />

Datenbasis <strong>und</strong>/oder ein dynamisches Regelwerk <strong>und</strong>/oder ein großes Datenvolumen<br />

<strong>und</strong>/oder verteilte Datenquellen <strong>und</strong>/oder viele Nutzer/Rollen haben.<br />

3.2.4 Statischer Analyseansatz<br />

Query<br />

Query Analyse<br />

3<br />

1 2<br />

Web Service<br />

Web Service<br />

DBMS mit Unterstützung feingranularer,<br />

inhaltsabhängiger<br />

Zugriffskontrolle<br />

autorisierte Daten<br />

keine autorisierten Daten<br />

autorisierte Daten<br />

Abbildung 3.3 Schema des statischen Analyseansatzes


46<br />

Der in StatAnalysis 2003 vorgestellte Ansatz kann als Vorstufe des Pre-Processing Ansatzes<br />

(vgl. 3.1.5) angesehen werden. Hierbei wird die Anfrage an den Web Service vor Auswertung<br />

gegen die Datenbasis auf Anwendbarkeit von Zugriffsregeln untersucht. Ziel ist es, eine unnötige<br />

Belastung des Web Services bzw. der Datenbasis zu vermeiden. Dies wird durch Selektion<br />

von Querys erreicht.<br />

Dabei können drei Fälle auftreten:<br />

1. alle von Q angeforderten Daten sind zugriffsberechtigt<br />

(also evalQuery(Q, D) ⊆ evalRule(R, D) )<br />

Query kann ohne weitere Zugriffskontrollmechanismen ausgeführt <strong>und</strong> das Ergebnis<br />

an den Nutzer zurückgegeben werden.<br />

2. alle angeforderten Daten sind zugriffsgeschützt<br />

(also evalQuery(Q, D) ∩ evalRule(R, D) = {})<br />

Q muss nicht zur Auswertung an den Web Service weitergereicht werden <strong>und</strong> der Nutzer<br />

kann direkt von der Ablehnung s<strong>einer</strong> Anfrage benachrichtigt werden.<br />

3. Q fordert Daten an, von denen nur eine Teilmenge zugänglich ist.<br />

(also evalQuery(Q, D) ∩ evalRule(R, D) ≠ {})<br />

In diesem Fall sieht der Ansatz vor, dass die Datenbasis selbst diejenigen Knoten aus<br />

der Antwort herausfiltert, für die der Nutzer keine Berechtigung hat.<br />

Die Vorgehensweise in Fall 3 stellt die Schwäche dieser Lösung dar, da man weiterhin auf eine<br />

Datenquelle mit integrierter Zugriffskontrolle angewiesen ist. Umgehen könnte man dieses<br />

Problem, indem in Fall 3 der Zugriff verboten wird. Dies würde implizieren, dass keine<br />

Zugriffskontrolle nach dem „So viel wie geht“ Prinzip möglich ist, was aber der Forderung in<br />

3.1.2 (S. 40) widerspricht.<br />

Aufgr<strong>und</strong> der unterschiedlichen Vorgehensweisen ist der Ansatz sowohl der Klasse 1 (Fall 3)<br />

als auch der Klasse 2 (Fall 1 <strong>und</strong> 2) zuzuordnen.<br />

3.2.5 Pre-Processing Ansatz<br />

Konzeptionell steckt hinter diesem Ansatz das Prinzip der Klasse 2:<br />

evalQuery(merge(Q, R), D)<br />

Die Zugriffskontrolle wird auf der Anfrage an den Web Service durchgesetzt. Der Query<br />

wird durch Anwendung der Zugriffsregeln in einen sicheren Query Q’ umgewandelt. Die<br />

Auswertung von evalQuery(Q’, D) ergibt daher eine Antwort, die nur zugreifbare Daten enthält.<br />

Bei der Umsetzung des Zugriffskontrollmechanismuses ist das Zugriffskontrollsystem<br />

unabhängig vom Datenformat der Antwort des Web Services sowie von den Datenquellen,<br />

die dem Web Service zugr<strong>und</strong>e liegen. Diese müssen keine Zugriffskontrolle umsetzen können.<br />

Bei diesem Ansatz können Daten sowie Regeln getrennt <strong>und</strong> verteilt gespeichert werden.


47<br />

In der Literatur zum Pre-Processing Ansatz (PreProc 2003) wird davon ausgegangen, dass Q<br />

<strong>und</strong> R durch XPath-Ausdrücke definiert sind. PreProc 2003 identifiziert für diesen Ansatz<br />

zwei verschiedene Vorgehensweisen:<br />

• Primitives Pre-Processing<br />

Query<br />

Query ∩ Regeln<br />

Web Service<br />

autorisierte Daten<br />

Abbildung 3.4 Schema des primitiven Pre-Processing Ansatzes<br />

Die Lösung dieses Ansatzes beruht auf <strong>einer</strong> simplen Verschneidung der XPath-<br />

Ausdrücke in den Regeln mit dem XPath-Ausdruck in der Anfrage. Das Prinzip der Verschneidung<br />

wird durch folgenden Ausdruck erklärt:<br />

Q’ = (Q geschnitten (Vereinigung aller (R + 11 ))) ohne (Vereinigung aller (R - 12 ))<br />

Der neue erweiterte <strong>und</strong> jetzt sichere Query Q’ wird dann auf die Datenquelle angewandt.<br />

Da die Auswertung von Q’ gegen D mit Sicherheit nur zugriffsberechtigte Daten zurückliefert,<br />

können diese unmittelbar an den Nutzer zurückgegeben werden.<br />

Folgendes Beispiel soll das Prinzip verdeutlichen:<br />

Anfrage auf Gebäudedaten: Q = /Objekt/Gebäude<br />

R 1 = (+, /Objekt/Gebäude[Besitzer = „Schweizer Bank“])<br />

R 2 = (-, /Objekt/Gebäude[Baujahr ≥ 13 „2003“])<br />

Q’= /Objekt/Gebäude/ intersects /Objekte/Gebäude[Besitzer = „Schweizer Bank“] except<br />

/Objekt/Gebäude[Baujahr ≥ „2003“]<br />

Vorteil dieser Variante des Pre-Processings ist die einfache Implementierbarkeit. Allerdings<br />

ist die Performance stark davon abhängig, wie gut die darunter liegende Datenbank<br />

bzw. der Web Service die Mengenoperatoren (intersect, union <strong>und</strong> except) umsetzen<br />

kann. Je mehr Regeln zu <strong>einer</strong> Anfrage greifen, umso mehr Mengenoperationen sind nötig<br />

11 die positiven (zugriffsgewährenden) Regeln des Regelwerks<br />

12 die negativen (zugriffsbeschränkenden) Regeln des Regelwerks<br />

13 Logikausdrücke in dieser Arbeit sind an die Java Syntax angelehnt.


48<br />

<strong>und</strong> umso langsamer wird daher die Bearbeitung von Q’. (Tests mit Galax als XML Datenbank;<br />

vgl. Ausführungen in AC Mech 2004, S.14/15).<br />

• Das QFilter Verfahren:<br />

Query<br />

QFilter<br />

Q’<br />

Web Service<br />

autorisierte Daten<br />

Abbildung 3.5 Schema des QFilter Ansatzes<br />

Die Anfrage wird unter Betrachtung der Zugriffsregeln ausgewertet. Verstößt der Query<br />

gegen eine (mehrere) Regel(n), so wird er umgeschrieben. Im Gegensatz zum primitiven<br />

Pre-Processing wird die Anfrage nicht nur mit den Regeln verschnitten sondern es werden<br />

unsicheren Anteile der Anfrage eliminiert. Vorausgesetzt wird bei diesem Ansatz, dass<br />

sowohl Q als auch R durch XPath-Ausdrücke definiert worden sind. Mit Hilfe von nichtdeterministischen<br />

endlichen Automaten (engl. Non deterministic Finite Automaton –<br />

NFA) – die so genannten QFilter – wird der Query umgeschrieben. Im Falle von evalQuery(Q,<br />

D) ∩ evalRule (R + , D) = {} ist der QFilter Ansatz besonders effizient, da er die Anfrage<br />

direkt abweisen kann – Q’ entspricht in diesem Fall <strong>einer</strong> leeren Anfrage. Die Erzeugung<br />

des NFAs, der das Regelwerk repräsentiert, kann dabei einmalig offline geschehen,<br />

vorausgesetzt die Regeln bleiben konstant. Zu erwähnen ist, dass die Kosten der<br />

QFilter-Konstruktion <strong>und</strong> -Auswertung durch die Komplexität der Regeln beeinflusst<br />

werden. Außerdem impliziert eine Änderung am Regelwerk ein Update am NFA. Prädikate<br />

in den XPath-Ausdrücken werden einfach aneinandergehängt. Optimierung dieser<br />

kombinierten Prädikate wird den Query-Optimierern des Web Services bzw. der darunter<br />

liegenden Datenbank überlassen. Im Vergleich zum primitiven Pre-Processing Ansatz<br />

entsteht auf Gr<strong>und</strong> des Umschreibens von Teilen der vorhandenen Anfrage – nicht nur<br />

Ergänzen der Anfrage – ein deutlich besseres Q’. Es bleibt dennoch offen, wie performant<br />

der Web Service die Auswertung von Q’ bei <strong>einer</strong> großen Anzahl von Prädikaten (d.h. bei<br />

vielen inhaltsbezogenen Regeln) bewerkstelligen kann.<br />

Um den Unterschied zum primitiven Pre-Processing zu verdeutlichen, soll obiges Beispiel,<br />

erweitert um Anfrage auf alle Straße Objekte, unter Verwendung von QFilter betrachtet<br />

werden:<br />

Q= /Objekt/Gebäude/ and /Objekt/Straße


49<br />

R 1 = (+, /Objekt/Gebäude[Besitzer = „Schweizer Bank“])<br />

R 2 = (-, /Objekt/Gebäude[Baujahr ≥ „2003“])<br />

R 3 = (-, /Objekt/Straße)<br />

Q’=/Objekt/Gebäude[(Besitzer = „Schweizer Bank“) and (not (Baujahr ≥ „2003“))]<br />

3.2.6 Post-Processing Ansatz<br />

Bei Ansätzen dieses Typs werden lesende 14 Anfragen an den Web Service unbearbeitet gegen<br />

die Datenbasis ausgewertet. Die Überprüfung von Zugriffsrechten erfolgt erst auf der Antwort<br />

des Web Services, die – sofern zugriffsbeschränkte Daten enthalten sind – entsprechend<br />

modifiziert werden muss. Dazu muss für jedes Datum der Antwort überprüft werden, ob passende<br />

zugriffsbeschränkende Regeln existieren. Dieser Mechanismus ist daher nur dann für<br />

eine feingranulare Zugriffskontrolle verwendbar, wenn die Antwort des Web Services strukturiert<br />

ist <strong>und</strong> die zu schützenden Objekte noch einzeln identifizierbar sind (z.B. Knoten eines<br />

XML Dokumentes). Unterschiede zwischen den einzelnen Varianten des Post-Processing Ansatz<br />

ergeben sich durch die Art <strong>und</strong> Weise, wie die zugriffsbeschränkten Daten aus der Antwort<br />

gefiltert werden. Beispiele sind:<br />

• Yfilter Post-Processing – entspricht evalRule(R, evalQuery(Q, D)) (Klasse 3)<br />

Query<br />

Web Service<br />

beliebige Daten<br />

YFilter<br />

autorisierte Daten<br />

Abbildung 3.6 Schema des YFilter Ansatzes<br />

14 Bei modifizierenden Anfragen ist dieser Ansatz in der Regel nicht möglich.


50<br />

Es wird von XML-kodierten Daten ausgegangen <strong>und</strong> die von Zugriffsregeln betroffenen<br />

Knotenmengen werden durch XPath-Ausdrücke definiert. Q wird ohne jeglichen<br />

Zugriffskontrollmechanismus auf D ausgeführt – evalQuery(Q, D). Als Folge können im<br />

vorläufigen Ergebnis zugriffsgeschützte Daten auftauchen, die in einem zweiten Schritt –<br />

evalRule(R, D’) – herausgefiltert werden müssen. Das Herausfiltern der zugriffsbeschränkten<br />

Daten erfolgt bei dieser Variante durch so genannte YFilter 15 , die einen offline<br />

erzeugten NFA für eine effiziente Filterung von XML Daten nutzen. Basis für die Konstruktion<br />

des NFAs sind die Regeln (einfache XPath-Ausdrücke). Beim ereignis-basierten<br />

Parsen des XML Dokumentes werden die Grammatiken des Automaten (d.h. also die<br />

Transitionen) durchlaufen <strong>und</strong> es kann knotenweise eine Zugriffsentscheidung getroffen<br />

werden (detaillierte Ausführungen siehe YFilter 2003, Altinel 2002, Diao 2003).<br />

Auch dieser Ansatz wirft Probleme auf:<br />

o Er ist ineffizient, wenn ein Großteil der angeforderten Daten zugriffsgeschützt ist.<br />

Diese Ineffizienz fällt noch stärker ins Gewicht, wenn evalQuery(Q, D) <strong>und</strong> eval-<br />

Rule(R, D’) verteilt ausgeführt werden. Die Qualität dieses Verfahrens ist also<br />

stark vom Anteil zugriffgeschützter Daten nach evalQuery(Q, D) abhängig.<br />

o Die Vorgänger zu den angeforderten Knoten müssen im Ergebnis vorkommen, da<br />

es sonst zu <strong>einer</strong> Sicherheitslücke kommt. Zur Verdeutlichung folgendes Beispiel:<br />

Der Query sei /Objekt/Straße/Name<br />

Die Regel lautet<br />

(-, /Objekt/Straße). Liefert der Query als Ergebnis nur eine Menge an Knoten<br />

Name, so kann die Regel, die nur die Objekte vom Typ Straße zugriffsbeschränken<br />

soll, nicht mehr korrekt umgesetzt werden. Gr<strong>und</strong> ist, dass die Auswertung der<br />

Anfrage nur eine Menge an Namenknoten zurückliefert <strong>und</strong> daher nicht mehr entschieden<br />

werden kann, ob die Regel greifen soll oder nicht. Aus diesem Gr<strong>und</strong><br />

müssen im Ergebnis der Anfrage immer alle Vorfahrenknoten enthalten sein.<br />

o Die Performance beim Herausfiltern der zugriffsgeschützen Daten ist von der<br />

Komplexität der Regeln abhängig.<br />

15 engl. Yet another FILTER tool (YFilter 2003, S. 3)


51<br />

• evalQuery(Q, D) ∩ evalRule(R, D) (Klasse 4)<br />

Query<br />

Web Service<br />

beliebige Daten<br />

R +<br />

Web Service<br />

zugreifbare Daten<br />

R –<br />

Web Service<br />

zugriffsbeschränkte Daten<br />

Schneiden<br />

autorisierte Daten<br />

Abbildung 3.7 Schema des evalQuery(Q, D) ∩ evalRule(R, D) Ansatzes<br />

Bei diesem Ansatz wird das angeforderte XML Dokument mit dem XML Dokument, das<br />

die entsprechenden zugreifbaren Daten beinhaltet, „geschnitten“. Diese Variante ist allerdings<br />

nur durchführbar, wenn die Domänen unter dem „intersects“ Operator kompatibel<br />

sind. Damit ist gemeint, dass das Schneiden von XML Dokumenten nur dann möglich ist,<br />

wenn die aus evalQuery(Q, D) <strong>und</strong> evalRule(R, D) resultierenden XML Dokumente dem<br />

gleichen Schema genügen (vgl. AC Mech 2004, S.7 <strong>und</strong> PreProc 2003, S. 7). Weiterer<br />

Nachteil ist das Auswerten von evalRule(R, D). Dieses entspricht prinzipiell dem Erzeugen<br />

<strong>einer</strong> View. Daher gelten für diesen Ansatz ebenfalls die bereits unter 3.1.3 aufgeführten<br />

Nachteile.


52<br />

3.3 Eignung der Zugriffskontrollmechanismen für Geo Web Services<br />

Um effiziente <strong>und</strong> korrekte Zugriffskontrolle für Geo Web Services umsetzen zu können,<br />

müssen die speziellen Anforderungen <strong>und</strong> Rahmenbedingungen dieses Anwendungsgebietes<br />

berücksichtigt werden. Dadurch wird die Auswahl der zur Verfügung stehenden Alternativen<br />

an Zugriffskontrollmechanismen stark eingeschränkt.<br />

Folgende Kriterien spielen bei der Wahl des Zugriffskontrollmechanismuses für Geo Web<br />

Services eine entscheidende Rolle:<br />

• verteilte heterogene Datenquellen<br />

• Dynamik der Regeln, der Datenbasis <strong>und</strong> des Nutzerbestandes<br />

• Komplexität feingranularer, inhaltsabhängiger <strong>und</strong> raumbezogener Regelwerke<br />

• großes Datenvolumen<br />

• heterogene Antwortdatenformate<br />

• viele Nutzer/Rollen<br />

• Aktionen auf einem Geo Web Service, die auf Zugriffsrechte zu überprüfen sind, können<br />

einfügen, lesen, schreiben oder löschen sein.<br />

• Raumbezogene Anfragen an den Geo Web Service sollen unterstützt werden.<br />

• Das Regelwerk soll sich auf die Geodaten beziehen <strong>und</strong> soweit möglich unabhängig vom<br />

konkreten Geo Web Service sein (Ziel: Wiederverwendbarkeit des Regelwerkes).<br />

Der View-basierte Ansatz, der Instance-Tagging Ansatz sowie Ansätze, die eine Unterstützung<br />

der Datenbank bei der Zugriffskontrolle erwarten (Built-in <strong>und</strong> statischer Analyseansatz),<br />

werden wegen der bereits unter 3.1 erwähnten Gründe ausgeschlossen.<br />

3.3.1 Eignung des Pre-Processing Ansatzes – evalQuery(merge(Q, R), D)<br />

Die Unabhängigkeit von der Art, Anzahl <strong>und</strong> Lage der Datenquellen des Web Services sowie<br />

die Irrelevanz des verwendeten Formates der Antwortdaten machen den Pre-Processing Ansatz<br />

für feingranulare Zugriffskontrolle in Geo Web Services besonders interessant. Für ein<br />

Pre-Processing spricht zudem, dass die Hardwarekomponenten, welche die Funktionalität des<br />

Web Services umsetzen, nicht unnötig durch unauthorisierte Anfragen belasten werden. Eine<br />

weitere Stärke des Ansatzes ist, dass mit ihm Autorisationen für lesende <strong>und</strong> modifizierende<br />

Aktionen (einfügen, schreiben, löschen) auf den Daten eines Web Services überprüft werden<br />

können.


53<br />

Entscheidend für den Einsatz ist die Frage, ob die merge(Q, R) Operation realisierbar ist.<br />

Durch die merge(Q, R) Operation wird die Semantik der Zugriffsregeln mit der Anfragesemantik<br />

verknüpft. Hierfür ist es nötig, die zu <strong>einer</strong> Anfrage passenden Regel zu identifizieren.<br />

Im Anschluss kann die Anfrage durch die in der Regel ausgedrückte Semantik modifiziert<br />

werden. In den Ausführungen zu diesem Ansatz wird stets davon ausgegangen, dass sowohl<br />

die Queries als auch die Zugriffsregeln Datenmengen über XPath-Ausdrücke spezifizieren.<br />

Die Verwendung von XPath-Ausdrücken zur Deklaration von Anfragen oder Zugriffsregeln<br />

ist allerdings für Geo Web Services nicht ausreichend mächtig.<br />

Wie im Unterpunkt 2.4 bereits erwähnt wurde, müssen Geo Web Services räumliche Abfragen<br />

(z.B. /Gebäude [die alle innerhalb Bayerns liegen]) unterstützen. Zudem muss in einem<br />

Zugriffskontrollsystem für Geo Web Services die Möglichkeit bestehen, raumbezogene<br />

Zugriffsregeln (z.B. alle Gebäude in München sind zugriffsbeschränkt) umsetzen zu können.<br />

Zur Erfüllung dieser beiden Forderungen bietet XPath keine ausreichende Funktionalität. Man<br />

kann zwar durch die Lokalisierungsschritte beliebige Knoten in den GML-kodierten Geodaten<br />

adressieren, allerdings ist man Restriktionen bei der Formulierung von Prädikaten zu einem<br />

Lokalisierungspfad unterworfen, da XPath 2.0 in s<strong>einer</strong> aktuellen Spezifikation in Prädikaten<br />

keine vordefinierten, standardisierten, raumbezogenen Funktionen zulässt.<br />

Um den Pre-Processing Ansatz dennoch für Geo Web Services adaptieren zu können, bieten<br />

sich folgende Vorgehensweisen an:<br />

1. Die Regeln werden angepasst an das Anfrageformat des Web Services definiert, wodurch<br />

eine Realisierung der „merge“ Operation vereinfacht wird. Allerdings entsteht<br />

durch dieses Vorgehen eine Abhängigkeit zwischen dem Regelwerk <strong>und</strong> einem bestimmten<br />

Web Service.<br />

2. Die Anfrage des Geo Web Services wird in XPath-Ausdrücke umgewandelt, die um benutzerdefinierte<br />

räumliche Funktionen erweitert wurden. Zur Definition der Regeln werden<br />

ebenfalls um benutzerdefinierte räumliche Funktionen erweiterte XPath-Ausdrücke<br />

verwendet.<br />

Die „merge“ Operation wird dann auf der transformierten Anfrage <strong>und</strong> den greifenden<br />

Regeln ausgeführt. Der modifizierte, nun sichere Query Q’ kann nach Rücktransformation<br />

in das ursprüngliche Query Format der Web Service Anfrage an den Web Service<br />

weitergeleitet werden.<br />

Unterschied der beiden Varianten ist, dass sie syntaktisch unterschiedlich aufgebaute Regelwerke<br />

fordern. Variante 2 ermöglicht durch eine Abstraktionsebene die Unabhängigkeit des<br />

Regelwerkes vom Web Service. Zur Definition der Regeln werden allerdings XPath-<br />

Ausdrücke, um benutzerdefinierte räumliche Funktionen erweitert, die in den Prädikaten zum<br />

Einsatz kommen, verwendet. Diese müssen den Anforderungen beliebiger Geo Web Services<br />

genügen. Voraussetzung für Variante 2 ist demnach die Existenz <strong>einer</strong> mächtigen Sprache,<br />

die das raumbezogene Selektieren von Daten in GML-kodierten Geodaten unterstützt. Diese


54<br />

Sprache muss die Möglichkeit bieten, räumliche Relationen <strong>und</strong> Operationen (wie z.B. berührt,<br />

schneidet, liegt innerhalb, gleich, sowie Distanz, Länge, Volumen, usw.) formulieren zu<br />

können. Bis dato existiert allerdings noch keine standardisierte Spatial Query Sprache für<br />

GML/XML Dokumente. Ausweg bietet daher entweder die Erweiterung <strong>einer</strong> vorhandenen<br />

Query Sprache (vgl. GML-QL 2002) oder die Definition <strong>einer</strong> neuen Spatial Query Sprache<br />

(vgl. Córcoles 2002). Diese Sprachen können zur Definition der Regeln <strong>und</strong> als Abstraktionsformat<br />

der transformierten Web Service Anfragen verwendet werden. Die unterschiedlichen<br />

Anfrageformate der Web Services müssen durch ein vom Web Service abhängiges Modul ins<br />

Abstraktionsformat transformiert werden. Da die Einheit im System, die als Einsprung in die<br />

Zugriffskontrolle dient, ohnehin zu einem konkreten Web Service passen muss, stellt das Web<br />

Service abhängige Modul zur Transformation der Anfrage kein neues Problem dar.<br />

Vorteil der Variante 2 gegenüber der Vorgehensweise 1 ist, dass das Regelwerk unabhängig<br />

vom Anfrageformat eines konkreten Web Services bleibt. Dadurch kann erreicht werden, dass<br />

unterschiedliche Web Services, die auf den selben Daten operieren, das gleiche Regelwerk<br />

verwenden können.<br />

Da noch keine offiziell verabschiedete, standardisierte Spatial Query Sprache veröffentlicht<br />

wurde, die Aufgabenstellung der Arbeit nicht fordert, dass das Regelwerk für beliebige Web<br />

Services wieder verwendbar sein soll <strong>und</strong> Variante 1 die im gegeben Zeitraum leichter umzusetzende<br />

sowie die einfacher zu vermittelnde Lösung für raumbezogenes Pre-Processing darstellt,<br />

wird nur diese im Folgenden betrachtet. Betont sei, dass die Umsetzung der Variante 2<br />

nur ein anderes Regelformat <strong>und</strong> Transformationen von <strong>und</strong> in die Abstraktionssprache benötigt.<br />

Die Umsetzung der Variante 2 sollte daher auf Basis der hier vorgestellten Variante 1<br />

leicht möglich sein.<br />

Eine Zugriffskontrolle mit Umsetzung über den Pre-Processing Ansatz setzt voraus, dass der<br />

Web Service den modifizierten, dann sicheren Query korrekt auswertet. Das Zugriffskontrollsystem<br />

kann daher nie mit h<strong>und</strong>ertprozentiger Sicherheit sagen, ob der Nutzer wirklich nur<br />

Zugriff auf für ihn autorisierte Daten hat. Der Gr<strong>und</strong> für die Ungewissheit ist, dass der Web<br />

Service die Anfragen eventuell nicht exakt beantwortet. Der WFS beispielsweise ergänzt Anfragen<br />

so, dass die Antwort zu dem verwendeten Schema ein gültiges XML Dokument ist.<br />

Können die für einen Web Service zuständigen SSOs allerdings davon ausgehen, dass alle<br />

Anfragen vom Web Service korrekt beantwortet werden <strong>und</strong> dass aus der Anfrage ersichtlich<br />

ist, welche Daten letztendlich an den Nutzer übermittelt werden (siehe hierzu 5.4.4), dann ist<br />

gewährleistet, dass der Nutzer nur für ihn zugreifbare Daten erhält.<br />

Neben der Abhängigkeit der Zugriffskontrolle von der korrekten Funktionsweise des Web<br />

Services hat der Pre-Processing Ansatz noch eine weitere Schwäche. Greifen zu <strong>einer</strong> Anfrage<br />

viele Regeln mit umfassenden Bedingungen, so kann die modifizierte Anfrage sehr komplex<br />

werden. Er enthält dann nicht nur viele, sondern auch aufwendig auszuwertende Prädika-


55<br />

te (z.B. topologische Relationen). Ob die Bearbeitung der modifizierten Anfrage unter starken<br />

Performanceeinbußen im Vergleich zur Original-Anfrage zu leiden hat, ist abhängig von der<br />

Arbeitsweise des Geo Web Services sowie von der darunter liegenden Datenquelle.<br />

Zusammenfassend sind in Tabelle 3.1 die Vor- <strong>und</strong> Nachteile des Pre-Processing Ansatzes<br />

zur Umsetzung der Zugriffskontrolle für Geo Web Services aufgeführt:<br />

Vorteile<br />

• Schutz des Web Services vor überflüssigen<br />

Arbeiten<br />

• Unabhängigkeit vom Antwortformat des<br />

Web Services<br />

• Zugriffskontrolle für die Aktionen „einfügen,<br />

lesen, schreiben“ auf dem Geo Web Service<br />

sind möglich.<br />

Nachteile<br />

• Sicherheitslücke bei Fehlverhalten des Web<br />

Services<br />

• Transformation der Anfrage in mächtige<br />

räumliche Anfragesprache nötig oder Abhängigkeit<br />

des Regelwerkes von <strong>einer</strong> konreten<br />

Web Service Anfragesprache<br />

• Modifikation der Anfragen in sichere Queries<br />

komplexere Queries, die eine unperformante<br />

Auswertung durch den Web Service<br />

bzw. durch die darunter liegende DB zur<br />

Folge haben können<br />

Tabelle 3.1 Vor- <strong>und</strong> Nachteile des Pre-Processing Ansatzes<br />

Aufgr<strong>und</strong> der oben aufgeführten Schwächen erscheint es sinnvoll, eine Alternative zum Pre-<br />

Processing aufzuführen.<br />

3.3.2 Eignung des Post-Processing Ansatzes – evalRule(R, evalQuery(Q, D))<br />

Schwachpunkt dieser Vorgehensweise ist, dass der Anteil zugriffsgeschützer Daten bis zum<br />

Zeitpunkt der eigentlichen Zugriffskontrolle mitgeführt wird. In Szenarien, in denen die Auswertung<br />

der Web Service Anfrage <strong>und</strong> die Umsetzung der Zugriffskontrolle räumlich verteilt<br />

ablaufen, ist dieser Ansatz besonders ineffizient. Man stelle sich eine 1 GB große Antwort auf<br />

eine Web Service Anfrage vor, von der nur ein Prozent rechtmäßig zugreifbar ist. Der Web<br />

Service erledigt nicht nur unnötig viel Arbeit bei der Generierung der Antwort, sondern das<br />

Zugriffskontrollsystem muss zudem daraufhin die zugriffsbeschränkten Daten gleich wieder<br />

aus der Antwort herausfiltern.<br />

Dieser Zugriffskontrollmechanismus ist nur dann eine Alternative zum Pre-Processing, wenn<br />

oben erwähnter Schwachpunkt nicht stark ins Gewicht fällt. Dies ist beispielsweise dann der<br />

Fall, wenn der Anteil der zugriffsbeschränkten Daten unter allen abfragbaren Daten gering ist<br />

oder die Auswertung der Web Service Anfrage <strong>und</strong> Überprüfung der Zugriffsregeln innerhalb<br />

eines Rechners umgesetzt sind.


56<br />

Sofern Zugriffskontrolle auch für modifizierende Aktionen unterstützt werden soll, genügt<br />

das Post-Processing alleine nicht den Anforderungen. Zu diesen Aktionen gibt der Web Service<br />

in der Regel keine Antwort zurück, die detaillierte Informationen über die getätigte Aktion<br />

liefert. Selbst wenn dem so wäre, dann müsste das Zugriffskontrollsystem im nachhinein<br />

die Änderungen rückgängig machen, was ohne aufwendige Recovery Komponenten in den<br />

Web Services nicht erreicht werden kann. Als Konsequenz ergibt sich, dass Zugriffskontrollsysteme,<br />

die sowohl lesende wie auch modifizierende Aktionen auf ausreichende Autorisationen<br />

überprüfen, entweder nur Pre-Processing oder sowohl Pre-Processing (Kontrolle der modifizierenden<br />

Aktionen) wie auch Post-Processing (Überprüfung der lesenden Zugriffe) verwenden<br />

müssen.<br />

Für das Post-Processing können folgende Vor- <strong>und</strong> Nachteile zusammenfassend dargestellt<br />

werden:<br />

Vorteile<br />

• Zugriffskontrollmodul kann mit Sicherheit<br />

sagen, dass nur autorisierter Zugriff möglich<br />

ist.<br />

Nachteile<br />

• Ist besonders ineffizient, wenn der Anteil<br />

zugriffsbeschränkter Daten zu <strong>einer</strong> Web<br />

Service Anfrage groß ist. Dies fällt besonders<br />

ins Gewicht, wenn Web Service <strong>und</strong><br />

Zugriffskontrollsystem räumlich verteilt liegen.<br />

• Belastung des Web Services durch unautorisierte<br />

Anfragen<br />

• Nicht anwendbar, wenn Antwortdaten des<br />

Geo Web Services nicht XML- bzw. GMLkodiert<br />

sind<br />

• Nicht für Einfüge-, Schreib- <strong>und</strong> Updateoperationen<br />

auf dem Web Service verwendbar<br />

Tabelle 3.2 Vor- <strong>und</strong> Nachteile des Post-Processing Ansatzes<br />

3.3.3 Der Hybridansatz<br />

Es wird in diesem Abschnitt eine weitere Variante eines Zugriffskontrollmechanismuses aufgeführt,<br />

die im Folgenden als der Hybridansatz bezeichnet wird. Der Hybridansatz kombiniert<br />

Pre- <strong>und</strong> Post-Processing Ideen, um dadurch die Nachteile beider Ansätze zu eliminieren<br />

bzw. abzuschwächen.<br />

Der Hybridansatz sieht bei modifizierenden Aktionen eine Zugriffskontrolle nach dem Pre-<br />

Processing Ansatz vor. Bei lesenden Aktionen stehen der Pre- <strong>und</strong>/oder der Post-Processing<br />

Ansatz zur Verfügung.


57<br />

Beide Ansätze nacheinander ausgeführt (erst Pre-Processing dann Post-Processing) würde einige<br />

Nachteile der Varianten eliminieren. Sinn des Post-Processing ist, dass die SSOs mit Sicherheit<br />

wissen, dass keine zugriffsbeschränkten Daten an den Nutzer zurückgehen. Da der<br />

Anteil zugriffsbeschränkter Daten nach dem Pre-Processing gleich null sein sollte, wäre zudem<br />

ein entscheidender Nachteil der Post-Processing Variante – die Ineffizienz bei vielen<br />

zugriffsbeschränkten Daten in der Web Service Antwort – behoben. Den Vorteilen dieser<br />

Vorgehensweise stehen allerdings einige gravierende Nachteile gegenüber:<br />

• zwei Regelwerke für lesende Aktionen nötig (anfragebasiertes Regelwerk für Pre-<br />

Processing sowie Regelwerk für Zugriffskontrolle auf der Antwort beim Post-Processing)<br />

• Problem mit komplexen Queries nicht gelöst<br />

• zweimalige Zugriffskontrolle ( evtl. schlechte Performance)<br />

Wegen der genannten Probleme wird das bloße Hintereinanderschalten der Pre- <strong>und</strong> Post-<br />

Processing Ansätze als nicht geeignet angesehen. Im Hybridansatz wird daher zur Optimierung<br />

der Post-Processing Variante für die Zugriffskontrolle bei lesenden Aktionen nur ein<br />

teilweiser Pre-Processing Schritt vorgeschaltet. In diesem wird versucht durch Modifikation<br />

der Anfrage den Anteil zugriffsgeschützer Daten in der Web Service Antwort – der für die Ineffizienz<br />

beim Post-Processing Ansatz sorgt – gezielt zu verringern.<br />

Unter teilweisem Pre-Processing versteht der Autor, auf Basis der Informationen in der Anfrage<br />

ein Skelett des entsprechenden Ergebnisdokumentes, bestehend aus Element- <strong>und</strong> Attributknoten,<br />

aufzubauen, auf dem dann bereits Zugriffsentscheidungen getroffen werden können.<br />

Sofern das Zugriffskontrollsystem nach Anwendung der relevanten Regeln eine negative<br />

Zugriffsentscheidung zu einem Knoten im Skelett berechnet hat, kann die Anfrage modifiziert<br />

werden, so dass dieser Knoten nicht mehr vom Web Service angefordert wird. Dadurch kann<br />

der Anteil zugriffsbeschränkter Daten in der Web Service Antwort verringert werden, wodurch<br />

die Effizienz des im Anschluss stattfindenden Post-Processings gesteigert wird.<br />

Problem des teilweisen Pre-Processing Schrittes ist, dass nur in bestimmten Fällen auf Basis<br />

des Skelettes ermittelt werden kann, ob Zugriff auf einen Knoten gewährt werden soll oder<br />

nicht. Dies ist nur dann möglich, wenn sich alle Zugriffsregeln zu einem Knoten auf Informationen<br />

stützen, die im Skelett vorhanden sind. Dies bedeutet, dass die Wahrscheinlichkeit, auf<br />

Basis des Skelettes eine Zugriffsentscheidung bestimmen zu können, durch Regelwerke mit<br />

vielen inhaltsbezogenen Zugriffsregeln verringert wird. Die inhaltsbezogenen Zugriffsregeln<br />

stützen sich nämlich auf die Textknoten des Dokumentes. Das Skelett besteht allerdings nur<br />

aus Element- <strong>und</strong> Attributknoten. Sofern also zu einem angefragten Knoten mindestens eine<br />

inhaltsbezogene <strong>und</strong> daher nicht anwendbare Zugriffsregel existiert, kann keine Zugriffsentscheidung<br />

gefällt werden <strong>und</strong> die Anfrage an den Web Service kann nicht um diesen Knoten<br />

beschnitten werden.<br />

Da mit dem teilweisen Pre-Processing nur gewährleistet werden kann, dass der Anteil<br />

zugriffsbeschränkter Daten in der Web Service Antwort verringert wird 16 , muss nach dem<br />

16 deshalb der Name teilweises Pre-Processing


58<br />

Generieren der modifizierten Anfrage ein zusätzlicher Post-Processing Schritt erfolgen. Dadurch<br />

wird gewährleistet, dass die Web Service Antwort ausschließlich rechtmäßig zugreifbare<br />

Daten enthält. Aufgr<strong>und</strong> des vorangegangenen teilweisen Pre-Processing Schrittes wird die<br />

Effizienz dieses Post-Processings allerdings gesteigert.<br />

Tabelle 3.3 zeigt zusammenfassend die Vor- <strong>und</strong> Nachteile des Hybridansatzes<br />

Vorteile<br />

• Reduktion des Anteiles zugriffsgeschützer<br />

Daten vor Auswertung der Web Service<br />

Antwort optimiertes Post-Processing möglich<br />

• kein extra Regelwerk für Zugriffskontrolle<br />

auf der Anfrage nötig<br />

• Modifikation der Queries impliziert keine<br />

komplexere Auswertung beim Web Service.<br />

• Zuverlässigkeit der Zugriffskontrolle liegt<br />

bei den SSOs<br />

• Schutz des Web Services vor Belastung<br />

durch unautorisierte Anfragen (z.B. Vermeidung<br />

von denial of Service Attacken)<br />

• Autorisation für Einfüge-, Schreib-, Update<strong>und</strong><br />

Leseoperationen auf dem Web Service<br />

überprüfbar<br />

Nachteile<br />

• eventuell zweimalige Regelanwendungen<br />

• Die Effizienz des teilweisen Pre-Processings<br />

ist abhängig von der Beschaffenheit des Regelwerkes<br />

Nicht für alle Regelwerke sinnvoll.<br />

Tabelle 3.3 Vor- <strong>und</strong> Nachteile des Hybridansatzes


59<br />

3.3.4 Fazit<br />

Wie gezeigt wurde, haben sowohl der Pre- <strong>und</strong> Post-Processing Ansatz als auch der Hybridansatz<br />

ihre Schwächen. Es existiert kein Mechanismus, der unter beliebigen Ausgangsbedingungen<br />

<strong>und</strong> Anforderungen immer die optimale Lösung darstellt.<br />

Klar ist, dass für feingranulare Zugriffskontrolle bei modifizierenden Aktionen der Pre-<br />

Processing Ansatz verwendet werden muss 17 .<br />

Bei lesenden Aktionen stehen der Pre-Processing, der Post-Processing 18 <strong>und</strong> der Hybridansatz<br />

zur Verfügung.<br />

Aufgabenstellung dieser Diplomarbeit ist es, ein Konzept für raumbezogene Zugriffskontrolle<br />

zu entwickeln. Der Fokus liegt daher auf der Umsetzung raumbezogener Zugriffsregeln, die<br />

der Klasse der inhaltsbezogenen Zugriffsregeln zugeordnet werden können. Da der Hybridansatz<br />

nur in Zugriffskontrollsystemen sinnvoll ist, in denen wenige inhaltsbezogene Regeln e-<br />

xistieren, wird dieser in den nachfolgenden Kapiteln nicht näher betrachtet.<br />

In Kapitel 4 <strong>und</strong> 5 (ohne 5.4) wird gezeigt, wie durch Post-Processing Zugriffskontrolle für<br />

einen Geo Web Service erreicht werden kann. Die Ausführungen in diesen Abschnitten betrachten<br />

daher nur Zugriffskontrolle, die sich auf die Inanspruchnahme eines Dienstes durch<br />

lesende Aktionen bezieht.<br />

Der Pre-Processing Ansatz wird im Anschluss unter 5.4 vorgestellt. Dort wird gezeigt, wie<br />

dieser in einem Zugriffskontrollsystem für Geo Web Services genutzt werden kann, um<br />

feingranulare, inhaltsabhängige <strong>und</strong> raumbezogene Zugriffskontrolle für lesende <strong>und</strong> modifizierende<br />

Aktionen (einfügen, schreiben <strong>und</strong> löschen) zu realisieren.<br />

17 Der Hybridansatz entspricht bei modifizierenden Aktionen dem Pre-Processing <strong>und</strong> stellt für diesen Fall keine<br />

Alternative dar.<br />

18 Vorausgesetzt der Geo Web Service liefert als Ergebnis strukturierte Daten zurück.


60<br />

4 Zugriffskontrolle mit XACML<br />

Dieses Kapitel beschreibt die konzeptionelle Umsetzung <strong>einer</strong> feingranularen, regelbasierten<br />

Zugriffskontrolle für Geo Web Services am Beispiel des WFS. Es wird von einem Geo Web<br />

Service ausgegangen, der lesenden Zugriff auf objektartig strukturierte Geodaten, kodiert in<br />

GML, ermöglicht. Zur Durchsetzung des Regelwerkes wird in Abschnitt 4.2 <strong>und</strong> 4.3 der Post-<br />

Processing Ansatz verwendet. Die Syntax zur Definition der Zugriffsregeln basiert auf dem<br />

XACML Standard, Version 1.1 (XACML Spec 1.1). Es wird gezeigt, wie ein flexibles <strong>und</strong><br />

mächtiges Regelwerk definiert werden kann, das ermöglicht, Zugriffsrechte an Featuretypen,<br />

an Features <strong>und</strong> an den Raumbezug der Features zu binden. Gr<strong>und</strong>lage für die Definition des<br />

Regelwerkes ist das XML Schema der zu schützenden Geodaten.<br />

Alle aufgeführten XACML Beispiele sind vereinfacht (Namensräume – engl. Namespaces –<br />

werden vernachlässigt, Bezeichner für Attributtypen werden abgekürzt etc.) <strong>und</strong> auf die wesentlichen<br />

Inhalte beschränkt. Dies soll die Lesbarkeit sowie das Verständnis erleichtern.<br />

4.1 XACML – eXtensible Access Control Markup Language<br />

Dieser Abschnitt bietet eine kurze Einführung in die Sprache XACML Version 1.1 von<br />

OASIS 19 (Organization for the Advancement of Structured Information Standards). Um den<br />

Rahmen der Arbeit nicht zu sprengen werden nur die wesentlichen Inhalte von XACML erläutert.<br />

Für detaillierte Informationen <strong>und</strong> dem Verständnis fördernde Beispiele wird auf die<br />

XACML Spezifikation 1.1 (XACML Spec 1.1) sowie den Sun XACML Implementation Programmer's<br />

Guide (SUNXACML 1.2) verwiesen, die als Basis für die Ausführungen zu diesem<br />

Unterpunkt dienten.<br />

4.1.1 Was ist XACML?<br />

XACML ist eine standardisierte, mächtige <strong>und</strong> erweiterbare XML-basierte Sprache, um flexibel<br />

Zugriffsregeln zu deklarieren. Zusätzlich ist eine Sprache festgelegt, um Anfragen an <strong>und</strong><br />

Antworten vom Zugriffskontrollsystem standardisiert auszudrücken. Antwortmöglichkeiten<br />

auf eine XML-basierte Anfrage für eine Zugriffsentscheidung (zur Verbesserung der Lesbarkeit<br />

im Folgenden als Zugriffsentscheidungsanfrage bezeichnet) sind „Zugriff erlaubt“ (engl.<br />

permit), „Zugriff verboten“ (engl. deny), „nicht anwendbar“ (engl. not applicable) (d.h. es<br />

19 Für webbasierte IT-Infrastruktur ist OASIS ist neben dem W3C eines der populärsten Standardisierungsgremien.


61<br />

greift keine Regel zu dieser Anfrage) oder „nicht auswertbar“ (engl. indeterminate) (d.h. unbestimmt,<br />

weil ein Fehler bei der Anwendung des Regelwerkes aufgetreten ist) (vgl.<br />

SUNXACML 1.2).<br />

Neben der Syntax <strong>und</strong> Semantik der erwähnten Sprachen sind in der XACML Spezifikation<br />

modulare Einheiten eines Zugriffskontrollsystems sowie der Datenfluss zwischen diesen Bausteinen,<br />

dem Nutzer <strong>und</strong> der Anwendung grob festgelegt. Abbildung 4.1 zeigt vereinfacht den<br />

Datenfluss in einem XACML-basierten Zugriffskontrollsystem.<br />

Nutzer<br />

Web Service Anfrage oder<br />

Web Service Antwort<br />

Web Service<br />

PEP<br />

Context Handler<br />

PIP<br />

SSO<br />

PAP Regelwerk PDP<br />

Abbildung 4.1 Datenfluss in einem XACML-basierten Zugriffskontrollsystem (angelehnt an<br />

XACML Spec 1.1, S. 19)<br />

Die Administratoren des Regelwerkes können über eine Eingabemaske, den so genannten Policy<br />

Administration Point (PAP), ihre Zugriffsregeln zentral festlegen. Der PAP dient als Eingabemaske<br />

für Regeln <strong>und</strong> kümmert sich um die Verwaltung des Regelwerkes, wodurch das<br />

Erzeugen <strong>und</strong> Pflegen der Zugriffsregeln erleichtert wird. Ein PAP 20 bietet beispielsweise:<br />

• eine globale Sicht auf alle Regeln im System<br />

• eine Erkennung von Regelkonflikten <strong>und</strong> Behandlungshilfen<br />

• eine Visualisierung von Regeln<br />

20 Diese Komponente eines Zugriffskontrollsystems wird in dieser Arbeit nicht behandelt (vgl. Aufgabenstellung).


62<br />

Sobald ein Subjekt eine Aktion auf <strong>einer</strong> Ressource 21 ausführen möchte, muss das Zugriffskontrollsystem<br />

aktiviert werden. Die Einheit, die als Einstiegspunkt in den Prozess der<br />

Zugriffskontrolle dient, wird Policy Enforcement Point (PEP) genannt. Der PEP stellt somit<br />

den „Wächter“ der Ressourcen dar <strong>und</strong> gewährleistet, dass nur autorisierte Zugriffe stattfinden<br />

können.<br />

Der PEP erzeugt auf Basis der ihm zur Verfügung stehenden Informationen (z.B. die Web<br />

Service Anfrage – beim Pre-Processing – oder deren Antwort – beim Post-Processing) eine<br />

Zugriffsentscheidungsanfrage, die an den Context Handler übergeben wird. Diese wird auch<br />

XACML Request Context genannt, genügt einem standardisierten Format <strong>und</strong> dient als Abstraktionsebene<br />

des Zugriffskontrollsystems zu der zu schützenden Anwendungsumgebung<br />

(z.B. ein bestimmter Web Service). Dadurch haben Zugriffsentscheidungsanfragen ein einheitliches<br />

Format <strong>und</strong> es ist möglich, das selbe Regelwerk für mehrere Anwendungen oder für<br />

unterschiedliche PEPs zu verwenden. Der XACML Request Context wird vom Context Handler<br />

bearbeitet (siehe 4.2.2) <strong>und</strong> an den so genannten Policy Decision Point (PDP) weitergeleitet.<br />

Der PDP überprüft daraufhin, welche Regeln für diese Zugriffsentscheidungsanfrage anwendbar<br />

sind, wertet diese aus <strong>und</strong> liefert eine Antwort zur Anfrage, den so genannten<br />

XACML Response Context – die Zugriffsentscheidungsantwort, über den Context Handler an<br />

den PEP. Dieser wertet das Ergebnis des Zugriffskontrollsystems aus <strong>und</strong> bedient den Nutzer<br />

(Post-Processing) bzw. den Web Service (Pre-Processing) entsprechend (vgl. 4.2.3).<br />

Der Policy Information Point (PIP) dient zum Anfordern zusätzlicher Attribute, die für eine<br />

Autorisationsentscheidung nötig sind (z.B. aktuelle Uhrzeit).<br />

Zu betonen ist, dass in der XACML Spezifikation keine Einschränkungen zur Lage <strong>und</strong> Anzahl<br />

der einzelnen Einheiten (PEP, PDP ect.) festgelegt sind. Ebenfalls ist nicht genau vorgegeben,<br />

welche Informationen zwischen den Modulen ausgetauscht werden sollen. Damit ist<br />

gemeint, dass bei der Umsetzung <strong>einer</strong> Zugriffskontrolle, die zur XACML Spezifikation konform<br />

ist, zwar vorgeschrieben ist, welche Sprache (Vokabular <strong>und</strong> Grammatik) zur Kommunikation<br />

zwischen den einzelnen Komponenten zu verwenden ist, welche Inhalte allerdings<br />

kommuniziert werden ist den Entwicklern eines Zugriffskontrollsystems selbst überlassen.<br />

Neben XACML wurden einige andere Sprachen entwickelt, um Zugriffsregeln zu definieren,<br />

mit denen feingranulare, kontextabhängige <strong>und</strong> inhaltsbezogene Zugriffskontrolle ermöglicht<br />

werden soll (z.B. XRML – die eXtensible Rights Markup Language). Nachfolgende Argumente<br />

begründen weshalb in dieser Arbeit gerade XACML zur Definition des Regelwerkes<br />

verwendet wurde:<br />

21 Statt des Begriffes Objekt wird das Synonym Ressource verwendet, um an die XACML Terminologie angepasst<br />

zu formulieren.


63<br />

• standardisiert<br />

‣ Interoperabilität der Zugriffsregeln – d.h. Regeln sind für viele Anwendungen<br />

nutzbar.<br />

‣ Möglichkeit der Zusammenführung individueller Regeln oder ganzer Regelwerke<br />

zu einem einzigen Regelwerk.<br />

‣ Basis um die <strong>Entwicklung</strong> von fortgeschrittenen Werkzeugen für Zugriffskontrollsysteme<br />

voranzutreiben (z.B. Tools zum Editieren <strong>und</strong> Testen des Regelwerkes)<br />

• XML-basiert <strong>und</strong> daher unabhängig von <strong>einer</strong> bestimmten Systemumgebung <strong>und</strong> Programmiersprache<br />

verwendbar<br />

• Es existiert eine Abstraktionsschicht zur Abkapselung des Zugriffskontrollsystem von der<br />

Anwendungsumgebung.<br />

• Unterstützung verteilter Regelwerke sowie verteilter PEPs <strong>und</strong> PDPs (dezentrale Architektur<br />

des Zugriffskontrollsystems möglich)<br />

• Verwaltbarkeit des Regelwerkes durch mehrere Administratoren<br />

• Ausdrucksstärke<br />

Bei der Definition der Zugriffsregeln stehen zahlreiche logische <strong>und</strong> mathematische Funktionen<br />

auf den Attributen der Ressourcen, der Subjekte, der Aktionen <strong>und</strong> der Systemumgebung<br />

zur Verfügung.<br />

• Die Sprache kann an klar definierten Stellen (Attributtypen, Funktionen, Combining Algorithmen)<br />

nach Belieben erweitert werden (z.B. Unterstützung räumlicher Funktionen –<br />

eine in dieser Arbeit definierte Erweiterung; siehe 5.3).<br />

• Vordefinierte sowie selbstdefinierte, konfliktauflösende <strong>und</strong> regelverbindene Algorithmen<br />

sind verwendbar.<br />

• Es existiert eine Methodik, um die zu <strong>einer</strong> Zugriffsentscheidungsanfrage passenden Regeln<br />

schnell zu identifizieren.<br />

• Es besteht die Möglichkeit, eine Menge von Anweisungen zu definieren, die ausgeführt<br />

werden müssen, wenn eine Police durchgesetzt wurde.<br />

4.1.2 Das Sprachmodell des Regelwerkes<br />

Zur Kodierung der Zugriffsregeln wird in der XACML Spezifikation eine XML-basierte<br />

Sprache definiert, deren Modell in Abbildung 4.2 abgebildet ist. Demnach ist das Regelwerk<br />

durch eine Menge an XML Dokumenten definiert.


64<br />

1<br />

PolicySet<br />

1<br />

1<br />

1<br />

0..*<br />

1<br />

Policy<br />

Combining<br />

Alogorithm<br />

1<br />

Target<br />

0..1<br />

0..1<br />

1<br />

1<br />

0..*<br />

Policy<br />

0..*<br />

Obligations<br />

1 0..1<br />

1<br />

1<br />

1<br />

1<br />

1<br />

1..*<br />

1..*<br />

1..*<br />

1..*<br />

1<br />

Subject<br />

Resource<br />

Action<br />

Environment<br />

Rule<br />

Combining<br />

Algorithm<br />

1<br />

0..*<br />

1<br />

Rule<br />

1<br />

1<br />

0..1<br />

Condition<br />

1<br />

Effect<br />

Abbildung 4.2 Klassendiagramm der Sprache XACML (XACML Spec 1.1, S. 21)<br />

Die XACML Regel<br />

In XACML stellt eine Regel die elementarste Einheit der Police dar, beinhaltet die Kernlogik<br />

des Regelwerkes <strong>und</strong> „existiert“ in einem Policy Objekt bzw. Element (objektorientierte


65<br />

oder XML-orientierte Sichtweise). Eine Regel hat einen Effekt („permit“ oder „deny“), ein<br />

Ziel (engl. Target) <strong>und</strong> eine Bedingung (engl. Condition). In <strong>einer</strong> XACML Regel werden ü-<br />

ber Funktionen die Daten der zu bearbeitenden Zugriffsentscheidungsanfragen untereinander<br />

oder mit beliebig definierten Konstanten verglichen. Da es sich bei den Daten unter anderem<br />

um Werte der Ressource oder des Kontexts handelt, wird ersichtlich, dass durch XACML Regeln<br />

inhalts- <strong>und</strong> kontextabhängige Zugriffskontrolle möglich ist.<br />

Das Target besteht aus den drei Teilen Resource, Subject <strong>und</strong> Action. In diesen<br />

wird festgelegt, welchen Eigenschaften die Zugriffsentscheidungsanfrage genügen muss, damit<br />

die erste Voraussetzung für die Anwendbarkeit der Regel erfüllt ist. Das Target dient<br />

zur Indexierung der Regeln, so dass deren Anwendbarkeit auf eine konkrete Zugriffsentscheidungsanfrage<br />

schnell entschieden werden kann.<br />

Durch die Bedingung der Regel wird die Anwendbarkeit der Regel, wie sie im Target definiert<br />

worden ist, verf<strong>einer</strong>t. In Bedingungen sind beliebig geschachtelte Logikausdrücke <strong>und</strong><br />

Funktionen umsetzbar.<br />

Wenn der Resource-, Action- <strong>und</strong> Subject-Teil des Targets erfüllt ist <strong>und</strong> die anschließende<br />

Überprüfung der Condition erfolgreich ist, kann die Regel angewendet werden.<br />

Dies hat zur Folge, dass der Effekt der Regel bei der Bestimmung der Zugriffsentscheidung<br />

mit einfließt.<br />

Die XACML Policy<br />

Zunächst sei zur Verdeutlichung erwähnt, dass ein signifikanter Unterschied zwischen dem<br />

Wort Police <strong>und</strong> Policy, wie es in XACML benutzt wird, besteht. Unter <strong>einer</strong> Police versteht<br />

man ein Regelwerk, welches das Verhalten des Zugriffskontrollsystems definiert. Mit<br />

<strong>einer</strong> Policy 22 in XACML ist dagegen ein Behälter für Regeln gemeint. Dieser kann in bestimmten<br />

Fällen das Regelwerk darstellen. Üblicherweise wird das Regelwerk aber durch eine<br />

Menge von Behältern bzw. Policys definiert.<br />

Wie in obiger Graphik ersichtlich wird, ist eine Policy durch ein Target, einen regelverbindenden<br />

(engl. rule combining) Algorithmus, eine Menge an Regeln <strong>und</strong> Obligations<br />

definiert. Das Target spezifiziert die Anwendbarkeit der Policy auf eine Menge von Anfragen.<br />

Durch den regelverbindenden Algorithmus (z.B. deny overrides, first applicable etc.)<br />

wird definiert, wie bei der Anwendung des Regelwerkes die Ergebnisse der Regeln in der<br />

Policy, sofern mehrere Regeln zu <strong>einer</strong> Anfrage greifen, zu einem Gesamtergebnis der Policy<br />

verschmolzen werden sollen. Obligations bieten die Möglichkeit, eine Menge von<br />

Anweisungen zu definieren, die vom PEP ausgeführt werden müssen, wenn eine Regel <strong>und</strong><br />

22 Im Folgenden wird der englische Begriff Policy verwendet, um hervorzuheben, dass die durch XACML<br />

definierte Semantik gemeint ist.


66<br />

eine Policy angewendet wurde. Ein PEP, der einen XACML Response Context inklusive<br />

Obligations erhält, muss diese erfolgreich ausführen. Versteht er die Obligations<br />

nicht oder können sie nicht erfolgreich umgesetzt werden, dann muss der Zugriff abgelehnt<br />

werden.<br />

Das XACML PolicySet<br />

Ein PolicySet stellt einen Behälter für Policy Elemente oder Referenzen auf diese dar.<br />

Durch eine Schachtelung der PolicySet Elemente wird eine beliebige Strukturierung des<br />

Regelwerkes ermöglicht. Die Komponenten eines PolicySets sind ein Target, ein Policy<br />

verbindender (policy combining) Algorithmus, beliebig viele Policy Objekte/Elemente<br />

<strong>und</strong> Obligations. Das Target definiert die Anwendbarkeit des Policy-<br />

Sets für eine Zugriffsentscheidungsanfrage. Der Policy verbindende Algorithmus legt<br />

fest, wie die Ergebnisse der enthaltenen Policys kombiniert werden.<br />

4.1.3 Der XACML Request <strong>und</strong> Response Context<br />

XACML arbeitet im Wesentlichen auf Basis von Attributen. Diese haben einen Namen, einen<br />

Wert <strong>und</strong> gehören zu einem Datentyp – man spricht vom Attributnamen, Attributwert <strong>und</strong><br />

vom Attributtyp 23 . Der PEP belegt benötigte Attribute im XACML Request Context mit Werten<br />

aus der Anfrage an den Web Service (Pre-Processing) oder der Antwort des Web Services<br />

(Post-Processing). Der Aufbau des Request Contexts ist viergeteilt. In der Subject Sektion<br />

werden Attribute zum anfragenden Subjekt übergeben. Im Action Abschnitt werden die Daten<br />

zu der vom Subjekt angeforderten Aktion (GetFeature, etc.) eingetragen. Im Resource<br />

Teil des Request Contexts werden Daten zu den angefragten Ressourcen hinzugefügt. Hier<br />

kann sich beispielsweise das beim Web Service angefragte XML Dokument befinden. Im optionalen<br />

Environment Teil werden Daten zum Zustand bzw. Kontext des Zugriffskontrollsystems<br />

übergeben. Jeder Bereich enthält Attributname-Wert-Paare, die sich alle auf die konkrete<br />

Zugriffsanfrage beziehen. Unten abgedrucktes Codebeispiel zeigt exemplarisch den<br />

Aufbau eines XACML Request Contexts, der infolge eines lesenden Zugriffes auf Geodaten<br />

des WFS vom PEP erzeugt wurde (vereinfachte Syntax; detailliertere Informationen zum<br />

XACML Request Context siehe XACML Spec 1.1, z.B. S. 27 oder 30).<br />

<br />

<br />

<br />

<br />

max_mustermann@chbank.ch<br />

<br />

23 Um der XACML Terminologie zu folgen, wird der Begriff Attributtyp statt des Begriffes Datentyp verwendet.


67<br />

<br />

Auszubildender<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

-180.0,-90.0 180.0,90.0<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

-120.000000,65.588264 ...-120.000000,65.588264<br />

<br />

<br />

<br />

<br />

<br />

FMI-Bau<br />

1983<br />

TU-München<br />

4<br />

<br />

<br />

<br />

...<br />

<br />

...<br />

<br />

<br />

<br />

/Request/Resource/ResourceContent/<br />

<br />

<br />

Descendants<br />

<br />

<br />

WebFeatureService:port7071<br />

<br />

<br />

<br />

<br />

GetFeature<br />

<br />

<br />

<br />

Durch das so genannte ResourceContent Element besteht die Möglichkeit, alle Ressourcen,<br />

die von der Nutzerinteraktion betroffen sind, in den Request Context zu integrieren. In<br />

den XACML Regeln können die Daten des Request Contexts referenziert <strong>und</strong> ausgewertet<br />

werden, um inhalts- oder kontextabhängige Zugriffsentscheidungen zu bestimmen.<br />

Eine Möglichkeit, um in <strong>einer</strong> Regel auf die Werte des XACML Request Contexts zuzugreifen,<br />

bietet der so genannte AttributeDesignator. Durch ihn können die Werte der Attribute ü-<br />

ber die Attributnamen selektiert werden. Diese dienen dann als Argumente in den Funktionen


68<br />

der Regeln. Ein weiterer Mechanismus zur Adressierung von Werten im Request Context<br />

(genauer im ResourceContent Element) bietet der AttributeSelector. In einem Attribute-<br />

Selector wird ein XPath-Ausdruck definiert, der über dem<br />

/Request/Resource/ResourceContent Knoten der Zugriffsentscheidungsanfrage ausgewertet<br />

wird. Dort befindet sich in der Regel die Kopie der zu schützenden Ressource (z.B. das vom<br />

Web Service als Antwort auf eine lesende Aktion generierte XML Dokument). Der Attribute-<br />

Selector holt die durch XPath adressierten Knoten, die dann als Argumente in den Funktionen<br />

der Regelbedingung verwendet werden können.<br />

Sowohl der AttributeDesignator als auch der AttributeSelector liefert eine „Wertemenge“ zurück.<br />

XACML hat dafür einen speziellen Attributtyp „Bag“ (d.h Multimenge) inklusive Funktionen<br />

zur Verarbeitung des Attributtyps vorgesehen.<br />

Für ein besseres Verständnis der Sprache des Regelwerkes <strong>und</strong> des XACML Request/Response<br />

Contexts sei auf die gut dokumentierten Beispiele in der XACML Spezifikation<br />

(XACML Spec 1.1, S. 25-46) verwiesen. Dem interessierten Leser ist für einen tieferen<br />

Einstieg in die Sprachen das Lesen der XACML Spezifikation (XACML Spec 1.1) empfohlen.<br />

4.2 Zugriffskontrolle für XML Dokumente mit XACML<br />

Ausgangspunkt für die Ausführungen dieses Abschnittes ist, dass ein Subjekt über die Get-<br />

Feature Anfrage lesend auf die Geodaten eines WFS zugreifen möchte. Ferner wird ein<br />

Zugriffskontrollmechanismus nach dem Post-Processing Ansatz angenommen. Das bedeutet,<br />

dass das GML-kodierte Antwortdokument – die zu schützende dynamisch generierte Ressource<br />

– nach s<strong>einer</strong> Erzeugung durch den WFS vom Zugriffskontrollsystem auf Zugriffsrechte<br />

überprüft <strong>und</strong> gegebenenfalls modifiziert werden muss.<br />

Im XACML Jargon wird ein zu schützendes XML Dokument als hierarchische Ressource bezeichnet,<br />

die aus zahlreichen individuellen Ressourcen – den Knoten – besteht (z.B. in<br />

XACML HierProf, S. 3). Es wird davon ausgegangen, dass alle Knoten eines dynamisch generierten<br />

XML Dokumentes an den Nutzer übermittelt werden sollen. Das bedeutet für die<br />

Zugriffskontrolle, dass für jeden Knoten des Dokumentbaumes alle Regeln auf Anwendbarkeit<br />

überprüft werden müssen.<br />

Hierzu kann der PEP eine Zugriffsentscheidungsanfrage für alle Knoten oder mehrere<br />

Zugriffsentscheidungsanfragen – eine je Knoten – auf unterschiedliche Art <strong>und</strong> Weise absetzen.<br />

Da wie bereits erwähnt in der XACML Spezifikation nicht festgelegt ist, wie die Inhalte<br />

der Nachrichten aufzubauen sind, wird im Folgenden beschrieben, wie XACML-konform lesender<br />

Zugriff auf dynamisch generierte XML Dokumente kontrolliert werden kann.


69<br />

4.2.1 Die vom PEP generierte globale Zugriffsentscheidungsanfrage<br />

Zur Unterscheidung der vom PEP abgesetzten <strong>und</strong> der vom Context Handler weitergeleiteten<br />

Zugriffsentscheidungsanfrage werden die Begriffe globaler XACML Request Context (die<br />

vom PEP kommende Anfrage) <strong>und</strong> individueller XACML Request Context (die vom Context<br />

Handler kommende Zugriffsentscheidungsanfrage) eingeführt.<br />

Bei der Überprüfung der Zugriffsregeln zu einem XML Dokument muss der PEP auf Basis<br />

der ihm zur Verfügung stehenden Werte einen globalen XACML Request Context generieren.<br />

Hierzu gibt es mehrere Möglichkeiten.<br />

Eine Variante ist, dass der PEP das angefragte XML Dokument parst <strong>und</strong> die ihm bekannten<br />

Knoten (beispielsweise die im GML Dokument vorkommenden Featuretypen) explizit über<br />

XACML Attribute in den globalen XACML Request Context einträgt. Dies fordert allerdings<br />

komplexe Funktionalitäten im PEP ( Perfomanceeinbußen) <strong>und</strong> der Aufbau des Regelwerkes<br />

lässt sich nicht mehr einfach baumartig organisieren (vgl. Anhang C.2 24 ).<br />

Eine andere Möglichkeit, einen globalen XACML Request Context zu erzeugen, ist, dass der<br />

PEP neben allen bekannten Werten zum anfragenden Subjekt <strong>und</strong> zur getätigten Aktion unter<br />

dem /Request/Resource/ResourceContent Element das zu schützende XML Dokument – die<br />

Web Service Antwort (vgl. Annahmen zu Beginn von 4 oder 4.2) – einfügt. Zudem werden<br />

im Resource Teil des globalen XACML Requests die mit <strong>einer</strong> besonderen Semantik versehenen<br />

Attribute resource-id <strong>und</strong> scope verwendet. Das resource-id Attribut<br />

zeigt auf denjenigen Knoten des im ResourceContent Element eingefügten XML Dokumentes,<br />

ab dem die Zugriffsregeln überprüft werden sollen. Das scope Attribut definiert relativ<br />

zu dem im resource-id Attribut angegebenem Wert, für welche Knoten im XML<br />

Dokument der Zugriff kontrolliert werden soll. Im Beispiel aus 4.1.3 impliziert der Wert des<br />

scope Attributes – descendants (deutsch: Nachkommen) – <strong>und</strong> der Wert des resource-id<br />

Attributes, der auf die Wurzel des im ResourceContent Element eingefügten<br />

XML Dokumentes zeigt, dass für alle Knoten im angeforderten Dokument der Zugriff überprüft<br />

werden soll.<br />

Durch die zweite Variante wird im PEP eine deutlich einfachere Funktionalität benötigt, wodurch<br />

sich dessen Umsetzung erleichtert <strong>und</strong> zudem ein schnelles Generieren globaler<br />

Zugriffsentscheidungsanfragen begünstigt wird.<br />

Aufgr<strong>und</strong> dieser Vorteile wurde die zweite Variante zum Erzeugen von globalen Zugriffsentscheidungsanfragen<br />

gewählt.<br />

24 Die Lektüre des Anhangs C wird frühestens nach dem Lesen dieses Kapitels empfohlen


70<br />

4.2.2 Varianten zur Weiterleitung der globalen Zugriffsentscheidungsanfrage<br />

zu <strong>einer</strong> hierarchischen Ressource durch den Context Handler<br />

an den PDP<br />

Der Context Handler, der den vom PEP erzeugten globalen XACML Request Context entgegennimmt,<br />

kann die Zugriffsentscheidungsanfrage auf mehrere Arten an den PDP weiterleiten.<br />

Nachfolgend werden zwei sinnvolle Alternativen diskutiert.<br />

Variante A:<br />

Der Context Handler erzeugt auf Basis des globalen XACML Request Contexts für die durch<br />

resource-id <strong>und</strong> scope spezifizierten Knoten individuelle Zugriffsentscheidungsanfragen<br />

(eine je Knoten), die einzeln an den PDP geschickt werden.<br />

Der PDP kann durch das scope Attribut ermitteln, für welche Knoten eine individuelle<br />

Zugriffsanfrage erzeugt werden soll. Dies geschieht relativ zu dem Knoten, der durch das<br />

resource-id Attribut der globalen Zugriffsentscheidungsanfrage selektiert wird. Mögliche<br />

scope Werte sind descendants, entire hierarchie <strong>und</strong> children 25 .<br />

Bei descendants wird für jeden Knoten unterhalb des durch resource-id bestimmten<br />

Knotens eine individuelle Zugriffsentscheidungsanfrage an den PDP übergeben. Nach Behandlung<br />

der individuellen Zugriffsentscheidungsanfragen (diese beziehen sich auf genau einen<br />

Knoten) werden die individuellen Zugriffsentscheidungsantworten (entspricht der<br />

Zugriffsentscheidung für diesen Knoten) einzeln vom PDP an den Context Handler gesendet<br />

<strong>und</strong> unverändert an den PEP weitergeleitet.<br />

Bei entire hierarchie wird ebenfalls je Knoten eine individuelle Zugriffsentscheidungsanfrage<br />

an den PDP übergeben. Im Unterschied zum scope Wert descendants<br />

merkt sich der Context Handler die Ergebnisse der individuellen Zugriffsentscheidungsantworten<br />

<strong>und</strong> übergibt nur ein Gesamtergebnis für alle individuellen Knotenanfragen an den<br />

PEP. Dieses lautet nur dann permit, wenn alle Antworten auf die individuellen Request Contexts<br />

permit ergaben. Der entire hierarchie Attributwert impliziert eine Zugriffskontrolle<br />

nach dem „alles oder nichts“ Prinzip. Gr<strong>und</strong>stein für eine Zugriffskontrolle nach dem<br />

„so viel wie geht“ Prinzip ist daher ein scope Wert von descendants, da dadurch je Knoten<br />

im angeforderten Dokument eine individuelle Zugriffsentscheidungsantwort generiert<br />

wird.<br />

Zu erwähnen ist, dass die Erzeugung individueller Zugriffsentscheidungsanfragen nicht im<br />

PEP geschehen sollte, da die PEPs <strong>und</strong> PDPs räumlich verteilt liegen können <strong>und</strong> diese Vorgehensweise<br />

daher zu einem enormen Mehraufwand an Kommunikation führen würde. Die<br />

25 Der Wert children wird für die Ausführungen in dieser Arbeit nicht benötigt <strong>und</strong> wird daher nicht weiter<br />

erläutert, da alle Knoten des XML Dokumentes auf Zugriffsrechte überprüft werden müssen.


71<br />

globale XACML Zugriffsentscheidungsanfrage wird daher immer erst vom Context Handler<br />

(es wird angenommen, dass dieser im selben lokalen System läuft wie der PDP) in individuelle<br />

Zugriffsentscheidungsanfragen transformiert.<br />

Abgesehen vom Wert des resource-id Attributes entspricht der Aufbau der individuellen<br />

Zugriffsentscheidungsanfrage dem des globalen XACML Request Contexts. Das resource-id<br />

Attribut in der individuellen Zugriffsentscheidungsanfrage stellt einen eindeutigen<br />

XPath-Ausdruck dar, der genau den Knoten kennzeichnet, auf den sich die individuelle<br />

Zugriffsentscheidungsanfrage bezieht. Das scope Attribut in der individuellen Zugriffsentscheidungsanfrage<br />

hat keine Bedeutung.<br />

Beispiel eines resource-id Attributes in <strong>einer</strong> individuellen Zugriffsentscheidungsanfrage:<br />

<br />

<br />

/Request/Resource/ResourceContent/wfs:FeatureCollection[1]/gml:Feature-<br />

Member[1]/gml:Gebäude[1]<br />

<br />

<br />

Variante B:<br />

Alternativ könnte der vom PEP abgesetzte globale XACML Request Context unverändert an<br />

den PDP weitergeleitet werden. Es wird demnach eine Zugriffsentscheidungsanfrage für alle<br />

Knoten an den PDP abgesetzt. In diesem Fall wird das XML Dokument nicht als eine hierarchische<br />

Ressource, sondern als eine strukturierte, individuelle Ressource angesehen. Dies bedeutet,<br />

dass der PDP auf eine Zugriffsentscheidungsanfrage die anwendbaren Regeln für das<br />

gesamte Dokument – d.h. für alle Knoten, betrachtet als ein atomares Ganzes – identifizieren<br />

<strong>und</strong> überprüfen muss. Nach der Auswertung der greifenden Regeln gibt der PDP dann für das<br />

gesamte XML Dokument nur eine Zugriffsentscheidungsantwort zurück. Das bedeutet, dass<br />

der Zugriff auf das angeforderte Dokument entweder gewährt oder abgelehnt wird, was <strong>einer</strong><br />

Zugriffskontrolle nach dem „alles oder nichts“ Prinzip entspricht. Im PEP kann a priori nicht<br />

differenzierter bestimmt werden, welche Knotenmengen des XML Dokumentes zugriffsbeschränkt<br />

oder zugreifbar sind. Bei Variante A ist dies direkt möglich, da sich dort die<br />

Zugriffsentscheidungsantworten immer auf genau einen Knoten beziehen.<br />

Da das in dieser Arbeit entwickelte Zugriffskontrollsystem eine Zugriffskontrolle nach dem<br />

„so viel wie geht“ Prinzip unterstützen soll, muss daher – um Variante B dennoch verfolgen<br />

zu können – im Regelwerk ein zusätzlicher Mechanismus integriert werden, der den PEP mit<br />

Informationen zu den zugreifbaren <strong>und</strong> zugriffsbeschränkten Knotenmengen des XML Dokumentes<br />

beliefert.<br />

Die von XACML zur Verfügung gestellten Obligations können zur Realisierung dieses<br />

Mechanismuses – wenn auch vom XACML Komitee nicht für diese Funktionalität angedacht


72<br />

(vgl MailProctor) – verwendet werden. Sie bieten die Möglichkeit, in Abhängigkeit der Regeleffekte<br />

26 Anweisungen an den PEP zu übergeben. Da sich eine Zugriffsregel auf bestimmte<br />

Knoten des XML Dokumentes bezieht <strong>und</strong> für diese eine Zugriffsentscheidung bestimmt,<br />

kann dem PEP je nach Effekt der Regel über eine Obligation mitgeteilt werden, welche<br />

Knotenmengen zugriffsbeschränkt bzw. zugreifbar sind. Diese Informationen kann der PEP<br />

dann nutzen, um das XML Dokument so zu modifizieren, dass nur noch zugreifbare Daten in<br />

der Antwort an den Nutzer enthalten sind.<br />

Die Anwendbarkeit <strong>einer</strong> Regel, <strong>einer</strong> Policy oder eines PolicySets wird im Target<br />

definiert. Die Varianten A <strong>und</strong> B fordern unterschiedlich aufgebaute Targets (genauer:<br />

Funktionen im Resource Element des Targets), deren Definitionen im Folgenden einzeln<br />

vorgestellt werden. Ziel ist es, das Target dieser Elemente so zu deklarieren, dass für<br />

die gewünschten Knotenmengen des im ResourceContent eingefügten XML Dokumentes<br />

Autorisationen festgelegt werden können.<br />

In Variante A kann unter anderem die regexpr-string-match Funktion zur Überprüfung<br />

der Anwendbarkeit der Regeln, Policys <strong>und</strong> PolicySets verwendet werden. Hierzu<br />

wird im Resource Teil des Rule-, Policy- oder PolicySet-Targets ein regulärer<br />

Ausdruck definiert, der mit dem resource-id Wert der individuellen Zugriffsentscheidungsanfrage<br />

abgeglichen wird (siehe Umsetzung mit Variante A im unten abgebildeten Beispiel).<br />

Genügt das resource-id Element dem regulären Ausdruck, so ist eine Bedingung<br />

für das Greifen der Regel, der Policy oder des PolicySets erfüllt. Durch dieses Vorgehen<br />

kann ausgedrückt werden, auf welche Knoten sich die Regel, die Policy oder das PolicySet<br />

bezieht.<br />

Um Variante B zu ermöglichen, muss im Resource Teil der Target Elemente die<br />

xpath-node-exist Funktion zur Indexierung der Regeln, Policys <strong>und</strong> PolicySets<br />

eingesetzt werden. Diese verlangt als Argument einen String, der als XPath-Ausdruck interpretiert<br />

<strong>und</strong> über dem ResourceContent Element ausgewertet wird. Der Rückgabewert<br />

der Funktion ist „wahr“, wenn die Anzahl der durch den XPath-Ausdruck selektierten Knoten<br />

größer 1 ist.<br />

Beispiel:<br />

Betrachtet wird folgendes XML Dokument:<br />

<br />

Max Mustermann<br />

<br />

Eva<br />

<br />

Franz Nissel Gr<strong>und</strong>schule<br />

26 Hierfür wird vorausgesetzt, dass jede Regel einzeln in einem Policy Element steckt, da nur so in XACML<br />

regelbezogen eine Obligation definiert werden kann.


73<br />

<br />

...<br />

<br />

<br />

Tom<br />

<br />

Gr<strong>und</strong>schule an der Eversbuschstraße<br />

<br />

...<br />

<br />

<br />

Eine Zugriffsregel soll die Daten zu den Kinder <strong>einer</strong> Person zugriffsbeschränken, wenn das<br />

Kind die Gr<strong>und</strong>schule an der Eversbuschstraße besucht bzw. besucht hat.<br />

Umsetzung mit Variante A:<br />

Das Target der Regel nach Variante A muss demnach einen XPath-Ausdruck spezifizieren,<br />

durch den ein Greifen der Regel bei Zugriff auf den Kindknoten zu <strong>einer</strong> Person erreicht wird.<br />

Dies wird durch folgenden Regelausschnitt umgesetzt:<br />

...<br />

<br />

<br />

<br />

/Request/Resource/ResourceContent/Person\[\d+\]/Kind\[\d+\]<br />

<br />

<br />

<br />

<br />

...<br />

In der Bedingung der Regel muss dann überprüft werden, ob das gerade betrachtete Kind der<br />

Person die Gr<strong>und</strong>schule an der Eversbuschstraße besucht bzw. besucht hat. Da durch die individuellen<br />

Zugriffsentscheidungsanfragen in Variante A nach anwendbaren Zugriffsregeln für<br />

jedes Kind Element einzeln gesucht wird, bezieht sich die Zugriffsentscheidungsantwort, die<br />

unter Berücksichtigung der eben vorgestellten Regel generiert wurde auf genau ein Kind E-<br />

lement.<br />

Um in Variante B die Beispielregel umsetzen zu können, muss das Target wie folgt definiert<br />

werden:<br />

...<br />

<br />

<br />

<br />

/Request/Resource/ResourceContent/Person/Kind[besuchte_Gr<strong>und</strong>schule=<br />

”Gr<strong>und</strong>schule an der Eversbuschstraße”]<br />


74<br />

<br />

<br />

...<br />

Sofern der XPath-Ausdruck einen Knoten im zu schützenden XML Dokument selektiert (im<br />

Beispiel das Kind Tom) greift die Regel.<br />

Ein Nachteil von Variante B ist, dass sich die Definition des Regelwerkes verkompliziert –<br />

Obligations sind anzugeben. Zudem ist die Auswertung der benötigten xpath-nodeexist<br />

Funktion unter Verwendung der momentan verfügbaren XPath APIs (Xalan, Xerces<br />

usw.) weniger performant als die Evaluation der reg-exp-string-match Funktion<br />

(vgl. SUNXACML 1.2 <strong>und</strong> zur Begründung siehe die <strong>Implementierung</strong> der entsprechenden<br />

Funktionen). Dies ist ein weiterer Nachteil der Variante B.<br />

Für Variante A spricht, dass diese Vorgehensweise vom XACML Komitee beabsichtig ist<br />

(siehe MailAnderson a, XACML MultProf <strong>und</strong> XACML HierProf), auch wenn nur sehr<br />

rudimentär <strong>und</strong> noch nicht vollständig ausgereift in der aktuellen Spezifikation 1.1 angedeutet.<br />

Mit der XACML Spezifikation 2.0 (voraussichtliche Verabschiedung Anfang 2005) will<br />

das XACML Komitee diese Unklarheit beseitigen.<br />

Aufgr<strong>und</strong> der obigen Ausführungen wird im Folgenden die Variante A weiter verfolgt. Die<br />

nachfolgend beschriebenen Umsetzungen von Zugriffsregeln für (Geo) Web Services sind<br />

daher dieser Variante entsprechend entworfen worden.<br />

4.2.3 Auswertung der individuellen Zugriffsentscheidungsantworten im PEP<br />

Der PDP liefert zu jeder individuellen Zugriffsentscheidungsanfrage eine individuelle<br />

Zugriffsentscheidungsantwort, die über den Context Handler an den PEP geleitet wird.<br />

In den individuellen Zugriffsentscheidungsantworten ist neben der Zugriffsentscheidung <strong>und</strong><br />

dem Statuscode der Wert des resource-id Attributes enthalten. Dadurch ist dem PEP bekannt,<br />

auf welchen Knoten sich die Antwort bezieht. Je nach Zugriffsentscheidung kann er<br />

dann den Knoten unverändert im XML Dokument (z.B. in der Web Service Antwort) lassen<br />

oder bei einem deny den durch das resource-id gekennzeichneten Knoten aus dem Dokument<br />

herausfiltern. Wie das Herausfiltern zugriffsbeschränkter Knoten im PEP implementiert<br />

werden kann, wird in 6.4.2 behandelt.


75<br />

4.2.4 Modellierung rekursiven Regelverhaltens<br />

In einem Zugriffskontrollsystem für XML Dokumente haben alle Regeln, die sich auf Knoten<br />

in einem XML Dokumentbaum beziehen, „rekursiven 27 “ Charakter. Gr<strong>und</strong> ist die Baumstruktur<br />

des XML Dokumentes. Eine Regel, die sich auf einen Knoten A bezieht, gilt zugleich für<br />

alle Nachkommen von A. Nur wenn alle Vorgängerknoten von A zugreifbar waren <strong>und</strong> die<br />

Regelauswertung aller Regeln, die sich direkt auf den Knoten A beziehen, „Zugriff erlaubt“<br />

ergeben, ist auf Knoten A zugreifbar. Falls auf Knoten A nicht zugegriffen werden kann, impliziert<br />

dies direkt, dass alle Kinder von Knoten A auch nicht zugreifbar sind.<br />

Wäre dem nicht so, dann würde ein Zugriffskontrollsystem für XML Dokumente, das alle zugreifbaren<br />

Knoten unabhängig von der Zugreifbarkeit der Vorgängerknoten zurückgibt, für<br />

den Zerfall des XML Dokumentbaumes sorgen. Es könnte nämlich beispielsweise der Fall<br />

eintreten, dass der Vater zugriffsbeschränkt, die Kinder allerdings zugreifbar sind. In diesem<br />

Fall könnten die einzelnen neuen Bäume dieses Waldes allerdings nicht mehr sinnvoll zu <strong>einer</strong><br />

Baumstruktur zusammengefügt werden, die dem Schema des ursprünglichen Dokumentes<br />

genügt. Aufgr<strong>und</strong> dieser Problematik wird festgelegt, dass Regeln, die sich auf einen Knoten<br />

beziehen, rekursiven Einfluss auf die Nachkommen dieses Knotens haben.<br />

Die Umsetzung dieses rekursiven Regelverhaltens kann indirekt durch die Arbeitsweise des<br />

Context Handlers ausgedrückt werden. Dieser stellt je Knoten im XML Dokument eine individuellen<br />

Zugriffsentscheidungsanfrage. Dabei geht er den Dokumentbaum in Preorder ab<br />

(d.h. Tiefensuche von links nach rechts). Sobald die Antwort auf eine individuelle Zugriffsentscheidungsanfrage<br />

„deny“ war, muss für den Unterbaum dieses Knotens keine weitere individuelle<br />

Zugriffsentscheidungsanfrage abgesetzt werden, da diese Nachkommenknoten wegen<br />

der Rekursivität ebenfalls nicht mehr zugänglich sind.<br />

Alternativ kann der Context Handler die individuellen Zugriffsentscheidungsanfragen unabhängig<br />

von individuellen Zugriffsentscheidungsantworten absetzen. Er generiert ohne Intelligenz<br />

für jeden Knoten des Dokumentes eine individuelle Zugriffsentscheidungsanfrage.<br />

Die Umsetzung des rekursiven Regelverhaltens geschieht dann durch die Arbeitsweise des<br />

PEPs. Soll dieser einen zugriffsbeschränkten Knoten aus dem XML Dokument herausfiltern,<br />

so wird dieser samt seinen Nachfahren gelöscht. Zugriffsentscheidungsantworten zu Knoten,<br />

die bereits entfernt wurden, werden vom PEP ignoriert.<br />

27 Darunter wird in diesem Zusammenhang verstanden, dass sich die Regel auf einen Knoten <strong>und</strong> sämtliche<br />

Nachkommen dieses Knotens bezieht.


76<br />

4.2.5 Erweiterung der Mechanismen zur Referenzierung von Attributen<br />

aus XACML Regeln<br />

Durch die in 4.2.1 <strong>und</strong> 4.2.2 beschriebene Art der Kommunikation zwischen PEP, Context<br />

Handler <strong>und</strong> PDP ist neben dem AttributeSelector <strong>und</strong> dem AttributeDesignator eine neue Art<br />

der Referenzierung von Attributen im Request Context möglich geworden. Da sich jede individuelle<br />

Zugriffsentscheidungsanfrage auf einen Knoten im angeforderten XML Dokument<br />

bezieht, kann man in den Regeln Werte relativ zu dem aktuell betrachten Knoten der individuellen<br />

Zugriffsentscheidungsanfrage (per resource-id Attribut adressiert) selektieren.<br />

Da mit dem AttributeSelector nur explizit angegebene XPath-Ausdrücke verarbeitet werden<br />

können, wurde XACML um neue Funktionen zum Referenzieren von Werten relativ zu einem<br />

Kontextknoten erweitert.<br />

Diese so genannte datentyp-InformationSelector Funktionen erwarten zwei String Argumente,<br />

die als die Teile eines XPath-Ausdruckes interpretiert werden. Die beiden Argumente werden<br />

zu einem XPath-Ausdruck konkateniert <strong>und</strong> anschließend werden die so adressierten Knoten,<br />

entsprechend der Funktionalität des AttributeSelectors, als Strings kodiert geholt. Durch die<br />

Angabe des Datentyps, bzw. Attributtyps (datentyp-InformationSelector) ist es möglich, die<br />

selektierten Knoten als entsprechende Attributtypen zu instanzieren (vgl. 6.2.3). Es existiert<br />

daher für jeden Attributtyp ein eigener InformationSelector.<br />

Beim datentyp-InformationSelector muss, wie auch beim AttributeSelector <strong>und</strong> beim AttributeDesignator,<br />

angegeben werden, wie zu verfahren ist, wenn die zu selektierenden Knoten im<br />

XACML Request Context nicht vorhanden sind. Um auszudrücken, dass die Regel das Vorhandensein<br />

der selektierten Werte erwartet, muss das boolsche must-be-present Attribut<br />

gesetzt werden. Ist es „wahr“ <strong>und</strong> die adressierten Knoten sind nicht in der Zugriffsentscheidungsanfrage<br />

enthalten, dann evaluiert der Selektor bzw. der Designator <strong>und</strong> damit die Regel<br />

zu „nicht auswertbar“. Im Falle eines „false“ Wertes <strong>und</strong> adressierten, aber nicht existenten<br />

Knoten liefert der Selektor eine leere Menge zurück. Dieses Verhalten muss bei der Definition<br />

der Regel berücksichtigt werden.<br />

4.3 Modellierung unterschiedlicher Regeltypen für Geo Web Services<br />

In dieser Arbeit wird beschrieben, wie Zugriffskontrolle für Geo Web Services zu realisieren<br />

ist. Für dieses Anwendungsszenario lassen sich vier besondere Regeltypen herausarbeiten.<br />

Ausgehend davon, dass Geodaten als Features objektartig modelliert <strong>und</strong> in GML-kodierter<br />

Form vorliegen, können sich Zugriffsregeln auf einen Featuretyp, auf Eigenschaften eines<br />

Featuretyps, auf bestimmte Features, d.h. auf Instanzen eines Featuretyps, oder auf Eigen-


77<br />

schaften eines Features beziehen. Auf Basis dieser Unterteilung werden im Folgenden vier<br />

Regeltypen einzeln betrachtet:<br />

Definitionen:<br />

• Typregel<br />

Eine Regel, die den Zugriff auf Features aufgr<strong>und</strong> des Typs, dem die Features angehören,<br />

einschränkt oder zulässt.<br />

• Instanzregel<br />

Eine Regel, die den Zugriff auf Features aufgr<strong>und</strong> nicht raumbezogener Eigenschaften der<br />

Features definiert. Zugriffsregeln dieses Typs stützen sich auf die Daten eines Features<br />

(Textknoten des XML Dokumentes), woraus folgt, dass es sich um inhaltsabhängige Regeln<br />

handelt.<br />

• Raumregel<br />

Eine Regel, die den Zugriff auf Features aufgr<strong>und</strong> der raumbezogenen Eigenschaften der<br />

Features festlegt. In Raumregeln können Gebiete im Raum – d.h. georeferenzierte, geometrische<br />

Objekte – definiert werden. Diese werden im Folgenden als Regelgebiet bezeichnet.<br />

Neben dem Regelgebiet muss in der Raumregel zusätzlich eine räumliche Analyse<br />

(z.B. eine topologische oder eine räumliche Operation) spezifiziert werden. Die<br />

raumbezogene Zugriffsregel kann angewendet werden, wenn die Rauminformation eines<br />

angefragten Features die Relationen zum Regelgebiet erfüllt.<br />

• RaumInstanzregel<br />

Eine Regel, die den Zugriff auf Features aufgr<strong>und</strong> von raumbezogenen <strong>und</strong> nicht raumbezogenen<br />

Eigenschaften der Features bestimmt. Bei <strong>einer</strong> RaumInstanzregel handelt es sich<br />

demnach um die Kombination <strong>einer</strong> Instanz- <strong>und</strong> <strong>einer</strong> Raumregel in <strong>einer</strong> Regel.<br />

Unabhängig vom Regeltyp <strong>und</strong> allen Regeln gemeinsam ist, dass sie sich auf bestimmte individuelle<br />

Zugriffsentscheidungsanfragen beziehen. Die Anfragen drücken aus, welches Subjekt<br />

eine bestimmte Aktion auf einem Knoten ausgeführt hat. Diese Information kann in der<br />

Zugriffsregel genutzt werden, um zu entscheiden, ob sie angewendet werden soll. Eine Verf<strong>einer</strong>ung<br />

der Entscheidung zur Anwendbarkeit geschieht gegebenenfalls in der Bedingung<br />

der Regeln. Die Anzahl der Features, auf die sich eine Regel bezieht, ist abhängig von der<br />

Semantik der Regel, vom Inhalt der Datenbasis <strong>und</strong> von der Anfrage des Nutzers an den Web<br />

Service.<br />

4.3.1 Festlegen von Zugriffsregeln auf den Featuretyp<br />

Die allgemeinste Form <strong>einer</strong> Zugriffsbeschränkung für GML-kodierte Geodaten bezieht sich<br />

auf den Typ eines Features. Regeln dieser Art erlauben oder beschränken den Zugriff auf alle


78<br />

Features dieses Typs. Für die folgende Betrachtung wird vorausgesetzt, dass der Featuretyp<br />

eines Objektes als ein Elementknoten kodiert ist. Diese Annahme entspricht der Empfehlung<br />

in der GML Spezifikation (OGC GML 2.1.2, S. 9).<br />

Regeln auf Typebene greifen daher, wenn das resource-id Attribut im individuellen Request<br />

Context einen XPath-Ausdruck darstellt, der genau einen Elementknoten im angeforderten<br />

Dokument adressiert, dessen Wert dem Featuretyp entspricht, auf den sich die Regel beziehen<br />

soll.<br />

Aufbau <strong>einer</strong> Typregel<br />

Durch die unten dargestellte Syntax sind Regeln möglich, die sich auf beliebige Element- <strong>und</strong><br />

Attributknoten im XML Dokument beziehen. Da Typregeln eigentlich Zugriffsregeln auf E-<br />

lementknoten darstellen (der Featuretyp ist ja durch einen Elementknoten ausgedrückt), lassen<br />

sich durch diese Syntax Zugriffsregeln für einen Featuretyp deklarieren. Attributregeln sind<br />

ein Spezialfall von Elementregeln. Zunächst wird eine typbezogene Regel betrachtet (Beispiel<br />

1). Im Anschluss wird die verallgem<strong>einer</strong>te Form der Element- <strong>und</strong> Attributknoten Regeln<br />

vorgestellt (siehe Beispiel 2, 3 <strong>und</strong> 4).<br />

Beispiel 1: Typregel<br />

Durch die unten abgedruckte Regel soll der Zugriff auf Features vom Typ Gebäude gewährt<br />

werden.<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

/Request/Resource/ResourceContent/FeatureCollection\[\d+\]/<br />

featureMember\[\d+\]/GEBAEUDE\[\d+\]<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

GetFeature<br />

<br />

<br />

<br />

<br />

<br />


79<br />

Die in Beispiel 1 aufgeführte Typregel wird für Zugriffsentscheidungsanfragen angewendet,<br />

sofern ihr Target erfüllt ist. Aufgr<strong>und</strong> des Elementes wird die Regel<br />

unabhängig vom Subjekt, das die Aktion getätigt hat, angesprungen. Dies wird vereinfachend<br />

für alle folgenden Beispiele angenommen, weshalb der Subject Teil des Targets dort<br />

weggelassen wird. Der Action Teil der Regel ist erfüllt, wenn die vom Nutzer getätigte Aktion<br />

der GetFeature Operation entspricht. Wie bereits erwähnt (vgl. 3.3.4 oder Kapitel 4 Anfang),<br />

wird in diesem Kapitel nur der lesende Zugriff, d.h. die GetFeature Anfrage, betrachtet.<br />

Daher ist der Action Teil für alle unter 4.3 aufgeführten Beispiele gleich dem obigen <strong>und</strong><br />

wird daher in den nachfolgende Codebeispielen ebenfalls weggelassen.<br />

Das Charakteristikum <strong>einer</strong> Typregel steckt im Resource Teil ihres Target Elementes.<br />

Dieser ist erfüllt, wenn der Wert des resource-id Attributes der individuellen Zugriffsentscheidungsanfrage<br />

dem regulären Ausdruck<br />

/Request/Resource/ResourceContent/FeatureCollection\[\d+\]/feat<br />

ureMember\[\d+\]/GEBAEUDE\[\d+\]<br />

genügt. Obige Regel würde beispielsweise zu <strong>einer</strong> Zugriffsentscheidungsanfrage mit einem<br />

resource-id Wert gleich<br />

„/Request/Resource/ResourceContent/FeatureCollection[1]/<br />

featureMember[5]/GEBAEUDE[1]“<br />

greifen. Das bedeutet, dass obige Regel für alle im angefragten Dokument vorkommenden<br />

Gebäude-Featureknoten zur Anwendung kommt.<br />

Nun werden Zugriffsregeln für beliebige Element- <strong>und</strong> Attributknoten im Dokument betrachtet.<br />

Beispiel 2: Zugriffsregel für einen beliebigen Elementknoten<br />

Ein SSO möchte, dass die Nutzer alle Eigenschaften eines Features vom Typ Gebäude sehen<br />

dürfen, außer den Besitzer. Wird zu einem Feature auch die Besitzer-Eigenschaft abgefragt,<br />

so soll der Nutzer nur dieses Element nicht sehen. Um diese Regel inklusive der gewünschten<br />

Konsequenz umzusetzen, muss die Regel greifen, wenn sich die individuelle Zugriffsentscheidungsanfrage<br />

auf den Besitzer-Elementknoten eines Gebäudefeatures bezieht (vgl. 4.2.3<br />

<strong>und</strong> C.6). Dadurch kann bei einem Regelverstoß genau der Besitzer-Elementknoten aus der<br />

Web Service Antwort herausgefiltert werden.<br />

<br />

<br />

...<br />

<br />

<br />

<br />

<br />

/Request/Resource/ResourceContent/FeatureCollection\[\d+\]/<br />

featureMember\[\d+\]/GEBAEUDE\[\d+\]/Besitzer\[\d+\]<br />


80<br />

<br />

<br />

<br />

<br />

...<br />

<br />

<br />

Diese Regel greift beispielsweise bei einem resource-id Wert gleich<br />

„/Request/Resource/ResourceContent/FeatureCollection[1]/<br />

featureMember[5]/GEBAEUDE[1]/Besitzer[1]“.<br />

Sobald sich eine individuelle Zugriffsentscheidungsanfrage auf den Besitzer Knoten eines<br />

Gebäudefeatures im XML/GML Dokument bezieht, kommt diese Elementregel zur Anwendung<br />

<strong>und</strong> die daraufhin generierte individuelle Zugriffsentscheidungsantwort, die an den PEP<br />

zurückgegeben wird, drückt die Zugriffsbeschränkung für den entsprechenden Besitzer<br />

Knoten aus.<br />

Beispiel 3: Zugriffsregel für einen beliebigen Elementknoten, die sich auf dessen Nachkommen-Elemente<br />

bezieht<br />

In diesem Beispiel soll der gleiche Zugriffsschutz wie in Beispiel 2 ausgedrückt werden, allerdings<br />

mit <strong>einer</strong> anderen Konsequenz. In diesem Fall soll, sobald ein Nutzer ein Gebäudefeature<br />

samt Besitzer-Eigenschaft abfrägt, das gesamte Feature zugriffsbeschränkt sein.<br />

Daraus folgt, dass die Regel bei Zugriffenscheidungsanfragen zum Gebäudeknoten greifen<br />

muss, da der Dokumentbaum bei Anwendung der Regel ab diesem Knoten beschnitten werden<br />

muss (vgl. 4.2.3 <strong>und</strong> C.6).<br />

<br />

<br />

...<br />

<br />

<br />

<br />

<br />

/Request/Resource/ResourceContent/FeatureCollection\[\d+\]/<br />

featureMember\[\d+\]/GEBAEUDE\[\d+\]<br />

<br />

<br />

<br />

<br />

<br />

...<br />

<br />

<br />

1<br />

<br />

<br />

<br />

<br />


81<br />

/Besitzer<br />

<br />

<br />

<br />

<br />

Ein Voraussetzung für das Greifen der Regel ist, analog zu Beispiel 1, der Bezug der<br />

Zugriffsentscheidungsanfrage auf den Gebäude Elementknoten. In der Condition wird<br />

das zweite Kriterium für das Greifen der Regel, die Existenz der Besitzer-Eigenschaft zu diesem<br />

Feature, überprüft. Dies wird erreicht, indem das Besitzer Element relativ zum resource-id<br />

Wert analysiert wird. Ist es vorhanden, so liefert die xpath-node-count<br />

Funktion den Wert 1. Da dieser Wert gleich dem Literal der Bedingung ist, kommt die Regel<br />

in diesen Situationen zum Einsatz.<br />

Beispiel 4: Zugriffsregel für einen Attributknoten<br />

Um aufzuzeigen, wie der Zugriff auf Attributknoten des XML Dokumentes eingeschränkt<br />

werden kann, wird in diesem Beispiel der Zugriff auf das srsName Attribut des Polygon<br />

Elementes eines Gebäudefeatures beschränkt 28 . Sofern dieses Attribut vorhanden ist, soll es<br />

aus dem XML Dokument entfernt werden.<br />

<br />

<br />

...<br />

<br />

<br />

<br />

<br />

/Request/Resource/ResourceContent/FeatureCollection\[\d+\]/<br />

featureMember\[\d+\]/GEBAEUDE\[\d+\]/Geometrie\[\d+\]/Polygon\[\d+\]/<br />

@srsName<br />

<br />

<br />

<br />

<br />

<br />

...<br />

<br />

<br />

Da der Context Handler für alle Knoten der unter ResourceContent eingefügten Ressource<br />

individuelle Zugriffsentscheidungsanfragen generiert (entsprechende Deklaration der<br />

resource-id <strong>und</strong> scope Attribute vorausgesetzt), wird, sobald ein Gebäudefeature in<br />

seinem Polygon Element das Attribut srsName beinhaltet, eine Zugriffsentscheidungsanfrage<br />

mit einem resource-id Wert wie z.B.<br />

„/Request/Resource/ResourceContent/FeatureCollection[1]/<br />

featureMember[5]/GEBAEUDE[1]/Geometrie[1]/Polygon[1]/@srsName“


82<br />

abgesetzt. Da dieser den regulären Ausdruck im Resource Element des Targets erfüllt,<br />

greift die Regel <strong>und</strong> setzt die gewünschte Zugriffsbeschränkung für dieses Attribut um.<br />

Eine Zugriffsregel, die sich auf mehrere Featuretypen, Elemente oder Attribute beziehen soll,<br />

kann dies durch mehrere Resource Elemente unterhalb von Resources erreichen. Bei<br />

der Auswertung des Targets der Regel werden die Ergebnisse (Boolsche Werte) der einzelnen<br />

Resource Elemente durch eine oder Semantik verknüpft. Alternativ kann eine Regel,<br />

die sich auf mehrere Featuretypen, Elemente oder Attribute beziehen soll, in einzelne Regeln<br />

(eine je Featuretyp, Element oder Attribut) umgeformt werden.<br />

4.3.2 Deklarieren von Zugriffsregeln für bestimmte Features<br />

In diesem Abschnitt wird gezeigt, wie inhaltsabhängige Regeln festgelegt werden können, die<br />

den Zugriff auf Features mit gewissen Eigenschaften kontrollieren. Instanzregeln stellen eine<br />

Verf<strong>einer</strong>ung von Typ- bzw. Element- oder Attributregeln dar <strong>und</strong> beziehen sich nur auf bestimmte<br />

Instanzen eines Featuretyps. Bei welchen Instanzen die Regel greift, hängt von den<br />

im Condition Element der Regel festgelegten Bedingungen ab. Man kann in den Bedingungen<br />

der Regeln beliebige vordefinierte Funktionen nutzen, um nicht-raumbezogene Werte<br />

aus den konkreten Featureinstanzen untereinander oder mit Literalen zu vergleichen. Welche<br />

vergleichbaren Eigenschaften eines Features bei der Regeldefinition zur Auswahl stehen, ist<br />

anhand des XML Schemas der Geodaten bekannt.<br />

Wie auch bei den Typ- bzw. Elementregeln wird im Resource Element des Targets zunächst<br />

grob bestimmt, für welche individuellen Zugriffsentscheidungsanfragen die Regel<br />

greifen soll. Die neue Semantik – der Inhaltsbezug – der Instanzregeln wird in der Bedingung<br />

ausgedrückt. In dieser können beliebige Prädikate formuliert werden. Die Alternative, die besondere<br />

Semantik der Instanzregel im Target umzusetzen, wurde als unsauber <strong>und</strong> nicht<br />

ausreichend mächtig angesehen. Das Target soll ausschließlich zur Indexierung der Regeln<br />

dienen, um dadurch eine schnelle Auffindbarkeit passender Regeln zu gewährleisten. Außerdem<br />

ist nur im Condition Element eine beliebig flexible Anwendung, Komposition <strong>und</strong><br />

Schachtelung von Funktionen zur Deklaration des Prädikates der Regelbedingung möglich.<br />

Aufbau <strong>einer</strong> Instanzregel<br />

Möchte die Bank festlegen, dass ihre Mitarbeiter nur Daten zu denjenigen Gebäuden sehen<br />

dürfen, die vor 2003 gebaut wurden, so muss die unten abgebildete Regel in das Regelwerk<br />

28 Semantisch gesehen ist diese Zugriffsbeschränkung wohl eher unsinnig. Sie dient ausschließlich zur Erklärung<br />

der Vorgehensweise zur Beschränkung von Zugriff auf Attributknoten.


83<br />

aufgenommen werden. Konsequenz der Regel soll sein, dass die Mitarbeiter dieses Gebäudefeature<br />

nicht sehen dürfen, sofern das Baujahr 2003 oder später ist.<br />

<br />

<br />

...<br />

<br />

<br />

<br />

<br />

/Request/Resource/ResourceContent/FeatureCollection\[\d+\]/<br />

featureMember\[\d+\]/GEBAEUDE\[\d+\]<br />

<br />

<br />

<br />

<br />

<br />

...<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

/Baujahr/text()<br />

<br />

<br />

<br />

2003<br />

<br />

<br />

Das in der Regel definierte Target Element fordert nur dann die Auswertung der Bedingung,<br />

sofern es sich bei dem betrachten Feature um ein Gebäude handelt. In der Bedingung<br />

wird überprüft, ob das Gebäude im Jahr 2003 oder später gebaut wurde. Dazu wird relativ<br />

zum resource-id Attribut über den integerInformationSelector das Baujahr<br />

des Features selektiert <strong>und</strong> anschließend durch die integer-greater-than-or-equal<br />

Funktion mit dem Literal 2003 verglichen.<br />

Weitere Beispiele zu instanzbezogenen Autorisationen sind im Anhang A.3 (Beispiel 1) zu<br />

finden.<br />

4.3.3 Fazit<br />

Um raumbezogene Zugriffskontrolle für Geo Web Services zu ermöglichen, wurden Typregeln,<br />

Instanzregeln, Raumregeln <strong>und</strong> Rauminstanzregeln gefordert. Wie gezeigt wurde ist es<br />

mit XACML möglich, beliebige Typ- <strong>und</strong> Instanzregeln für GML-kodierte Geodaten zu defi-


84<br />

nieren. Allerdings können mit XACML keine raumbezogenen Zugriffsregeln deklariert werden.<br />

Zunächst fehlt die Option, Regelgebiete, d.h. Geometrien mit Raumbezug, in Regeln definieren<br />

zu können, da dieser Daten- bzw. Attributtyp nicht unterstützt wird. Des weiteren<br />

bieten die vordefinierten XACML Funktionen, die auf den einfachen Attributtypen Integer,<br />

Boolean, String etc. basieren, nicht die Möglichkeit, die Regelgebiete sinnvoll mit den räumlichen<br />

Eigenschaften der angefragten Features zu vergleichen. Prinzipiell denkbar wäre der<br />

Abgleich der Gebiete über die Funktion string-equal. Diese Variante raumbezogener<br />

Zugriffskontrolle ist aber für die meisten Anwendungsfälle nicht ausreichend mächtig <strong>und</strong><br />

außerdem sehr umständlich. Die per string-equal Funktion mit den Werten aus der<br />

Zugriffsentscheidungsanfrage verglichenen Regelgebiete würden nur als ein eindeutiger<br />

Schlüssel zur Identifikation der Features dienen.<br />

Statt eines Identitätsabgleichs auf Basis der Geometrie der Gebiete ist es deutlich mächtiger,<br />

die Topologie, d.h. die gegenseitige Anordnung im Raum zwischen den Regelgebieten <strong>und</strong><br />

den Gebieten der Featureinstanzen für Raumregeln zu nutzen. Das Ausnutzen der topologischen<br />

Relationen zwischen den Regelgebieten <strong>und</strong> den Gebieten der Featureinstanzen ist eine<br />

Voraussetzung für mächtige raumbezogene Zugriffsregeln. Dadurch ist es möglich, dass sich<br />

eine einfache Raumregel gezielt auf eine bestimmte Menge an Features bezieht, ohne in der<br />

Regel direkt Bezug (z.B. durch die Überprüfung der FeatureID – ein eindeutiger Identifikator<br />

für ein Feature) auf die entsprechenden Features zu nehmen.<br />

Die zur Umsetzung raumbezogener Zugriffsregeln benötigte Erweiterung des XACML Standards<br />

sowie das Abbilden der Raumregeln im erweiterten XACML wird in Kapitel 5 behandelt.


85<br />

5 Raumbezogene Zugriffskontrolle mit XACML<br />

Für Geo Web Services, die Zugriff auf Geodaten ermöglichen, können raumbezogene<br />

Zugriffsregeln die Definition komplexer Regelwerke deutlich vereinfachen. Durch Raumregeln<br />

ist es möglich, einfache aber mächtige Zugriffsrechte auf den Features zu deklarieren. Da<br />

Features einen Raumbezug sowie eine Ausdehnung haben, kann der Zugriff auf diese geographischen<br />

Objekte durch Zugriffsrechte eingeschränkt werden, die sich auf den Raumbezug<br />

der Objekte beziehen.<br />

Hierzu stelle man sich eine Zugriffsregel vor, die sämtliche Daten jener Gebäude zugriffsbeschränken<br />

soll, die weniger als zehn Kilometer von der Staatsgrenze entfernt sind. Als Raumregel<br />

wäre dies umsetzbar, indem die Grenze als Linienzug angegeben wird <strong>und</strong> die Gebiete<br />

der angefragten Gebäudeinstanzen mit Hilfe der Relation isWithinDistance bezüglich<br />

ihrer Lage zu diesem Linenzug abgeglichen werden. Wenn die Geometrie eines angefragten<br />

Gebäudefeatures die Relation erfüllt, wird die Raumregel angewendet <strong>und</strong> der Zugriff abgelehnt.<br />

Für die Definition <strong>einer</strong> entsprechenden Instanzregel müsste der SSO alle FeatureIDs, der im<br />

Umkreis von zehn Kilometer liegenden Gebäude ermitteln, diese explizit in die Instanzregel<br />

aufnehmen <strong>und</strong> sie mit den FeatureIDs der angefragten Features vergleichen. Hierfür muss allerdings<br />

vorausgesetzt werden, dass jedes Gebäudefeature (z.B. über eine FeatureID) eindeutig<br />

identifizierbar ist <strong>und</strong> dass für den SSO bestimmbar ist, welche Gebäude weniger als zehn<br />

Kilometer von der Staatsgrenze entfernt liegen.<br />

Wie man sieht ist die Definition <strong>einer</strong> Raumregel deutlich einfacher als die <strong>einer</strong> Instanzregeln<br />

<strong>und</strong> zudem ist Erstere stabiler gegenüber <strong>einer</strong> Dynamik der Datenbasis, die dem Geo<br />

Web Services zugr<strong>und</strong>e liegen kann. Sollten z.B. die Daten eines im Grenzgebiet neu errichteten<br />

Gebäudes über den Geo Web Service zugänglich sein, so muss, um diese vor unautorisierten<br />

Zugriffen zu schützen, die Instanzregel um die ID dieses Features ergänzt werden. Die<br />

oben beschriebene wirkungsgleiche Raumregel könnte dagegen unverändert bleiben <strong>und</strong> würde<br />

die Daten zu dieser neuen Gebäudeinstanz dennoch vor Zugriffen schützen.<br />

Ein weiterer Vorteil der Raumregeln ist, dass durch das Spezifizieren beliebiger topologischer<br />

Relationen in den Regeln komplexe Beziehungen zwischen den Regelgebieten <strong>und</strong> den Gebieten<br />

der Featureinstanzen überprüft werden können (z.B. die Nachbarschaftsbeziehung).<br />

Möchte ein SSO beispielsweise, dass Daten zu den Gebäuden, die neben <strong>einer</strong> Bank liegen,<br />

zugriffsgeschützt sind, so kann er dies durch Angabe des Bankgebäudegebiets <strong>und</strong> der Relation<br />

„touches“ einfach umsetzen.<br />

Neben der Eigenschaft einfache, stabile <strong>und</strong> mächtige Zugriffsregeln ausdrücken zu können,<br />

bieten Raumregeln noch zwei weitere Vorteile. Einerseits ist es möglich unter gewissen Vorraussetzungen,<br />

ungewollte Regelkonflikte zu erkennen <strong>und</strong> zu behandeln. Da dies allerdings<br />

ein eigenes, sehr umfangreiches Problemfeld darstellt, wird im Rahmen dieser Arbeit nicht


86<br />

näher darauf eingegangen. Ebenso vorteilhaft ist die Möglichkeit, die Zuständigkeitsgebiete<br />

der SSOs an den Raumbezug zu binden. So kann z.B. SSO A für die Gebäudedaten in Bayern<br />

<strong>und</strong> SSO B für die Gebäudedaten in Sachsen verantwortlich sein. Dies bedeutet, dass die<br />

SSOs nur Raumregeln definieren dürfen, die sich auf ihr Zuständigkeitsgebiet beziehen.<br />

Im Folgenden wird beschrieben, wie Raumregeln deklariert werden können. Im Anschluss<br />

wird behandelt, welche Methoden <strong>und</strong> Datentypen ein Zugriffskontrollsystem unterstützen<br />

muss, um Raumregeln definieren <strong>und</strong> auswerten zu können. Im letzten Abschnitt dieses Kapitels<br />

(5.4) wird darauf eingegangen, wie Pre-Processing in einem XACML-basierten Zugriffskontrollsystem<br />

umgesetzt werden kann.<br />

5.1 Raumbezogene Zugriffsregeln<br />

Ein SSO kann bei der Definition <strong>einer</strong> Raumregel geometrische Objekte, die Regelgebiete,<br />

festlegen. Dazu muss er für jeden Featuretyp die zugriffsbeschränkten <strong>und</strong> zugreifbaren Gebiete<br />

identifizieren. In Abhängigkeit der Lage der Features zu den Regelgebieten kann der<br />

Zugriff auf die Features gezielt kontrolliert werden. Zum Vergleich der Regelgebiete mit den<br />

räumlichen Eigenschaften der angefragten Features müssen letztere in den Raumregeln adressiert<br />

werden. Da die Rauminformation je Featuretyp an unterschiedlicher Tiefe sowie Stelle<br />

im Dokumentbaum liegen kann <strong>und</strong> diese zudem nicht über einen standardisierten einheitlichen<br />

Knotennamen identifizierbar ist, müssen die raumbezogenen Zugriffsbeschränkungen in<br />

Abhängigkeit des Featuretyps erfolgen.<br />

Die Beschreibung der Regelgebiete erfolgt vektororientiert <strong>und</strong> soll dem GML Standard (siehe<br />

2.2) genügen. In Raumregeln sind daher folgende geometrische Typen angebbar:<br />

• Punkt • Multipunkt<br />

• Linienzug • Multilinienzug<br />

• Polygon • Multipolygon<br />

Die heterogenen GeometryCollections werden bewusst nicht als Datentyp für Regelgebiete<br />

bzw. als Argumente für die räumlichen Relationen zugelassen, da nicht eindeutig definiert ist,<br />

welche Semantik topologische Operationen auf zwei GeometryCollections haben (vgl. JTS<br />

Tech Spec 1.4, S. 27).<br />

Prinzipiell wären auch komplexere geometrische Objekte wie Bezierkurven, Kreise, Ellipsen<br />

usw. in den Regeln möglich. Da diese aber nicht in GML beschreibbar sind, werden sie in


87<br />

dieser Arbeit nicht betrachtet <strong>und</strong> stehen daher nicht zur Definition der Regelgebiete im Prototypen<br />

zur Verfügung.<br />

Durch räumliche Analysen in den Raumregeln wird die Rauminformation der angefragten<br />

Features untersucht. Verwendet werden können dazu die im Folgenden aufgeführten topologischen<br />

Relationen <strong>und</strong> räumlichen Operationen.<br />

Eine topologische Operation überprüft die Lage zweier Geometrien zueinander. Eine räumliche<br />

Operation berechnet Zahlenwerte auf Basis der Geometrie(n) (z.B. die Länge eines Linienzuges),<br />

die dann zur Bestimmung <strong>einer</strong> Zugriffsentscheidung genutzt werden können.<br />

Topologische Operationen:<br />

• equals • crosses<br />

• disjoint • overlaps<br />

• intersects • within<br />

• touches • contains<br />

Topologische Operationen sind boolesche Methoden, die sofern die entsprechende topologische<br />

Relation zwischen zwei Geometrien erfüllt ist, wahr als Ergebniswert liefern. Zur Erklärung<br />

der Semantik der einzelnen Relationen werden die Begriffe das Innere, der Rand<br />

<strong>und</strong> das Äußere <strong>einer</strong> Geometrie verwendet, die aus diesem Gr<strong>und</strong> kurz erklärt werden.<br />

Der Rand <strong>einer</strong> Geometrie ist eine Menge an Geometrien nächst niedrigerer Dimension. Der<br />

Rand eines Punktes ist daher die leere Menge. Bei einem nicht geschlossenen Linienzug sind<br />

es die beiden Endpunkte. Der Rand eines linearen Ringes ist die leere Menge. Bei einem Polygon<br />

sind es die ihn definierenden Ringe (äußerer Rand <strong>und</strong> innere Ränder).<br />

Das Innere <strong>einer</strong> Geometrie stellen alle Punkte der Geometrie dar, die nicht zum Rand gehören.<br />

Der die Geometrie umgebende Raum, d.h. alle Punkte, die nicht zum Rand oder zum Inneren<br />

der Geometrie gehören, wird als Äußeres der Geometrie bezeichnet (vgl. OGC SFS 1.1, S.<br />

24 <strong>und</strong> 25 bzw. 2-12 <strong>und</strong> 2-13 29 ).<br />

29 In der pdf Quelle OGC SFS 1.1 wird eine selbstdefinierte Seitenummerierung verwendet. Daher wird für Referenzen<br />

auf diese Quelle in dieser Arbeit neben der dort verwendetet Seitennummerierung die Seitenzahl nach<br />

Adobe Acrobat 6.0 angegeben.


88<br />

A) Kommutative topologische Operationen, die beliebige Geometrietypen als Argumente<br />

zulassen:<br />

equals<br />

Abbildung 5.1 Zwei Geometrien, welche die equals Relation erfüllen<br />

Zwei Geometrien sind topologisch identisch, wenn sich das Innere der beiden Geometrien<br />

schneidet <strong>und</strong> wenn sich kein Teil des Inneren oder des Rands <strong>einer</strong> Geometrie mit dem Äußeren<br />

der anderen Geometrie schneidet (vgl JTS Tech Spec 1.4, S. 26). Topologische Identität<br />

fordert nicht, dass die Geometrien exakt gleich definiert worden sind. Zum Beispiel sind<br />

die Linien, definiert durch die Koordinaten 0,0 0,5 0,10 <strong>und</strong> 0,0 0,4 0,6 0,10 zwar topologisch<br />

aber nicht exakt identisch. Für die Definition von Raumregeln wird in dieser Arbeit nur die<br />

topologische Identität betrachtet.<br />

disjoint<br />

Abbildung 5.2 Zwei Geometrien, welche die disjoint Relation erfüllen<br />

Disjoint evaluiert zu wahr, wenn die Geometrien keinen gemeinsamen Punkt haben.


89<br />

intersects<br />

Abbildung 5.3 Zwei Geometrien, welche die intersects Relation erfüllen<br />

Intersects evaluiert zu wahr, wenn die Geometrien mindestens einen gemeinsamen<br />

Punkt haben. Intersects entspricht der negierten disjoint Relation<br />

(d.h. A.intersects(B) not(A.disjoint(B)).<br />

B) Kommutative topologische Operationen, die nicht für alle Kombinationen von Geometrien<br />

definiert sind:<br />

touches<br />

Abbildung 5.4 Zwei Geometrien, welche die touches Relation erfüllen<br />

Diese Operation evaluiert zu wahr, wenn die gemeinsamen Punkte der beiden Geometrien in<br />

der Vereinigungsmenge beider Ränder liegen. Der Vergleich zweier Punkte oder zweier Multipunktmengen<br />

per touches ist <strong>und</strong>efiniert, da diese geometrischen Objekte keinen Rand<br />

besitzen.


90<br />

crosses<br />

Abbildung 5.5 Zwei Geometrien, welche die crosses Relation erfüllen<br />

Crosses evaluiert zu wahr, wenn folgende Bedingungen erfüllt sind (OGC SFS 1.1, S. 63<br />

bzw. 3-21):<br />

• Die Dimension derjenigen Geometrie, welche die Schnittmenge von G 1 <strong>und</strong> G 2 darstellt,<br />

ist kl<strong>einer</strong> als das Maximum der Dimensionen von G 1 <strong>und</strong> G 2 .<br />

• Die Schnittmenge von G 1 <strong>und</strong> G 2 enthält Punkte die zugleich im Inneren von G 1 <strong>und</strong> G 2<br />

liegen.<br />

• Die Schnittmenge von G 1 <strong>und</strong> G 2 entspricht weder G 1 noch G 2 .<br />

Die crosses Operation ist für die Argumentkombinationen (Punkt, Punkt), (Multipunkt,<br />

Multipunkt), (Polygon, Polygon) <strong>und</strong> (Multipolygon, Multipolygon) <strong>und</strong>efiniert.<br />

overlaps<br />

Abbildung 5.6 Zwei Geometrien, welche die overlaps Relation erfüllen<br />

Die overlaps Operation zwischen zwei Geometrien G 1 <strong>und</strong> G 2 gibt wahr zurück, wenn die<br />

Dimension der Schnittmenge der beiden Geometrien gleich der Dimension von G 1 <strong>und</strong> G 2 ist.<br />

Zusätzlich muss gelten, dass die Schnittmenge weder G 1 noch G 2 entspricht. Daraus folgt,<br />

dass die overlaps Relation für die Argumentkombinationen {(Multi-)Punkt, (Multi-<br />

)Linie}, {(Multi-)Punkt, (Multi-)Polygon} <strong>und</strong> {(Multi-)Linie, (Multi-)Polygon} nicht definiert<br />

ist (OGC SFS 1.1, S. 63 bzw. 3-21).


91<br />

C) Nicht kommutative topologische Operationen, die für alle Kombinationen von Geometrien<br />

anwendbar sind:<br />

within<br />

Abbildung 5.7 Zwei Geometrien, welche die within Relation erfüllen<br />

Die Operation G 1 within G 2 evaluiert zu wahr, wenn alle Punkte der Geometrie G 1 im Inneren<br />

oder auf dem Rand der Geometrie G 2 liegen.<br />

contains<br />

Abbildung 5.8 Zwei Geometrien, welche die contains Relation erfüllen<br />

A.contains(B) B.within(A)<br />

Anstelle der contains Operation kann durch Vertauschen der Argumente immer die<br />

within Operation verwendet werden.<br />

Die Tabellen im Anhang B zeigen, welche sinnvollen Vergleichsmöglichkeiten zwischen<br />

zwei Geometrien in Abhängigkeit ihres Typs mit den genannten topologischen Operationen<br />

bestehen. Dadurch wird beschrieben, welche topologischen Relationen bei der Definition von<br />

Raumregeln zur Verfügung stehen, wenn die Instanz- <strong>und</strong>/oder Regelgeometrien gegeben<br />

sind (oder umgekehrt: welche Regelgebiete möglich sind, wenn Relation <strong>und</strong> Featuregeomet-


92<br />

rie gegeben sind). Zudem wird im Anhang B darauf eingegangen, welche Semantik die Relationen<br />

angewandt auf MultiGeometrietyp-Datentypen haben.<br />

Die Operationen contains <strong>und</strong> intersects überprüfen gegenüber within <strong>und</strong> disjoint<br />

keine neue Art der Lagebeziehung zwischen zwei Geometrien. Die Unterstützung<br />

dieser Operationen dient ausschließlich einem erhöhten Komfort bei der Definition von<br />

Raumregeln.<br />

Neben topologischen Operationen können in den Raumregeln zusätzlich folgende räumliche<br />

Operationen auf den Geometrien der Features angewendet werden:<br />

Räumliche Operationen:<br />

• length<br />

• area<br />

• distance<br />

• isWithinDistance<br />

length (Geometrie x)<br />

Handelt es sich bei der Geometrie um einen Linienzug, so wird dessen Länge bestimmt. Wird<br />

die length Funktion auf ein Polygon angewendet, so wird der Umfang des Polygons berechnet.<br />

area (Polygon a)<br />

Die area Funktion angewandt auf ein nicht leeres Polygon berechnet dessen Fläche.<br />

distance (Geometry x, Geometry y)<br />

Die distance Funktion berechnet die minimale Distanz zwischen zwei Geometrien.<br />

isWithinDistance (Geometry x, Geometry y, double d)<br />

Die isWithinDistance Funktion prüft, ob die minimale Distanz zwischen zwei Geometrien<br />

kl<strong>einer</strong> gleich dem Wert d ist. Der Rückgabewert dieser Funktion ist daher Boolean.<br />

Operationen auf Geometrien, die neue Geometrien erzeugen (z.B. intersection, union<br />

oder difference), sollen in dieser Arbeit nicht betrachtet werden. Es wird davon ausgegangen,<br />

dass der SSO die entsprechenden Berechnungen vor Definition s<strong>einer</strong> Regeln durch-


93<br />

führt <strong>und</strong> die endgültigen Regelgeometrien in den Regeln festlegt. Sollte es in speziellen Anwendungsfällen<br />

nötig sein, diese Operationen auf die Regelgeometrie <strong>und</strong>/oder auf die Geometrie<br />

<strong>einer</strong> Featureinstanz anzuwenden, kann das Zugriffskontrollsystem durch kleine Zusätze,<br />

nach dem gleichen Schema wie die Umsetzung der oben vorgestellten Funktionen (vgl.<br />

6.2.2 oder 6.3.3), erweitert werden.<br />

Welche der möglichen Relationen bzw. Operationen in den Raumregeln verwendet werden<br />

sollen, hängt ausschließlich von der vom SSO gewünschten Semantik der Regeln ab. Beispielsweise<br />

kann man zugriffsbeschränkte Gebiete per intersects Operation in <strong>einer</strong> negativen<br />

30 Raumregel mit den Gebieten der Features vergleichen. Durch diese Operation wird<br />

erreicht, dass ein angefragtes Feature, sobald es einen gemeinsamen Punkt mit dem zugriffsbeschränkten<br />

Gebiet hat, nicht mehr zugreifbar ist. Möchte man allerdings eine Regelsemantik<br />

ausdrücken, die definiert, dass der Zugriff auf eine Featureinstanz nur dann verboten werden<br />

soll, wenn diese komplett im zugriffsbeschränkten Gebiet liegt, so ist die within Operation<br />

zu verwenden.<br />

5.2 Auswerten der topologischen Relationen<br />

Davon ausgehend, dass in Raumregeln topologische Relationen definiert worden sind, ist ein<br />

entscheidender Arbeitsschritt bei der Anwendung <strong>einer</strong> raumbezogenen Regel die Überprüfung<br />

der in der Regel spezifizierten Relation. Zur Vereinfachung wird für die nachfolgenden<br />

Ausführungen angenommen, dass raumbezogene Daten zum selben SRS definiert worden<br />

sind. Wie bei unterschiedlichen Raumbezugssystemen zu verfahren ist, wird in Kapitel 6.3.4<br />

detailliert behandelt.<br />

Mit dem Dimensionally Extended Nine-Intersection Matrix Model (DE-9IM Model, vgl.<br />

OGC SFS 1.1, S. 25 bis 32 bzw. 2-13 <strong>und</strong> 2-20) können räumliche Relationen zwischen<br />

Punkten, Linien <strong>und</strong> Flächen (gegebenenfalls mit Löchern) beschrieben werden. Prinzipielles<br />

Vorgehen bei der Überprüfung der Lage zweier Geometrien zueinander ist der paarweise Test<br />

der Schnittmengen zwischen den Rändern, dem Inneren <strong>und</strong> dem Äußeren der Geometrien.<br />

Dadurch kann eine so genannte „intersection“ Matrix aufgestellt werden. Es handelt sich um<br />

eine 3x3 Matrix, in der die maximale Dimension der Geometrien, die sich aus dem Schnitt der<br />

Ränder, der inneren <strong>und</strong> äußeren Gebiete der zu vergleichenden Objekte ergibt, gespeichert<br />

ist.<br />

Abbildung 5.9 zeigt eine „intersection“ Matrix nach dem DE-9IM Modell für zwei sich überlappende<br />

Polygone.<br />

30 Zur Erinnerung: Regel mit negativem Effekt (Definition siehe 3.1.2)


94<br />

Intersection Matrix<br />

B<br />

Innere Rand Äußere<br />

Innere 2 1 2<br />

A Rand 1 0 1<br />

Äußere 2 1 2<br />

Abbildung 5.9 „intersection“ Matrix für zwei sich überlappende Polygone (angelehnt an OGC SFS<br />

1.1, S. 25 bzw. 2.14)<br />

Auf Basis der Einträge in der Matrix kann man nun überprüfen, ob eine räumliche Relation<br />

zwischen den Geometrien vorliegt. Dazu wird die „intersection“ Matrix mit <strong>einer</strong> so genannten<br />

„pattern“ Matrix verglichen, die in Abhängigkeit der zu überprüfenden Relation unterschiedlich<br />

aufgebaut ist. Genügt die „intersection“ Matrix der „pattern“ Matrix (vergleichbar<br />

mit: genügt ein String einem regulären Ausdruck) so liegt die Relation vor, die durch diese<br />

„pattern“ Matrix repräsentiert wird. Möchte man demnach für obiges Beispiel überprüfen, ob<br />

die Geometrien A <strong>und</strong> B die overlaps Relation erfüllen, so wird die „intersection“ Matrix –<br />

repräsentiert als ein Array mit 9 Einträgen (2, 1, 2, 1, 0, 1, 2, 1, 2) – mit der „pattern“ Matrix<br />

zur overlaps Relation (T,*, T, *, *, *, T, *, *) verglichen. Während das * Zeichen sagt, dass<br />

die Dimension der entsprechenden Schnittmenge beliebig ist, fordert T von der Dimension<br />

der Schnittmenge, dass sie definiert sein muss (d.h. sie muss 0, 1, oder 2 entsprechen). Da die<br />

„intersection“ Matrix in diesem Beispiel der „pattern“ Matrix zur overlaps Relation genügt,<br />

kann gefolgert werden, dass die Polygone A <strong>und</strong> B sich überlappen.<br />

Durch das vorgestellte DE-9IM Modell kann die in den Raumregeln angegebene Relation<br />

zwischen dem Regelgebiet <strong>und</strong> dem Gebiet eines Features überprüft werden. Einzige Vorraussetzung<br />

ist, dass es sich bei den zu vergleichenden Geometrien um topologisch geschlossene<br />

Körper handelt, wovon in dieser Arbeit ausgegangen wird. Für detailiertere Informationen<br />

zur Berechnung der „intersection“ Matrix wird auf die JTS Spezifikation (JTS Tech Spec<br />

1.4, S. 22 ff) verwiesen.


96<br />

5.3.2 Erweiterung der XACML Funktionen<br />

Wie bereits im Fazit des Kapitels 4 erörtert wurde sind die in XACML vordefinierten Funktionen<br />

für die Umsetzung raumbezogener Zugriffskontrolle nicht geeignet. Die unter 5.1 diskutierten<br />

topologischen <strong>und</strong> räumlichen Operationen müssen daher in XACML nutzbar gemacht<br />

werden. Wie dies erreicht werden kann soll in diesem Abschnitt demonstriert werden. Zur<br />

Vereinfachung <strong>und</strong> Konzentration auf das Wesentliche wurden die irrelevanten Teile der Regel<br />

weggelassen.<br />

Beispiel: Deklaration <strong>einer</strong> topologischen Relation in XACML<br />

...<br />

<br />

<br />

<br />

280,340<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

/GEBAEUDE/Geometrie/gml:Polygon<br />

<br />

<br />

<br />

<br />

...<br />

Wie man sieht, ist die Umsetzung <strong>einer</strong> topologischen Relation sehr ähnlich der Verwendung<br />

der in XACML vordefinierten Funktionen (vgl. XACML Spec 1.1, S. 25-46). Per Apply<br />

<strong>und</strong> FunctionId wird die touches Funktion deklariert. Da die touches Relation zwei Geometrien,<br />

d.h. also zwei spatial Argumente, als Eingabe erwartet, muss sie entsprechend<br />

aufgerufen werden. Das erste Argument der Funktion im Beispiel ist ein Punkt (GMLkodiert)<br />

<strong>und</strong> hat den Attributtyp spatial (vgl. 5.3.1). Das zweite Argument – eine räumliche<br />

Eigenschaft eines Features – wird durch einen spatialInformationSelector adressiert (vgl.<br />

4.2.5). Durch die Deklaration spatialInformationSelector wird der Rückgabedatentyp des InformationSelectors<br />

implizit angegeben. Da in InformationSelectoren die Auswertung von<br />

XPath-Ausdrücken erfolgt <strong>und</strong> diese potentiell eine Menge an Knoten zurückliefern kann, ist<br />

der Rückgabewert des spatialInformationSelectors eine Menge an Attributen vom Typ spatial.<br />

Um genau eine Geometrie zur Weiterverarbeitung über die touches Funktion bereitzustellen,<br />

wird die spatial-one-and-only Funktion auf die vom spatialInformationSelector<br />

zurückgegebene Menge angewendet. Damit wird erzwungen, dass die vom spatialInformationSelector<br />

selektierte Menge einelementig ist.


97<br />

5.3.3 Aufbau <strong>einer</strong> Raumregel<br />

Nachdem vorgestellt wurde, wie topologische Relationen <strong>und</strong> die Argumente mit Rauminformation<br />

angegeben bzw. adressiert werden können, wird nun der Aufbau <strong>einer</strong> Raumregel<br />

beschrieben.<br />

Wie schon bei den Instanzregeln (siehe 4.3.2) erörtert wurde, ist auch bei den raumbezogenen<br />

Regeln das Condition Element der geeignete Ort, um die raumbezogenen Regelprädikate<br />

zu definieren. Nur dort ist in XACML völlige Freiheit bei der Definition der Funktionen gegeben.<br />

Das Target wird unter anderem dazu verwendet, den Bezug zu einem Featuretyp<br />

herzustellen, da die Raumregeln in Abhängigkeit von diesem definiert werden müssen. Dazu<br />

kann es wie in den Typ- <strong>und</strong> Instanzregeln definiert werden. Greift das Target der Raumregel<br />

zu <strong>einer</strong> konkreten individuellen Zugriffsentscheidungsanfrage <strong>und</strong> evaluiert das Prädikat<br />

des Bedingungsteils, welches die räumlichen Analysen definiert, zu „wahr“, so ist die raumbezogene<br />

Regel anwendbar <strong>und</strong> fließt bei der Bestimmung der Zugriffsentscheidung mit ein.<br />

Beispiel: Aufbau <strong>einer</strong> raumbezogenen Zugriffsbeschränkung<br />

Die unten abgebildete Raumregel verbietet den Zugriff auf Gebäudefeatures, sofern sie zum<br />

Teil in Gebiet A liegen, welches durch das Polygon (20,380 40,200 240,140 360,260 340,380<br />

200,400 100,400 20,380) definiert ist.<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

/Request/Resource/ResourceContent/FeatureCollection\[\d+\]/<br />

featureMember\[\d+\]/GEBAEUDE\[\d+\]&<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

/Geometrie/gml:Polygon


98<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

20,380 40,200 240,140 360,260 340,380 200,400 100,400 20,380<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

Auf Gr<strong>und</strong> obiger Target Definition kann die Regel nur dann zur Anwendung kommen,<br />

wenn sich die individuelle Zugriffsentscheidungsanfrage auf einen Gebäudeknoten eines vom<br />

Nutzer angefragten Gebäudefeatures bezieht. Unter der Voraussetzung, dass die Auswertung<br />

des Targets zu „wahr“ evaluierte, wird die Condition überprüft. Im Beispiel entspricht<br />

dies der Anwendung der intersects Relation auf zwei Geometrien. Erstere stellt den Gr<strong>und</strong>riss<br />

<strong>einer</strong> angefragten Gebäudeinstanz in Form eines Polygons dar, die über den spatialInformationSelector<br />

adressiert wird. Die zweite Geometrie ist das vom SSO festgelegte, zugriffsbeschränkte<br />

Regelgebiet A, ebenfalls in Form eines Polygons. Ergibt die Auswertung der intersects<br />

Relation „wahr“, so greift die Regel <strong>und</strong> der Zugriff auf die entsprechende Gebäudeinstanz<br />

wird verboten.<br />

Im Anhang A.3 bzw. auf der CD-ROM finden sich zahlreiche weitere Beispiele zu Raumregeln.<br />

Diese veranschaulichen zum einen die Möglichkeiten, die raumbezogene Zugriffsregeln<br />

bieten <strong>und</strong> zum anderen dienen sie als Testfälle zur Validierung der im Kapitel 6 vorgestellten<br />

<strong>Implementierung</strong>.<br />

Erwähnt sei noch, dass bei Geodaten ein Raumbezug an mehreren Stellen auftreten kann. Zunächst<br />

hat das geographische Feature selbst einen Raumbezug. Zusätzlich können Kind-<br />

Elemente des Features einen eigenen, unabhängigen Raumbezug haben. Für die Syntax der<br />

Raumregeln spielt diese Unterscheidung allerdings keine Rolle <strong>und</strong> die unter 5.3 vorgestellten<br />

Techniken zur Definition von Raumregeln sind für beide Fälle in gleicher Weise anwendbar.<br />

Des weiteren ist es möglich, dass ein Raumbezug durch den aktuellen Standort des Web Service<br />

Nutzers gegeben ist. Dieser kann in der Zugriffsentscheidungsanfrage mit übergeben<br />

werden <strong>und</strong> ebenfalls durch die oben vorgestellten Raumregeln überprüft werden (vgl Beispiel<br />

2 im Anhang A.3).


99<br />

5.3.4 Der RaumInstanz Regeltyp<br />

Eine RaumInstanz Regel ist die Kombination <strong>einer</strong> Instanz- <strong>und</strong> <strong>einer</strong> Raumregel. In ihr können<br />

die Zugriffsrechte auf Features in Abhängigkeit der räumlichen <strong>und</strong> nicht räumlichen Eigenschaften<br />

der Features festgelegt werden. Für die Verwendung des Target Elements gilt<br />

das bereits für die Instanz- <strong>und</strong> Raumregeln Gesagte. Instanz- <strong>und</strong> Raumregeln unterscheiden<br />

sich nur durch ihre Prädikatausdrucke im Condition Element. Eine RaumInstanz Regel<br />

verknüpft die unterschiedlichen Prädikate durch logische Operatoren im Condition Element.<br />

Um dies zu verdeutlichen, soll die Raumregel aus Beispiel 5.3.3 mit der Instanzregel<br />

aus Beispiel 4.3.2 zu <strong>einer</strong> RaumInstanz Regel erweitert werden.<br />

Beispiel: Aufbau <strong>einer</strong> RaumInstanz Regel<br />

Ein SSO möchte durch eine Zugriffsregel definieren, dass Zugriff auf Daten zu jenen Gebäudefeatures<br />

verboten ist, die im Jahr 2003 oder später gebaut wurden <strong>und</strong> die zum Teil in Gebiet<br />

A liegen. Eine XACML Regel, die diese Semantik ausdrückt, hat folgenden Aufbau:<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

/Request/Resource/ResourceContent/FeatureCollection\[\d+\]/<br />

featureMember\[\d+\]/GEBAEUDE\[\d+\]<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

/Baujahr/text()<br />

<br />

<br />

<br />

2003<br />

<br />


100<br />

<br />

<br />

<br />

<br />

<br />

<br />

/Geometrie/gml:Polygon<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

20,380 40,200 240,140 360,260 340,380 200,400 20,380<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

Der orange markierte Teil der Condition entspricht der Bedingung der Instanzregel <strong>und</strong><br />

der rot gekennzeichnete Teil drückt die Relation der Raumregel aus. Verknüpft werden die<br />

Regelsemantiken über die „and“ Funktion.<br />

Um ungewollte „nicht auswertbar“ Zustände zu vermeiden, muss bei der Definition von<br />

RaumInstanz Regeln beachtet werden, dass sich die Regelbedingungen ausschließlich auf sicher<br />

existente Knoten stützen (vgl. C.6).<br />

Aufgr<strong>und</strong> verkürzten Auswertung (short circuit evaluation ; siehe Brügge 2000) der Operanden<br />

in XACML (XACML Spec 1.1, S. 100 ff) sollten raumbezogene Bedingungen am Ende<br />

des Bedingungsteils der RaumInstanz Regeln auftauchen, da diese am „teuersten“ zu überprüfen<br />

sind. Durch vorherige performantere Bedingungen kann dadurch in bestimmten Fällen die<br />

Überprüfung der raumbezogenen Bedingungen eingespart werden.<br />

Erwähnt sei an dieser Stelle, dass alle bislang vorgestellten Regeltypen für Zugriffskontrolle<br />

nach dem Post-Processing Ansatz um Bedingungen, die unabhängig von den Ressourcen sind,<br />

erweitert werden können. Diese Bedingungen stützen sich z.B. auf den Kontext des Zugiffskontrollsystems.<br />

Dieser ist durch AttributeDesignatoren referenzierbar, die Attribute im<br />

Environment Element der Zugriffsentscheidungsanfrage selektieren. Dadurch ist es möglich,<br />

die vorgestellten inhaltsbezogenen <strong>und</strong> raumbezogenen Zugriffsregeln um kontextabhängige<br />

Autorisationen zu ergänzen.<br />

Bislang wurden sämtliche Zugriffsregeln isoliert betrachtet. Wie Regeln beliebigen Typs in<br />

einem Regelwerk organisiert werden <strong>und</strong> welche Strukturierungsmöglichkeiten sich bieten,<br />

ist stark vom Anwendungsfall abhängig. Es ist kaum möglich, einen für beliebige Situationen


101<br />

sinnvollen Strukturierungsvorschlage zu machen. Dennoch wird im Anhang C exemplarisch<br />

gezeigt, wie ein Regelwerk mit den vorgestellten Regeltypen strukturiert werden kann, welche<br />

Alternativen es gibt <strong>und</strong> worauf bei der Organisation geachtet werden muss. Dort wird<br />

auch auf die sich durch den Raumbezug ergebende Möglichkeit <strong>einer</strong> speziellen Organisation<br />

der Raumregeln eingegangen, die auf dem Clustering Prinzip basiert. Ergänzt werden diese<br />

Vorschläge um Prinzipien die bei der Definition von Zugriffsregeln empfehlenswert sind.<br />

5.4 Pre-Processing mit XACML<br />

Nachdem in den vorangegangenen Abschnitten ausführlich diskutiert wurde, wie ein Regelwerk<br />

zur Unterstützung von Zugriffskontrolle nach dem Post-Processing Ansatz für lesende<br />

Aktionen auf den Daten des Geo Web Services definiert werden kann, soll in diesem Abschnitt<br />

betrachtet werden, welche Konsequenzen die Verwendung des Pre-Processing Ansatzes<br />

für das Zugriffskontrollsystem <strong>und</strong> den Aufbau der Regeln hat.<br />

Es wird zunächst Zugriffskontrolle für die modifizierenden Aktionen „einfügen“ <strong>und</strong> „updaten“<br />

betrachtet. Im Anschluss wird die Umsetzung von Zugriffsregeln, die sich auf die Löschoperation<br />

beziehen, diskutiert. Zuletzt wird darauf eingegangen, wie der Pre-Processing Ansatz<br />

als Alternative zum Post-Processing Ansatz für Zugriffskontrolle bei lesende Aktionen<br />

genutzt werden kann. Hierfür werden die Beispiele, die in den Erläuterungen zum Post-<br />

Processing (vgl. Kapitel 4 <strong>und</strong> 5 ohne 5.4) verwendet wurden, auf den Pre-Processing Fall<br />

übertragen.<br />

5.4.1 Die Einfügeoperation<br />

Wenn ein Subjekt auf einem Geo Web Service eine Einfügeoperation ausführen möchte, so<br />

muss es dem Geo Web Service in dieser Transaktion die Daten zu dem neu einzufügenden<br />

Feature mitteilen.<br />

Beispiel <strong>einer</strong> Einfügetransaktion auf einem WFS (vereinfachte Syntax):<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

-98.54,24.26...<br />

<br />

<br />


102<br />

<br />

Muenchner Rathaus<br />

1901<br />

Staat<br />

5<br />

<br />

...<br />

<br />

<br />

Nachdem ein Subjekt eine Einfügeanfrage abgesetzt hat, wird im PEP der Prozess der<br />

Zugriffskontrolle angestoßen. Nach Überprüfung der Zugriffsregeln <strong>und</strong> positiver Zugriffsentscheidung<br />

wird die Anfrage zur Bearbeitung an den Web Service weitergeleitet.<br />

In diesem Prozess erzeugt der PEP vergleichbar zum Vorgehen bei der Post-Processing Variante<br />

eine globale Zugriffsentscheidungsanfrage. Unterschied ist allerdings, dass der PEP die<br />

Anfrage an den Web Service für eine Einfügeaktion im ResourceContent Element der<br />

globalen Zugriffsentscheidungsanfrage übergibt. Da in diesem XML Dokument sämtliche Information<br />

zu den neu in die Datenbasis des Geo Web Services aufzunehmenden Features enthalten<br />

sind, kann man auf Basis dieser Daten feingranulare, inhaltsabhängige <strong>und</strong> raumbezogene<br />

Zugriffsregeln definieren.<br />

In den Regeln muss unter anderem wieder spezifiziert werden, auf welche Knoten des XML<br />

Dokumentes – in diesem Fall die Einfügeanfrage – sich die Zugriffsregeln beziehen <strong>und</strong> welche<br />

Bedingungen erfüllt sein müssen, damit die Regeln anwendbar sind. Dies kann analog zu<br />

dem für Post-Processing beschriebenen Verfahren geschehen. In den Zugriffsregeln wird zunächst<br />

geprüft, ob der Nutzer das Recht, hat neue Features in die Datenbasis des Web Services<br />

einzutragen. Zudem kann spezifiziert werden, welche Bedingungen die neu aufzunehmenden<br />

Daten erfüllen müssen. Hierdurch lassen sich neben den Autorisationen zusätzlich Integritätsbedingungen<br />

überprüfen (vgl. Trigger <strong>und</strong> Check-Constraints Konzept in Datenbankmanagementsystemen).<br />

Die vom PDP, je Knoten der Web Service Anfrage generierten individuellen Zugriffsentscheidungen<br />

teilen dem PEP mit, ob der Nutzer<br />

• zu <strong>einer</strong> Einfügeoperation bemächtigt ist,<br />

• Features eines bestimmten Typs einfügen darf (Typregel für die Einfügeoperation) <strong>und</strong><br />

• Features mit gewissen räumlichen bzw. nicht-räumlichen Eigenschaften einfügen darf<br />

(Raumregel <strong>und</strong> Instanzregel für die Einfügeoperation).<br />

Bei unzureichenden Rechten stehen im PEP zwei mögliche Verfahrensweisen zur Auswahl:<br />

• Sofern eine Zugriffsentscheidungsantwort dem PEP als Ergebnis „Zugriff beschränkt“<br />

mitteilt, kann er die Einfügeoperation abweisen. Dies entspricht dem „alles oder nichts“<br />

Prinzip.


103<br />

• Andererseits kann der PEP auf negative Zugriffsentscheidungsantworten die Einfügeanfrage<br />

in der Art modifizieren, dass sie zu <strong>einer</strong> autorisierten Anfrage wird. Hierzu stehen<br />

ebenfalls zwei Varianten zur Verfügung:<br />

o Der PEP kann zugriffsbeschränkte Knoten, d.h. Daten des einzufügenden Features,<br />

aus der Einfügeanfrage nehmen. Dies bedeutet, dass einige Werte des<br />

einzufügenden Features gelöscht werden <strong>und</strong> dieses im Anschluss in modifizierter<br />

Form in der Datenbasis des Web Services gespeichert wird.<br />

o Einen Schritt weiter könnte man gehen, indem zu den Zugriffsregeln Obligations<br />

definiert werden, die dem PEP mitteilen, durch welchen Wert er<br />

den einzufügenden aber zugriffsbeschränkten Knoten ersetzen soll.<br />

Da fragwürdig ist, ob das Modifizieren der Einfügeanfrage durch das Zugriffskontrollsystem<br />

in konkreten Anwendungsszenarien sinnvoll oder wünschenswert ist, wird in dieser Arbeit für<br />

Zugriffskontrolle bei Einfügeoperationen das „alles oder nichts“ Prinzip verfolgt.<br />

Im Verzeichnis policy auf der CD-ROM finden sich Regelbeispiele, die zeigen, welche Möglichkeiten<br />

Zugriffsregeln für die Einfügeoperation bieten.<br />

5.4.2 Die Update-Operation<br />

Ähnlich zur Einfügeoperation können Zugriffsregeln für die Update-Operation spezifiziert<br />

werden. Der PEP fügt in diesem Fall die vom Nutzer an den Web Service abgesetzte Update-<br />

Transaktion (s.u.) in die Zugriffsentscheidungsanfrage ein.<br />

Beispiel <strong>einer</strong> Update-Aktion auf einem WFS (vereinfachte Syntax):<br />

<br />

<br />

<br />

Anzahl_Spuren<br />

3<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

Anzahl_Spuren<br />

3<br />

<br />

<br />

<br />

Geometrie<br />


104<br />

50,40 100,60 ...<br />

<br />

<br />

<br />

<br />

<br />

In den Zugriffsregeln zu dieser Aktion kann ausgedrückt werden, unter welchen Voraussetzungen<br />

ein Nutzer die Möglichkeit hat, die Daten der Features in der Datenbasis des Web<br />

Services zu modifizieren. Zudem kann eine Überprüfung der einzufügenden Daten erfolgen.<br />

Für Beispielregeln wird wieder auf die Beispiele im Verzeichnis policy auf der CD-ROM verwiesen.<br />

Wie bereits in den Ausführungen zur Einfügeoperation erörtert, ist es zweifelhaft, ob ein<br />

Zugriffskontrollsystem bei unzureichenden Autorisationen eine modifizierte Update-Anfrage<br />

an den Geo Web Service weiterleiten sollte. Daher wird auch für diese Operation angenommen,<br />

dass das Zugriffskontrollsystem bei nur <strong>einer</strong> zugriffbeschränkenden individuellen<br />

Zugriffsentscheidungsantwort die gesamte Web Service Anfrage ablehnt („alles oder nichts“<br />

Prinzip).<br />

5.4.3 Die Löschoperation<br />

In der Löschtransaktion wird festgelegt, welche Features aus der Datenbasis des Geo Web<br />

Services gelöscht werden sollen (siehe unten abgedrucktes Beispiel). Zur Selektion der Features,<br />

die vom Löschvorgang betroffen sein sollen, muss der Featuretyp sowie ein Filter (vgl.<br />

OGC Filter Spec 1.0) angegeben werden. Diese Informationen können neben den Informationen<br />

zum Subjekt bei der Definition von Zugriffsregeln zur Löschoperation verwendet werden.<br />

Beispiel <strong>einer</strong> Löschtransaktion auf einem WFS (vereinfachte Syntax):<br />

Es werden alle Features vom Typ „Bankautomat“ gelöscht, die sich innerhalb des in der<br />

Löschoperation spezifizierten Gebiets (das Polygon) befinden.<br />

<br />

<br />

<br />

<br />

Geometrie<br />

<br />

<br />

<br />

-95.7,38.1-97.8,38.2...<br />

<br />

<br />

<br />

<br />

<br />


105<br />

<br />

Vorab sei erwähnt, dass Typ- bzw. Element- <strong>und</strong> Attributregeln, wie z.B. der Nutzer XY darf<br />

Features vom Typ Gebäude löschen, analog zu dem bisher Erläuterten <strong>und</strong> daher einfach umzusetzen<br />

sind. Beispiele zu Typ- bzw. Element- <strong>und</strong> Attributregeln für die Löschoperation<br />

finden ebenfalls auf der beiliegenden CD-ROM.<br />

Problematischer ist allerdings die Umsetzung von Zugriffsregeln, die sich auf das Löschen<br />

bestimmter Instanzen beziehen, da sich diese Instanzregeln auf die Inhalte des Filters der<br />

Löschoperation stützen müssen. Da nicht bekannt ist, über welche Eigenschaften <strong>und</strong> Funktionen<br />

der Nutzer die zu löschenden Features selektiert, können zu Knoten des Filters der<br />

Löschanfrage keine sinnvollen inhaltsbezogenen Zugriffsregeln deklariert werden.<br />

Eine Lösung dieses Problems stellt die Erweiterung des vom Nutzer spezifizierten Filters in<br />

der Löschanfrage dar. Dieser Filter wird vom Zugriffskontrollsystem so erweitert, dass die<br />

Löschoperation nur auf den löschbaren Datensätzen ausgeführt werden kann.<br />

Dazu wird wie folgt vorgegangen:<br />

In <strong>einer</strong> Obligation wird ein Filterprädikat (im Format der vom Web Service unterstützten<br />

Filter – vgl. 3.3.1) definiert, das die für einen Nutzer löschbaren 32 Features eines bestimmten<br />

Typs spezifiziert – ähnlich dem Definieren <strong>einer</strong> View in einem DBMS. Für die Deklaration<br />

des Filters können beliebige Eigenschaften des Featuretyps genutzt werden, um die löschbaren<br />

Features zu adressieren. Dadurch wird, wenn auch nur indirekt, Bezug auf die Inhalte der<br />

zu schützenden Features genommen, weshalb in diesem Zusammenhang von inhaltsabhängiger<br />

bzw. raumbezogener Zugriffskontrolle gesprochen werden kann. Sofern nun ein Nutzer<br />

eine Löschanfrage zu Features dieses Typs absetzt, muss das Zugriffskontrollsystem dafür<br />

sorgen, dass diese Obligation an den PEP übermittelt wird. Der PEP kann daraufhin das<br />

in der Obligation enthaltene Filterprädikat per „and“ mit dem vom Nutzer spezifizierten<br />

Filter der Original-Löschanfrage verknüpfen. Dadurch wird die Schnittmenge aus den löschbaren<br />

<strong>und</strong> zu löschenden Features gebildet, so dass die modifizierte Löschaktion nur noch autorisierte<br />

Löschungen zur Folge hat.<br />

Ein Nachteil dieser Verfahrensweise ist, dass bei jeder Löschaktion die „View-<br />

Erzeugungsvorschrift“, d.h die in den Obligations steckenden Filterausdrücke, vom Web<br />

Service neu berechnet werden müssen. Dem gegenüber steht der Vorteil, dass zu jedem Nutzer,<br />

in Abhängigkeit der Inhalte der Löschaktion, spezielle Views auf die löschbaren Daten<br />

festgelegt werden können, die nur dann berechnet werden müssen, wenn der Nutzer eine entsprechende<br />

Anfrage an den Web Service absetzt.<br />

Es stellt sich bei dieser Vorgehensweise allerdings die Frage, ob es sinnvoll ist, Löschoperationen<br />

vom Zugriffskontrollsystem nach dem „so viel wie geht“ Prinzip modifizieren zu lassen.<br />

Da angenommen wird, dass Löschoperationen auf einem Geo Web Service atomar zu behan-<br />

32 Es können auch Filter angegeben werden, welche die nicht löschbaren Features spezifizieren. Für eine<br />

Verbesserung der Lesbarkeit wurde dieser Fall allerdings vernachlässigt.


106<br />

deln sind – d.h. entweder die Löschaktion kann in ihrer Form vom WFS bearbeitet werden<br />

oder sie wird komplett abgelehnt, wird eine unautorisierte Löschaktion komplett abgelehnt.<br />

Dies hat zur Folge, dass Löschaktionen nur durch Typ- bzw. Element- <strong>und</strong> Attributregeln auf<br />

Zugriffsrechte überprüft werden können. In diesem Fall sind daher keine sinnvollen inhaltsbezogenen<br />

bzw. raumbezogenen Autorisationen deklarierbar. Relativiert werden muss diese<br />

Annahme, dass Löschoperationen als atomar anzusehen sind, sofern die Semantik der Löschaktion<br />

fest vorgegeben wird (z.B. zu löschende Features müssen durch Angabe der FeatureID<br />

selektiert werden).<br />

5.4.4 Die Leseoperation<br />

Wie bereits in 3.3.1 herausgearbeitet wurde, kann der Pre-Processing Ansatz als Alternative<br />

zum Post-Processing Ansatz für Zugriffskontrolle bei lesenden Aktionen auf einen Geo Web<br />

Service verwendet werden. Es wird nun am Beispiel des WFS gezeigt, wie lesende Zugriffe<br />

auf ihn mit Hilfe des Pre-Processing Ansatzes kontrolliert werden können. Betont sei an dieser<br />

Stelle, dass die für Kapitel 4 <strong>und</strong> 5 (ohne 5.4) zwingende Annahme <strong>einer</strong> XML/GMLkodierten<br />

Web Service Antwort nicht mehr nötig ist (zur Begründung vgl. 3.2.5 oder 3.3.1).<br />

Dies bedeutet dass durch die nachfolgend beschriebene Verfahrensweise feingranulare<br />

Zugriffskontrolle trotz unstrukturierter Web Service Antworten (z.B. ein Rasterbilddateiformat)<br />

möglich ist. Bei diesem Ansatz findet im PDP keine explizite Überprüfung der Zugriffsgesetze<br />

statt. Seine Aufgabe ist in diesem Fall das korrekte Umschreiben der Web Service<br />

Anfrage zu ermöglichen, so dass diese nur mehr zugreifbare Daten liefert. Die eigentliche<br />

Überprüfung der Zugriffsrechte geschieht implizit im WS der durch Auswertung der modifizierten<br />

nun sicheren Anfrage die ausschlieslich zugreifbare Daten in der Web Service Antwort<br />

impliziert.<br />

Die vom Nutzer kommende GetFeature-Anfrage (s.u.) veranlasst, dass der PEP eine globale<br />

Zugriffsentscheidungsanfrage absetzt. In dieser ist die lesende Anfrage an den WFS im ResourceContent<br />

Element enthalten. Dadurch können in den Typ- bzw. Element- <strong>und</strong> Attributregeln<br />

die vom Nutzer angefragten Featuretypen <strong>und</strong> dessen Eigenschaften auf Zugriffsrechte<br />

überprüft werden (siehe Beispiel unten).<br />

Zu berücksichtigen ist, dass einige Web Services automatisch verpflichtende Knoten in die<br />

Antwort einbauen (z.B. mit „mandatory“ gekennzeichnete Elemente im Schema welches den<br />

Antwortdokumenten des WFS zugr<strong>und</strong>e liegt). Dadurch enthält die Antwort auf einen Query<br />

gegebenenfalls mehr Werte als die Angefragten. Daher muss der PEP, bevor er den Prozess<br />

der Zugriffskontrolle einleitet, die Anfrage modifizieren, so dass aus dieser ersichtlich wird,<br />

welche Werte letztendlich tatsächlich an den Nutzer zurückgegeben werden. Hierfür kann das<br />

der Antwort zugr<strong>und</strong>eliegende XML-Schema genutzt werden.


107<br />

Wie schon für die Löschoperation erörtert wurde, kann auch für Zugriffsregeln, die sich auf<br />

lesende Aktionen beziehen, die Information im Filter der GetFeature-Anfrage nicht sinnvoll<br />

zum Treffen <strong>einer</strong> Zugriffsentscheidung genutzt werden. Um dennoch inhaltsbezogene bzw.<br />

raumbezogene Zugriffsregeln definieren zu können, muss die Zugriffskontrolle indirekt über<br />

die Definition von Filterprädikaten –Teile von Filtern – in den Obligations, zugehörig zu<br />

<strong>einer</strong> Regeln, erfolgen. Die dadurch modifizierbare Leseanfrage kann dann an den WFS weitergeleitet<br />

werden <strong>und</strong> gibt dem Nutzer als Antwort die Schnittmenge aus angefragten <strong>und</strong><br />

zugreifbaren Daten. Die Filterprädikate in den Obligations definieren die für einen Nutzer<br />

lesend zugreifbare 33 Datenmenge. Indem das Filterprädikat der Regel über die „and“<br />

Funktion mit dem Filter der GetFeature-Anfrage verknüpft wird, kann erreicht werden, dass<br />

die Leseanfrage nur auf der zugreifbaren Datenmenge ausgewertet wird. In diesem Fall erfolgen<br />

daher in den Zugriffsregeln keine inhaltsbezogenen Überprüfungen, sondern es werden<br />

nur die zu <strong>einer</strong> lesenden Web Service Anfrage passenden Obligations identifiziert, um<br />

die Anfrage wie oben beschrieben modifizieren zu können.<br />

Zur Identifikation der zu <strong>einer</strong> Anfrage passenden Filterprädikate werden Zugriffsregeln verwendet.<br />

In den Regeln wird neben den Informationen zum Subjekt <strong>und</strong> zur Aktion auch der<br />

angefragte Featuretyp bzw. dessen angefragte Eigenschaften überprüft. Das Target muss<br />

daher den Typ- bzw. Element- <strong>und</strong> Attributregeln entsprechend definiert werden. Der Resource<br />

Teil in der Regel sollte so definiert sein, dass die Regel bei individuellen Zugriffsentscheidungsanfragen<br />

zu demjenigen Knoten greift, an dessen Stelle auch die durch ihr Greifen<br />

übermittelte Obligation bzw. das Filterprädikat per „and“ angefügt werden soll (z.B.<br />

Abgleich des resource-id Attributes mit einem regulären Ausdruck zum Filter Element<br />

das Filterprädikat wird per „and“ an die Wurzel des Filters – das Filter Element –<br />

der Leseanfrage des Nutzers angehängt). Das Greifen <strong>einer</strong> Regel hat zur Folge, dass der PDP<br />

die zu den Regeln definierten Obligations 34 (diese enthalten die Filterprädikate) an den<br />

PEP leitet. Letzterer nutzt die darin enthaltene Filterdeklaration, um den Filter der vom Nutzer<br />

abgesetzten GetFeature-Anfrage geeignet zu erweitern (für Details zur Vorgehensweise<br />

siehe 6.4.3).<br />

Beispiel für Typregel im Preprocessing:<br />

...<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

33 Der negierte Fall (d.h. die zugriffsbeschränkte Datenmenge) wird der Einfachheit halber vernachlässigt.<br />

34 Dies wird erreicht indem in <strong>einer</strong> Policy genau eine Regel mit positiven Effekt existiert. Die Obligation<br />

wird an den PEP übermittelt, sofern FulfillOn auf "Permit" gesetzt wird.


108<br />

/Request/Resource/ResourceContent/wfs:GetFeature\[\d+\]/wfs:Query\[\d+\]/<br />

ogc:Filter\[\d+\]$<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

BANKAUTOMAT<br />

<br />

<br />

<br />

<br />

<br />

/../@typeName<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

FeatureType<br />

Bankautomat<br />

<br />

<br />

<br />

<br />

...<br />

Weitere Beispielregeln für Zugriffskontrolle mit dem Pre-Processing Ansatz finden sich auf<br />

der der Arbeit beiliegenden CD-ROM.


109<br />

6 Prototypische <strong>Implementierung</strong> eines Zugriffskontrollsystems<br />

für Geo Web Services<br />

Um die Umsetzung der vorgestellten Erweiterungen des XACML Standards zur Realisierung<br />

raumbezogener Zugriffskontrolle für einen Geo Web Service zu demonstrieren, wird in diesem<br />

Kapitel die Erweiterung <strong>einer</strong> XACML API sowie die <strong>Implementierung</strong> eines Zugriffskontrollsystems<br />

vorgestellt. Als Basis dient die von Sun entwickelte XACML API<br />

(SUNXACML). Deren Aufbau sowie die Mechanismen <strong>und</strong> Schnittstellen zur Nutzung <strong>und</strong><br />

Erweiterung der SUNXACML Klassen werden unter 6.1 betrachtet. Unter 6.2 wird die Umsetzung<br />

der geforderten Erweiterungen von XACML beschrieben. In 6.3 <strong>und</strong> 6.4 werden die<br />

verwendeten Techniken zur <strong>Implementierung</strong> der wesentlichen Komponenten (PDP, PEP <strong>und</strong><br />

Context Handler) eines XACML-basierten Zugriffskontrollsystems für Geo Web Services<br />

vorgestellt.<br />

6.1 SUNXACML<br />

Suns XACML <strong>Implementierung</strong> ist eine Menge an Java Klassen 35 , die XACML verstehen<br />

<strong>und</strong> Mechanismen zur Verarbeitung von Attributen, Zugriffsentscheidungsanfragen <strong>und</strong><br />

Zugriffsregeln anbieten. Auf Basis von SUNXACML ist es mit relativ wenig Code möglich,<br />

ein XACML-basiertes Zugriffskontrollsystem für Web Services zu realisieren. Im Folgenden<br />

wird eine kurze Einführung zum Aufbau <strong>und</strong> zur Verwendung der XACML <strong>Implementierung</strong><br />

von SUN (Version 1.2) gegeben. Erwähnt werden nur die für die Erweiterung von<br />

SUNXACML <strong>und</strong> die zur Umsetzung der wesentlichen Komponenten des Zuriffskontrollsystems<br />

relevanten Packages der API. Die genaue Funktionalität der einzelnen Packages <strong>und</strong><br />

Klassen von SUNXACML kann in SUNXACML 1.2 <strong>und</strong> in den JavaDocs der SUNXACML<br />

API nachgelesen werden.<br />

Das Factory System<br />

Im Package com.sun.xacml.attr werden neben den Standard XACML Attributtypen<br />

<strong>und</strong> den XACML Mechanismen zum Selektieren von Attributen die so genannten Factories<br />

definiert.<br />

Ziel der Factories ist es, stabile <strong>und</strong> einheitliche Schnittstellen zur Nutzung <strong>und</strong> Erweiterung<br />

der von SUNXACML unterstützten Attributtypen, Funktionen <strong>und</strong> Combining Algorithmen<br />

anzubieten. Der Kerncode von SUNXACML nutzt die unveränderbaren default Standard<br />

Factories.<br />

35 Die <strong>Implementierung</strong> mit SUNXACML Version 1.2 benötig mindestens JDK 1.4.0 zum Erzeugen <strong>und</strong> Ausführen<br />

des Codes.


110<br />

Benötigt ein Programmierer weitergehende Funktionalitäten als die von den default Factories<br />

angebotenen, so muss er für die entsprechende Factory eine neue Instanz anfordern.<br />

Für diese sollte gewährleistet sein, dass sie die selben Funktionalitäten wie die Standard<br />

Factory bietet. Auf Basis der neuen Factory Instanz kann der Programmierer dann seine<br />

Änderungen bzw. Erweiterungen beliebig umsetzen. Dadurch wird erreicht, dass andere<br />

Komponenten nicht von den Änderungen des Programmierers beeinträchtigt werden. Dies<br />

vereinfacht den Austausch, das Erweitern sowie das Weglassen von Modulen in<br />

SUNXACML.<br />

Wie der Programmierer die Erweiterungen der Attributtypen <strong>und</strong> Funktionen, die ihm die entsprechende<br />

Factory zur Verfügung stellt, mit SUNXACML umsetzen kann, ist durch die<br />

unten abgebildeten Codebeispiele beschrieben. Es werden an dieser Stelle nur die Mechanismen<br />

zum Erweitern der Factories vorgestellt. Ein Beispiel für den Einsatz der Mechanismen<br />

findet sich im Abschnitt 6.2, in dem gezeigt wird, wie die für raumbezogene Zugriffskontrolle<br />

benötigten Erweiterungen der Attributtypen <strong>und</strong> Funktionen von SUNXACML umgesetzt<br />

werden. Detailliertere Informationen zum Factory System in SUNXACML finden<br />

sich in SUNXACML 1.2.<br />

Zur Erweiterung der Attributtypen über die StandardAttributeFactory muss folgendermaßen<br />

vorgegangen werden:<br />

StandardAttributeFactory standardFactory =<br />

StandardAttributeFactory.getFactory();<br />

final BaseAttributeFactory newFactory =<br />

new BaseAttributeFactory(standardFactory.getStandardDatatypes());<br />

...<br />

// Ändern der Factory. Beispiel siehe 6.2.1<br />

...<br />

AttributeFactory.setDefaultFactory(new AttributeFactoryProxy() {<br />

public AttributeFactory getFactory() {<br />

return newFactory;<br />

}<br />

});<br />

Das Ergänzen von Funktionen kann mit der FunctionFactory wie folgt erreicht werden:<br />

FunctionFactoryProxy proxy = StandardFunctionFactory.getNewFactoryProxy();<br />

...<br />

// Modifizieren der Faktory über den Proxy<br />

...<br />

FunctionFactory.setDefaultFactory(proxy);<br />

Neben dem Factory System bietet SUNXACML ein Finder Konzept zur Nutzung von Modulen,<br />

die zur funktionalen Strukturierung der Komponenten dienen. Je nach Bedarf können<br />

benötigte Module – vordefiniert oder auch selbstdefiniert – zu <strong>einer</strong> Einheit des Zugriffskontrollsystems<br />

(z.B. zum PDP) zusammengefügt werden. Dafür müssen die Module zunächst instanziert<br />

werden. Im Anschluss werden die entsprechenden Finder mit den instanzierten Mo-


111<br />

dulen angelegt. Über diese Finder können die Einheiten des Zugriffskontrollsystems die<br />

Funktionalität der Module dann nutzen (Details siehe 6.3).<br />

6.2 Erweiterungen von SUNXACML<br />

Dieser Abschnitt beschreibt, wie die SUNXACML API zu erweitern ist, um die zur Umsetzung<br />

raumbezogener Zugriffskontrolle benötigten Attributtypen, Funktionen <strong>und</strong> Module zu<br />

unterstützen. Für einen detaillierten Einblick in die <strong>Implementierung</strong> der Erweiterungen wird<br />

auf die im Inneneinband der Arbeit befindliche CD-ROM (genauer: auf den src Verzeichnis<br />

auf der CD-ROM) mit dem dokumentierten Quellcode des Prototypen verwiesen.<br />

6.2.1 Der Spatial Attributtyp<br />

Wie in 5.3.1 erörtert wurde, muss zur Realisierung raumbezogener Zugriffskontrolle mit<br />

XACML, die Verwendung des spatial Attributtyps im Regelwerk sowie im XACML Request<br />

Context unterstützt werden. Zur Erweiterung der von SUNXACML angebotenen Attributtypen<br />

muss das unter 6.1 eingeführte Factory Konzept verwendet werden.<br />

Alle Attributtypen sind Unterklassen der abstrakten Klasse AttributeValue. Daher muss<br />

zur <strong>Implementierung</strong> des spatial Attributtyps eine neue Klasse angelegt werden, die<br />

AttributValue erweitert. In dieser werden der Bezeichner des Attributtyps<br />

(http://www.spatial-DatatypesForXACML#spatial), die Signatur des Konstruktors<br />

sowie einige einfache Funktionen auf diesem neuen Attributtyp definiert. Der Attributtyp<br />

ermöglicht das Speichern der GML-kodierten Repräsentation der Geometrien in einem<br />

String sowie Funktionen zur Verarbeitung dieses GML Strings. Zum Aufbau <strong>und</strong> Inhalt dieser<br />

Klasse sei auf die Datei SpatialAttribut.java im Verzeichnis src auf der CD-ROM (siehe Inneneinband<br />

der Arbeit) verwiesen.<br />

Nachdem der spatial Attributtyp durch die neue Klasse (SpatialAttribut) unterstützt<br />

wird, kann er der AttributeFactory hinzugefügt werden. Hierfür ist der unter 6.1<br />

vorgestellte Mechanismus zum Erweitern der Factories zu verwenden.<br />

StandardAttributeFactory standardFactory =<br />

StandardAttributeFactory.getFactory();<br />

final BaseAttributeFactory newFactory = new BaseAttributeFactory<br />

(standardFactory.getStandardDatatypes());<br />

newFactory.addDatatype("http://www.spatialDatatypesForXACML#spatial",<br />

new AttributeProxy() {


112<br />

});<br />

public AttributeValue getInstance(Node root) throws Exception {<br />

// create a new SpatialAttribute<br />

return SpatialAttribute.getInstance(root);<br />

}<br />

public AttributeValue getInstance(String value) throws Exception {<br />

return new SpatialAttribute(value);<br />

}<br />

Der AttributeProxy wird immer dann aufgerufen, wenn die AttributeFactory gebeten<br />

wird, einen neuen spatial Attributtyp zu initialisieren.<br />

6.2.2 Topologische <strong>und</strong> räumliche Funktionen<br />

Trotz des großen Angebotes an vordefinierten Funktionen in XACML muss, wie in 5.1 diskutiert<br />

wurde, XACML bzw. SUNXACML um die genannten topologischen <strong>und</strong> räumlichen<br />

Funktionen erweitert werden.<br />

Alle SUNXACML Funktionen implementieren das Function Interface über die FunctionBase<br />

Hilfsklasse. Diese sorgt dafür, dass eine von SUNXACML erwartete Basisfunktionalität<br />

der neu definierten Funktionen vorhanden ist (mehr Infos siehe JavaDocs zu<br />

SUNXACML).<br />

Es soll an dieser Stelle der Aufbau der Klassen zur Umsetzung topologischer <strong>und</strong> räumlicher<br />

Operationen (TopologicalRelations.java <strong>und</strong> SpatialOperations.java) nur kurz vorgestellt <strong>und</strong><br />

auf die wesentlichen Aspekte hingewiesen werden. Für Details wird die Lektüre des Quellcodes<br />

beider Dateien empfohlen (siehe CD-ROM im Inneneinband).<br />

Zunächst müssen die Bezeichner der neuen Funktionen festgelegt werden. Zudem muss für<br />

jede Funktion die Anzahl <strong>und</strong> der Typ der Parameter (hier der spatial Attributtyp 36 ) sowie<br />

der Rückgabetyp festgelegt werden. Des weiteren wird spezifiziert, was bei Anwendung der<br />

neuen Funktionen geschehen soll. Im ersten Schritt werden die Werte der spatial Attribute,<br />

welche die Argumente der neuen Funktionen darstellen, geparst (vgl. die selbstentwickelten<br />

Klassen: TopologicalRelations.java <strong>und</strong> SpatialOperations.java sowie die geometrietyp-<br />

Attribut.java). Dadurch wird überprüft, ob sie der erwarteten GML Syntax genügen. Außerdem<br />

kann durch das Parsen bestimmt werden, welche Geometrie in dem spatial Attribut<br />

gespeichert ist (vgl. getDatatype Methode ). Dies ist sinnvoll, da dadurch in gewissen Fällen<br />

vor Instanzierung der Geometrieobjekte <strong>und</strong> vor Auswertung räumlicher Funktionen entschieden<br />

werden kann, ob die Funktion auf die Geometrie(n) überhaupt definiert bzw. zu berechnen<br />

ist (vgl. Tabellen in Anhang B oder TopologicalRelations.java bzw. SpatialOperations.java).<br />

36 Würde je Geometrietyp ein eigener Daten- bzw. Attributtyp verwendet werden (vgl. 5.3.1), dann müssten für<br />

jede topologische Operation alle möglichen Signaturen definiert werden.


113<br />

Nachdem die spatial Attribut Argumente der räumlichen Funktionen geparst wurden,<br />

werden sie in <strong>einer</strong> internen Darstellung (Array aus Strings) gespeichert. Die einzelnen Felder<br />

enthalten Informationen zum Typ der Geometrie, zum Raumbezugssystem sowie die Koordinaten,<br />

welche die Form der Geometrie beschreiben.<br />

Im nächsten Schritt findet die tatsächliche Berechnung der topologischen <strong>und</strong> räumlichen O-<br />

perationen statt. Diese wurde in eine gesonderte Klasse, die XACMLGeometryFactory<br />

verlagert <strong>und</strong> stellt die Schnittstelle zur Java Topologie Suite (JTS) API dar. Mit Hilfe der<br />

JTS API lassen sich geometrische Objekte einfach instanzieren <strong>und</strong> sämtliche benötigten topologischen<br />

<strong>und</strong> räumlichen Operationen sind zudem direkt auf den mit JTS erzeugten Geometrieinstanzen<br />

nutzbar (mehr hierzu in 6.3.3).<br />

Der letzte Schritt zur Unterstützung der neuen Funktionen ist ihre Bekanntmachung in der<br />

FunctionFactory. Die FunktionFactory ist in drei Gruppen unterteilt (vgl. Java-<br />

Docs) <strong>und</strong> es muss vom Proxy eine der Gruppen angefordert werden. Da räumliche Funktionen<br />

nur in Conditions der Regeln verwendbar sein sollen, wurden die neuen Funktionen<br />

der ConditionFunktionFactory Gruppe zugeordnet.<br />

FunctionFactoryProxy proxy =<br />

StandardFunctionFactory.getNewFactoryProxy();<br />

FunctionFactory factory = proxy.getConditionFactory();<br />

//Die topologischen Relationen<br />

Iterator iterator=<br />

TopologicalRelations.getSupportedIdentifiers().iterator();<br />

while (iterator.hasNext()){<br />

factory.addFunction(new TopologicalRelations((String)(iterator.next())));<br />

}<br />

//Die spatial Operationen getLength, getArea <strong>und</strong> distance<br />

iterator = SpatialOperations.getSupportedIdentifiers().iterator();<br />

while (iterator.hasNext()){<br />

factory.addFunction(new SpatialOperations((String)(iterator.next())));<br />

}<br />

FunctionFactory.setDefaultFactory(proxy);<br />

Zusätzlich zu der expliziten Definition der räumlichen Funktionen muss SUNXACML um<br />

Funktionen erweitert werden, die das Arbeiten mit dem neuen spatial Attributtyp ermöglichen.<br />

Sofern es sich um eine Standard Bag oder eine Equal Funktion auf dem neuen Attributtyp<br />

handelt, bietet SUNXACML einen besonderen Mechanismus um diese indirekt definieren<br />

zu können, wodurch sie in den Regeln verwendbar werden. Hierzu müssen die Konstruktoren<br />

der BagFunction <strong>und</strong> EqualFunction Klasse mit dem neuen Datentyp aufgerufen<br />

werden.<br />

FunctionFactory factory0 = FunctionFactory.getGeneralInstance();<br />

factory0.addFunction(BagFunction.getOneAndOnlyInstance<br />

("spatial-one-and-only", SpatialAttribute.identifier));


114<br />

Durch obigen Codeausschnitt wird ermöglicht, dass die spatial-one-and-only Funktion<br />

auf einem Bag aus Werten vom Typ spatial Attribut angewendet werden kann (z.B.<br />

als Hülle des spatialInformationSelectors, um genau ein spatial Attribut zu<br />

fordern).<br />

Ähnlich den beschriebenen Erweiterungen ist es mit SUNXACML auch möglich, neue Combining<br />

Algorithmen zu definieren. Da für das in dieser Arbeit betrachtete Beispielszenario die<br />

vordefinierten Algorithmen ausreichend mächtig sind, wird der Mechanismus zur Erweiterung<br />

von Combining Algorithmen nicht explizit vorgestellt. Für detailliertere Informationen<br />

hierzu wird stattdessen auf SUNXACML 1.2 verwiesen.<br />

6.2.3 Funktionen zum Auflösen der Referenzen in den Regeln auf Daten<br />

im XACML Request Context<br />

In der SUNXACML API 1.2 sind der AttributeDesignator <strong>und</strong> der AttributeSelector<br />

bereits implementiert. Wie in 4.2.4 erörtert wurde, ist allerdings eine neue Art der<br />

Referenzierung von Attributen im Request Context möglich <strong>und</strong> nötig. Zur Umsetzungen der<br />

datentypInformationSelectoren musste SUNXACML um selbstdefinierte Funktionen<br />

erweitert werden, die es ermöglichen, Daten im ResourceContent der Zugriffsentscheidungsanfragen<br />

zu selektieren <strong>und</strong> als Parameter für die Funktionen der Regeln bereitzustellen.<br />

Wie der AttributeDesignator <strong>und</strong> der AttributeSelector liefert auch<br />

der datentypInformationSelector einen Bag mit Attributen vom Typ datentyp<br />

zurück. Zum Selektieren der Werte unterhalb des ResourceContent Elementes wird der<br />

sich durch Konkatenation der Parameter ergebende XPath-Ausdruck ausgewertet. Der angesprochene<br />

Knoten wird daraufhin samt aller Nachkommen zunächst als String kodiert selektiert.<br />

Im Anschluss wird dieser String zur Initialisierung der Attribute vom Typ datentyp<br />

verwendet. Sofern der XPath-Ausdruck mehrere Knoten selektiert, wird je Knoten ein eigenes<br />

Attribut angelegt. Unabhängig von der Zahl der erzeugten Attribute wird zuletzt ein Bag<br />

Attribut instanziert, dessen Inhalt die vom datentyp-InformationSelector erzeugten<br />

datentyp Attribute sind.<br />

Zur Auswertung der XPath-Ausdrücke wurde die XALAN API (Version 2.6) von Apache<br />

verwendet da diese auch von SUNXACML für die Verarbeitung von XML-kodierten Daten<br />

verwendet wird (z.B. im SelectorModule welches die Funktionalität des AttributeSelector<br />

umsetzt).<br />

Abschließend sei erwähnt, dass datentypInformationSelectoren versuchen, Namespaces<br />

in XPATH-Ausdrücken durch die Namespace Definitionen in der Wurzel des Regelwerkes<br />

zu substituieren.


115<br />

6.2.4 Das Resource Finder Modul zur Unterstützung hierarchischer Resourcen<br />

In SUNXACML ist es möglich der <strong>Implementierung</strong> eines Zugriffskontrollsystems neue Module<br />

hinzuzufügen. Es existieren drei Typen von Finder Modulen:<br />

• Attribut Finder Module:<br />

Dieses Modul dient zum Auffinden von Attributwerten. Es wird vom AttributeDesignator<br />

<strong>und</strong> AttributeSelector aufgerufen.<br />

• Policy Finder Module:<br />

Dieses Modul dient zum Auffinden der Policies <strong>und</strong> PolicySets zu <strong>einer</strong> Zugriffsentscheidungsanfrage<br />

<strong>und</strong> zum Auffinden verteilt gehaltener Policies, die in einem<br />

PolicySet referenziert worden sind.<br />

• Resource Finder Module:<br />

Dieses Modul dient zur Unterstützung hierarchischer Ressourcen. Falls die zu schützende<br />

Ressource ein hierarchisches Objekt aus einzelnen Ressourcen ist (z.B. ein XML Dokument),<br />

kann durch dieses Modul eine Liste der Identifikatoren der individuellen Ressourcen<br />

(z.B. XPath-Ausdrücke zu allen Knoten des XML Dokumentes) erstellt werden. Da<br />

dieses Modul in der SUNXACML API nicht implementiert ist, musste es für den Prototypen<br />

neu entwickelt werden.<br />

Es wird nun kurz gezeigt, wie das Resource Finder Module mit SUNXACML für den Prototypen<br />

implementiert worden ist. Dies entspricht der Erweiterung des Context Handlers, so<br />

dass dieser die Umwandlung der globalen Zugriffsentscheidungsanfrage in individuelle<br />

Zugriffsentscheidungsanfragen ermöglichen kann. Da im vorgestellten Prototyp eine<br />

Zugriffskontrolle nach dem „so viel wie geht“ Prinzip unterstützt werden soll, müssen die<br />

Antworten auf die individuellen Zugriffsentscheidungsanfragen einzeln an den PEP weitergeleitet<br />

werden (vgl. 4.2.2). Angemerkt sei an dieser Stelle, dass, sofern ein konkretes Anwendungsszenario<br />

eine Zugriffskontrolle nach dem „alles oder nichts“ Prinzip wünscht, der Context<br />

Handler zusätzlich um ein zweites Modul erweitert werden muss, so dass er in Abhängigkeit<br />

der individuellen Zugriffsentscheidungsantworten nur eine Antwort an den PEP zurückgibt.<br />

Ob der Context Handler dieses zweite Modul zu verwenden hat, wird durch den<br />

scope Attribut Wertes entire hierarchie im globalen Request Context gekennzeichnet.<br />

Wie bereits unter 4.2.4 erörtert wurde, ist es zur Effizienzsteigerung sinnvoll, dass der Context<br />

Handler, wenn die Zugriffsentscheidung zu <strong>einer</strong> individuellen Ressource „zugriffsbeschränk“<br />

lautete, das Absetzen der individuellen Zugriffsentscheidungsanfragen für die<br />

Nachkommen zu diesem Knoten abbricht (Begründung vgl. 4.2.4).<br />

Im umgesetzten Prototyp ist diese Performanceverbesserung allerdings bislang noch nicht<br />

realisiert, da in SUNXACML 1.2 dieses Verhalten nur mit weitreichenden Änderungen im<br />

Kern der <strong>Implementierung</strong> zu erreichen ist. Da allerdings die Nachfolgerversion zur XACML


116<br />

2.0 Version die erwähnte Optimierung unterstützen soll (MailAnderson b) wurde diese in der<br />

<strong>Implementierung</strong> des Prototyps vernachlässigt.<br />

Zunächst muss im scope Attribut festgelegt werden, wann das Resource Finder Module<br />

verwendet werden soll. Wie in 4.2.2 erklärt wurde, drückt ein scope Wert von descendants<br />

im globalen XACML Request Context aus, dass sich die Zugriffsentscheidungsanfrage<br />

auf eine hierarchische Ressource bezieht, deren Wurzel durch das resource-id Attribut<br />

spezifiziert wurde. Dies bedeutet, dass das Resource Finder Module immer dann angesprungen<br />

werden muss, wenn der Wert des scope Attributes der globalen Zugriffsentscheidungsanfrage<br />

gleich descendants ist. Die Aufgabe des Modules ist dann in Abhängigkeit des<br />

resource-id Wertes alle individuellen Ressourcen zu identifizieren. Da die hierarchische<br />

Ressource im Anwendungsfall der Arbeit ein XML Dokument ist, hat der Resource Finder die<br />

Aufgabe, zum resource-id Wert – dieser zeigt auf die Wurzel des XML Dokumentes, da<br />

für alle Knoten die Zugriffsregeln überprüft werden sollen – alle darunter liegenden Element<strong>und</strong><br />

Attributknoten zu finden <strong>und</strong> einen eindeutigen Identifikator je Knoten zu erzeugen.<br />

Hierfür wird das XML Dokument, das unterhalb des ResourceContent Elementes liegt<br />

durch eine rekursiv arbeitende Funktion durchlaufen, die zu jedem Knoten den ihn adressierenden<br />

XPath-Ausdruck zurückliefert. Für die genaue Arbeitsweise dieser Rekursion wird auf<br />

den Quellcode in MyResourceFinderModule.java verwiesen.<br />

Rückgabewert des Moduls ist ein ResourceFinderResult Objekt, das mit der Menge an XPath-<br />

Ausdrücken konstruiert wurde. Dieses Objekt stellt die Basis zur Erzeugung der individuellen<br />

Zugriffsentscheidunganfragen dar. Für jeden in ihm gespeicherten XPath-Ausdruck wird eine<br />

individuelle Zugriffsentscheidungsanfrage an den PDP abgesetzt. Der Aufbau dieser individuellen<br />

Zugriffsentscheidungsanfragen entspricht mit Ausnahme des Wertes des resource-id<br />

Attributes dem der globalen Zugriffsentscheidungsanfrage. Dieses Attribut wird mit<br />

einem der XPath-Ausdrücke belegt. Durch diese Vorgehensweise wird gewährleistet, dass<br />

sich jede individuelle Zugriffsentscheidungsanfrage auf genau einen Knoten des XML Dokumentes<br />

bezieht <strong>und</strong> jede individuelle Ressource einzeln auf Zugriffsrechte überprüft wird.<br />

Zuletzt muss das neu definierte Resource Finder Module im PDP eingeb<strong>und</strong>en werden. Wie<br />

dies umgesetzt wurde, wird in Abschnitt 6.3.1 demonstriert.


117<br />

6.3 Der PDP<br />

6.3.1 <strong>Implementierung</strong> des PDP<br />

Zur <strong>Implementierung</strong> eines PDPs mit SUNXACML müssen die benötigten Module zusammengefügt<br />

werden. Dazu wird das von SUNXACML angebotene Finder Konzept (vgl. 6.1)<br />

verwendet. Es muss eine Menge von Finder Modules instanziert werden, die das Zusammenfügen<br />

der benötigten Module ermöglichen. Die für den hier vorgestellten Prototypen benötigten<br />

Module sind das<br />

• File Policy Module, das den Zugriff auf das Regelwerk, gespeichert als XML Dateien,<br />

ermöglicht.<br />

• CurrentEnv Module, das Werte wie die aktuelle Uhrzeit, das Datum etc. bereitstellt.<br />

• Selector Module zur Unterstützung von AttributeSelectoren.<br />

• Resource Finder Module, das für die Umwandlung der globalen Zugriffsentscheidungsanfrage<br />

in die individuellen Zugriffsentscheidungsanfragen zuständig ist.<br />

Bevor diese Module über die Finder Modules im PDP verfügbar gemacht werden können,<br />

müssen sie zunächst wie folgt instanziert werden:<br />

FilePolicyModule policyModule = new FilePolicyModule();<br />

policyModule.addPolicy("/path/to/policy.xml");<br />

CurrentEnvModule envModule = new CurrentEnvModule();<br />

SelectorModule selectorAttributeModule = new SelectorModule();<br />

MyResourceFinderModule resourceFinderModule = new MyResourceFinderModule();<br />

Nach der Instanzierung der Module können die Finder, die diese Module für den PDP nutzbar<br />

machen, initialisiert werden:<br />

PolicyFinder policyFinder = new PolicyFinder();<br />

Set policyModules = new HashSet();<br />

policyModules.add(policyModule);<br />

policyFinder.setModules(policyModules);<br />

AttributeFinder attrFinder = new AttributeFinder();<br />

List attrModules = new ArrayList();<br />

attrModules.add(envModule);<br />

attrModules.add(selectorAttributeModule);<br />

attrFinder.setModules(attrModules);<br />

ResourceFinder resourceFinder = new ResourceFinder();<br />

List resourceModules = new ArrayList();<br />

resourceModules.add(resourceFinderModule);<br />

resourceFinder.setModules(resourceModules);


118<br />

Nun kann der PDP über die PDPConfig Klasse mit den Findern als Argumente erzeugt <strong>und</strong><br />

dadurch gleichzeitig konfiguriert werden:<br />

PDP pdp = new PDP(new PDPConfig(attrFinder, policyFinder, resourceFinder));<br />

Die so gewonnene PDP Instanz stellt den voll funktionsfähigen PDP dar. Man kann Anfragen<br />

von ihm auswerten lassen, indem seine evaluate Funktion mit einem RequestCtx Objekt<br />

(entspricht dem globalen XACML Request Context) als Argument aufgerufen wird.<br />

RequestCtx request =<br />

new RequestCtx(subjects, resourceAttrs, actionAttrs, environmentAttrs);<br />

ResponseCtx response = pdp.evaluate(request);<br />

Das Ergebnis der Auswertung des PDPs ist eine ResponseCtx Instanz, die einem gültigen<br />

XACML Response Context entspricht. In diesem ist eine Menge an Antworten (eine je Knoten<br />

der vom WFS generierten Antwort) des PDPs enthalten.<br />

In Kapitel 6.4 wird beschrieben, wie der PEP <strong>und</strong> Context Handler die RequestCtx Objekte<br />

erzeugen. Dort wird ebenfalls die Interpretation der ResponseCtx Instanz durch den PEP<br />

diskutiert.<br />

6.3.2 Instanzieren der georeferenzierten geometrischen Objekte<br />

Für die Instanzierung der Geometrien <strong>und</strong> zur Berechnung der räumlichen Funktionen wurde<br />

die JTS API verwendet. JTS verwendet zum Abbilden zweidimensionaler, georeferenzierter<br />

Geometrien ein Datenmodell, das auf dem Modell der OpenGIS Simple Features Specification<br />

For SQL Revision 1.1 (OGC SFS 1.1) basiert. Für Polygone wurde festgelegt, dass die inneren<br />

Ränder eines Polygons den äußeren Rand maximal in einem Punkt berühren dürfen.<br />

Zudem wurden sich wiederholende Punkte <strong>und</strong> selbstschneidende Linienzüge erlaubt.<br />

Eine Möglichkeit zur Erzeugung geschlossener geometrischer Objekte in JTS bietet der so<br />

genannte WKTReader (Well-Known Text Reader). Dieser liest eine Textfolge ein, die <strong>einer</strong><br />

bestimmten Syntax genügen muss (vgl. OGC SFS 1.1, S. 53 <strong>und</strong> 54 bzw. 3-11 <strong>und</strong> 3-12) <strong>und</strong><br />

instanziert mit deren Hilfe ein Geometry Objekt.<br />

Beispiel:<br />

Geometry g = new WKTReader().read(„LINESTRING (0 0, 10 10, 20 20)“);<br />

Wie man sieht, weist der WKT String eine nicht GML-konforme Syntax auf (für die korrekte<br />

GML Syntax vgl. 2.2). Es ist daher nötig, die GML-kodierten Geometrien bzw. deren interne


119<br />

Darstellung (Array aus Strings – vgl. 6.2.2) in die WKT Syntax zu transformieren (siehe<br />

Klasse XacmlGeometryFactory), bevor die Geometrie nach obigen Schema instanziert<br />

werden kann.<br />

JTS bietet die Möglichkeit, zu jeder erzeugten Geometrie eine Menge an Metadaten festzulegen<br />

(z.B. das sich auf die Koordinaten der Geometrie beziehende Raumbezugssystem). Metadaten<br />

werden in dem zum Objekt gehörigen „userData“ Feld gehalten. Diese Daten werden<br />

allerdings von den JTS Funktionen bei deren Anwendung nicht berücksichtigt. Daraus folgt,<br />

dass es Aufgabe der Anwendung ist, nötige Koordinatensystemüberprüfungen <strong>und</strong> gegebenenfalls<br />

-transformationen durchzuführen (siehe 4.3.6).<br />

Sobald die Geometrien instanziert sind <strong>und</strong> die Koordinaten sich auf das selbe SRS beziehen,<br />

können die topologischen Relationen oder die räumlichen Operationen (length, area etc.) auf<br />

ihnen angewendet werden.<br />

6.3.3 Auswertung der raumbezogenen Funktionen<br />

Auf den mit JTS erzeugten Geometrien lassen sich die gängigen Algorithmen zur Verarbeitung<br />

von Geodaten einfach <strong>und</strong> effizient umsetzen. Wie bei allen numerischen Berechnungen<br />

treten auch bei den geometrischen Algorithmen R<strong>und</strong>ungsfehler aufgr<strong>und</strong> der begrenzten Genauigkeit<br />

der Zahlen in Computern auf. Robuste Algorithmen (d.h. keine Ungenauigkeiten<br />

aufgr<strong>und</strong> von R<strong>und</strong>ungen) sind in der Regel komplexer <strong>und</strong> weniger performant. Daher sind<br />

in JTS nur die f<strong>und</strong>amentalen geometrischen Algorithmen, wie z.B. die Bestimmung der<br />

Schnittmenge, durch robuste Algorithmen umgesetzt. Die Berechnung der Relationen zwischen<br />

zwei Geometrien beruht auf dem DE-9IM Modell (vgl. 5.2).<br />

Wie folgender Codeausschnitt der XacmlGeometryFactory Klasse zeigt, lassen sich die<br />

in JTS implementierten Funktionen sehr einfach zur Auswertung der in den Raumregeln spezifizierten<br />

räumlichen Analysen nutzen.<br />

...<br />

Geometry g1 = wktReader.read(geom_1_JtsFormat);<br />

Geometry g2 = wktReader.read(geom_2_JtsFormat);<br />

if (relation.equals("within")){<br />

result = g1.within(g2);<br />

}else if (relation.equals("touches")){<br />

result = g1.touches(g2);<br />

...


120<br />

6.3.4 Koordinatensystemüberprüfung <strong>und</strong> Transformation der Koordinaten<br />

Wenn das Raumbezugsystem der Geodaten, die vom Geo Web Service angefordert wurden,<br />

von dem Raumbezugssystem abweicht, das für die Geometrien in den raumbezogenen<br />

Zugriffsregeln verwendet wurde, muss die Zugriffskontrolle diesen Fall entsprechend den<br />

nachfolgenden Ausführungen behandeln.<br />

Die einfachste Lösung wäre zu fordern, dass Raum- oder RaumInstanzregeln <strong>und</strong> abfragbare<br />

Features im selben SRS festgelegt wurden. Die Überprüfung der Äquivalenz der Raumbezugssysteme<br />

könnte durch eine extra Regel festgelegt werden, die in jeder Policy, in der<br />

Raumregeln auftauchen, existieren muss. Die Regel muss das srsName Attribut der Objektinstanz<br />

mit dem srsName Attribut der Regelgeometrie auf Gleichheit überprüfen. Sind die<br />

Raumbezugssysteme verschieden, so sollte das Zugriffskontrollsystem eine Fehlermeldung<br />

zurückgeben.<br />

Eine fortgeschrittenere Verfahrensweise bei unterschiedlichen Raumbezugssystemen ist dagegen<br />

eine automatisierte Durchführung von SRS Transformationen durch das Zugriffskontrollsystem.<br />

Hierzu ist es notwendig, zu jeder zu erzeugenden Geometrie das entsprechende<br />

Koordinatensystem (SRSID) im „userData“ Feld der JTS Geometry zu speichern. Sollte bei<br />

der Überprüfung <strong>einer</strong> topologischen Relation die SRSID verschieden sein, so muss eine<br />

Transfomationseinheit beauftragt werden, die Koordinaten der beiden Geometrien so umzuformen,<br />

dass sie sich auf das selbe SRS beziehen <strong>und</strong> somit direkt vergleichbar sind. Auf dem<br />

Markt existieren einige kostenpflichtige APIs <strong>und</strong> Frameworks (z.B. CoordTrans oder<br />

Transdata), mit denen die Transformationseinheit einfach umgesetzt werden kann. Aus finanziellen<br />

Gründen wurde allerdings im Prototyp keines der kommerziell verfügbaren Produkte<br />

integriert. Stattdessen wird im Regelwerk des Beispielszenarios (vgl. Regelbeispiel<br />

srsCheck.xml im Verzeichnis policy auf der CD-ROM) die erstgenannte Lösung zur Behandlung<br />

der SRS Problematik verfolgt.<br />

Eine weitere Alternative wäre, im Zugriffskontrollsystem mehrere Kopien des Regelwerkes<br />

zu halten. Diese sind untereinander identisch mit der Ausnahme, dass die Koordinaten der<br />

Regelgebiete in andere Koordinatensysteme umgerechnet wurden. Dadurch ist es möglich<br />

Koordinatensystemtransformationen während des Prozesses der Zugriffskontrolle zu vermeiden.<br />

Diese Vorgehensweise ist allerdings sofern das Regelwerk per Hand editiert wird eher<br />

umständlich. Dieser Ansatz wird daher nur als sinnvoll erachtet, sofern ein PAP im Zugriffskontrollsystem<br />

vorhanden ist oder aus Performance gründen dieser Weg verfolgt werden soll.<br />

Da dieser im Prototypen nicht existiert <strong>und</strong> Performanceoptimierungen in dieser wissenschaftlichen<br />

Arbeit keine Rolle spielen, wurde diese Variante nicht weiter verfolgt.


121<br />

6.4 Der PEP<br />

Die Aufgabe des PEPs ist es, Zugriffsentscheidungsanfragen an den PDP zu generieren sowie<br />

die darauf resultierenden Antworten zu interpretieren. Er hat daher eine Schnittstelle zur Anwendungsumgebung<br />

(zum Geo Web Service oder zum Nutzer). Es wird von <strong>einer</strong> Kommunikation<br />

gemäß der WFS Spezifikation ausgegangen, da der entwickelte Prototyp exemplarisch<br />

für einen WFS entworfen wurde. Die Ausführungen sind allerdings durch kleine Anpassungen<br />

auf beliebige Anwendungsfälle übertragbar. Basis für die <strong>Implementierung</strong> des PEPs ist<br />

das Package com.sun.xacml.ctx.<br />

6.4.1 Generierung der globalen Zugriffsentscheidungsanfrage<br />

Zunächst muss der PEP eine RequestCtx Instanz erzeugen, die den globalen XACML Request<br />

Context darstellt. Dazu wird der Konstruktor der RequestCtx Klasse mit den vier<br />

Argumenten Subject, Resource, Action <strong>und</strong> Environment aufgerufen (Details siehe<br />

PEP.java im Verzeichnis src). Diese Objekte stellen Mengen von Attributen zum Subjekt, zur<br />

Ressource (z.B. zur Web Service Anfrage oder Antwort), zur Aktion <strong>und</strong> zum Environment<br />

dar, welche die dem PEP bekannten Informationen zu <strong>einer</strong> Nutzerinteraktion auf einen<br />

Dienst repräsentieren.<br />

RequestCtx request =<br />

new RequestCtx(subjects, resourceAttrs, actionAttrs, environmentAttrs);<br />

Kurz erwähnt werden sollte, dass im Resource Objekt das zu schützende XML Dokument<br />

(die Web Service Anfrage oder Antwort) enthalten ist. Um zu gewährleisten, dass dieses ein<br />

gültiges XML Dokument darstellt, kann im PEP eine Validierung erfolgen. SUNXACML bietet<br />

dafür eine Schnittstelle zur Xerces API (Version 2.6.2). Da davon ausgegangen wird, dass<br />

der Web Service immer gültige Antworten erzeugt, wird im Prototypen beim Einsatz der<br />

Post-Processing Variante keine Validierung umgesetzt, wodurch sich die Performance der<br />

Zugriffskontrolle verbessert. Sofern allerdings der Pre-Processing Modus im Zugriffskontrollsystem<br />

eingestellt wird (Setzen der boolschen Variable doPreProcessing auf true), erfolgt<br />

Validierung, da ungewiss ist, ob die vom Nutzer kommenden Anfragen gültig sind. Nur<br />

wenn das System von <strong>einer</strong> gültigen Web Service Anfrage ausgehen kann, ist gewährleistet,<br />

dass das Regelwerk, welches in Abhängigkeit des Schemas der Anfrage generiert wurde, den<br />

gewünschten Zugriffsschutz umsetzt. Aus diesem Gr<strong>und</strong> werden nicht-valide Web Service<br />

Anfragen vom Zugriffskontrollsystem direkt abgewiesen.<br />

Eine nach obigem Schema erzeugte RequestCtx Instanz stellt einen gültigen globalen<br />

XACML Request Context dar. Allerdings müssen auf der Zugriffsentscheidungsanfrage noch


122<br />

zwei Zwischenschritte zur Unterstützung des deutschen Zeichensatzes <strong>und</strong> zur Deklarationen<br />

von Namensraumknoten ausgeführt werden, bevor diese zur Weiterverarbeitung an den Context<br />

Handler übergeben werden kann. SUNXACML bietet nicht die Möglichkeit, beim Erzeugen<br />

eines XACML Request Contextes den verwendeten Zeichensatz anzugeben. Ohne einen<br />

Zwischenschritt würden demnach Inhalte in der Zugriffsentscheidungsanfrage, die nicht<br />

UTF8 (SUNXACMLs default Zeichensatz für XML Daten) entsprechen (z.B. ß,ä,ö,ü), vom<br />

Parser im Context Handler bzw. PDP als ungültiger Input abgewiesen werden. Das Problem<br />

wird im Prototyp gelöst, indem eine zweite Möglichkeit zum Erzeugen <strong>einer</strong> Zugriffsentscheidungsanfrage<br />

genutzt wird. Die Klasse RequestCtx bietet die Methoden encode()<br />

<strong>und</strong> getInstance(InputStream in). Über die encode Funktion kann ein XACML<br />

Request Context XML-kodiert als OutputStream ausgegeben werden. Die Methode getInstance<br />

erzeugt basierend auf einem InputStream (XML-kodierter XACML Request<br />

Context) eine RequestCtx Instanz. Der unten abgebildete Codeausschnitt zeigt, wie<br />

über diese Methoden beliebige Zeichensätze in Zugriffsentscheidungsanfragen <strong>und</strong> -<br />

antworten unterstützt werden können.<br />

ByteArrayOutputStream out = new ByteArrayOutputStream();<br />

String header = "";<br />

out.write(header.getBytes());<br />

//Durch obige Zeile wird der Header an den RequestContext(zu diesem Zeitpunkt<br />

als OutputStream repräsentiert) angehängt<br />

request.encode(out);<br />

request = RequestCtx.getInstance((InputStream)new ByteArrayInput-<br />

Stream(out.toByteArray()));<br />

Ein weiterer Zwischenschritt (vgl. nachfolgender Codeausschnitt) wird benötigt, da in<br />

SUNXACML kein standardisierter Weg angeboten wird, um im Wurzelknoten des XACML<br />

Requests Namespace Attribute zu setzen.<br />

Node root = request.getDocumentRoot();<br />

((Element)root).setAttribute("xmlns","urn:oasis:names:tc:xacml:1.0:context"<br />

((Element)root).setAttribute("xmlns:gml","http://www.opengis.net/gml");<br />

Nachdem die beiden Zwischenschritte auf dem globalen XACML Request durchgeführt wurden,<br />

kann er zur Auswertung über den Context Handler an den PDP übergeben werden. Dies<br />

geschieht durch folgenden Ausdruck:<br />

ResponseCtx response = pdp.evaluate(request);<br />

Durch diese <strong>Implementierung</strong> wird die Übergabe des Request Contexts vom PEP über den<br />

Context Handler an den PDP sowie das Senden der Request Response vom PDP über den<br />

Context Handler an den PEP im selben Code <strong>und</strong> dadurch innerhalb eines lokal ablaufenden<br />

Programmes realisiert.<br />

Um diese Kommunikation über ein Netzwerk ablaufen zu lassen, müssen in den verteilt laufenden<br />

Programmen (der PEP <strong>und</strong> der PDP) Socket Schnittstellen eingesetzt werden. Zusätz-


123<br />

lich können die über das Netz ausgetauschten Informationen mit Technologien wie SAML<br />

verpackt werden. Allerdings wird in der XACML Spezifikation bisher noch nicht festlegt wie<br />

die Kommunikation zwischen einem online PDP <strong>und</strong> online PEP abzulaufen hat. Es ist von<br />

Seiten OASIS geplant diese Spezifikationslücke in den zukünftigen Versionen der Spezifikation<br />

zu schließen.<br />

6.4.2 Modifikation der Web Service Antwort beim Post-Processing<br />

Da im Prototypen Zugriffskontrolle nach dem „so viel wie geht“ Prinzip umgesetzt ist, erhält<br />

der PEP von Contex Handler für jeden Knoten des angefragten XML Dokumentes eine eigene<br />

individuelle Zugriffsentscheidungsantwort. Von Bedeutung sind die Antworten, deren<br />

Zugriffsentscheidung deny, indeterminate oder not applicable entsprechen. Zunächst muss<br />

entschieden werden, wie der PEP die Fälle not applicable <strong>und</strong> indeterminate behandeln soll.<br />

Eine Möglichkeit ist, ein not applicable als permit zu werten. Dies entspricht der Logik, dass,<br />

falls im Regelwerk keine Zugriffsregel für einen bestimmten Knoten des XML Dokumentes<br />

existiert, angenommen wird, dass dieser zugreifbar ist. Demnach kann, sofern der SSO einen<br />

kleinen Fehler bei der Definition des Regelwerkes gemacht hat, der Zugriff auf gewisse Knoten<br />

fälschlicher Weise gewährt werden (z.B. wenn eine negative Regel aufgr<strong>und</strong> des Fehlers<br />

nicht zur Anwendung kommt).<br />

Weniger brisant erscheint in diesem Zusammenhang das Fehlen anwendbarer Regeln (eine<br />

Zugriffsentscheidung zu <strong>einer</strong> individuellen Zugriffsentscheidungsanfrage von not applicable)<br />

einem deny gleich zu setzen. Zwar tritt auch in diesem Fall bei einem Fehler im Regelwerk<br />

ein unerwünschtes Verhalten auf, aber diesmal werden höchstens eigentlich zugreifbare Knoten<br />

fälschlicher Weise als zugriffsbeschränkt angesehen. Da die zweite Variante im Fall von<br />

Definitionsfehlern im Regelwerk eine aus Datensicherheitsaspekten sichere Verfahrensweise<br />

darstellt, wird diese als default Einstellung im Prototyp angeboten. Wünscht man allerdings<br />

ein Verhalten des Zugriffskontrollsystems entsprechend der ersten Variante, so kann dies<br />

durch Konfiguration des PEPs (Belegen der boolschen Variable werteNotApplicableAlsDeny<br />

mit false) erreicht werden.<br />

Im Falle <strong>einer</strong> indeterminate Zugriffsentscheidung wurde für den Prototypen festgelegt, dass<br />

der PEP dies wie ein deny wertet.<br />

Sofern der PEP eine individuelle Zugriffsentscheidungsantwort von deny (direkt oder indirekt<br />

durch Interpretation von indeterminate oder not applicable) erhält, muss er den entsprechenden<br />

Knoten aus dem angeforderten XML Dokument herausfiltern. Zur Identifikation des Knotens<br />

kann das resource-id Attribut, das in der XACML Response enthalten ist, verwendet<br />

werden.


124<br />

Zur Modifikation des XML Dokumentes wird XSLT eingesetzt. In der <strong>Implementierung</strong> wurde<br />

zur Unterstützung der XSL Transformationen die Xalan API (Version 2.6.0) sowie die<br />

Xerxes API (Version 2.6.2) genutzt. Das unten abgedruckte Stylesheet Dokument entspricht<br />

dem Skelett der XSL Datei, die zur Transformation der XML Dokumente verwendet wird.<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

Durch das Skelett wird eine identische Kopie des XML Dokumentes erzeugt. Sofern dem PEP<br />

aber nach dem Prozess der Zugriffskontrolle direkte oder indirekte 37 deny Zugriffsentscheidungen<br />

zu Knoten des XML Dokumentes vorliegen, muss dieser das Skelett der XSL Stylesheet<br />

Datei um einfache Template Regeln erweitern:<br />

<br />

...<br />

Diese überschreiben die vordefinierten Template Regeln, die für eine identische Kopie des<br />

XML Dokumentes sorgen. Damit eine Template Regel zur Anwendung kommt <strong>und</strong> dadurch<br />

der gewünschte überschreibende Effekt eintritt, muss das Template für den zugriffsbeschränkten<br />

Knoten greifen. Zu diesem Zweck ist es nötig, dass der PEP die XPath-Ausdrücke, die im<br />

resource-id Attribut der individuellen XACML Responses gespeichert sind, in die<br />

Template Regeln integriert. Da das nach diesem Schema definierte Template keine weitere<br />

Funktionalität hat (es handelt sich um ein so genanntes leeres Template, vgl. O’Reilly 2002,<br />

Abschnitt 8.4), wird umgesetzt, dass der Knoten, für den das Template greift, nicht im Ergeb-<br />

37 Ergeben sich durch entsprechende Wertung von not applicable <strong>und</strong>/oder indeterminate


125<br />

nisdokument erscheint. Durch diese Vorgehensweise können alle zugriffsbeschränkten Knoten<br />

aus dem XML Dokument herausgefiltert werden.<br />

Zum Verständnis des Skeletts sei noch ergänzt, dass durch die strip-space <strong>und</strong> preserve-space<br />

Elemente eine Eliminierung unnötiger Leerzeilen <strong>und</strong> –zeichen, die wegen<br />

herausgefilterter Knoten im XML Dokument entstehen können, erreicht wird.<br />

Die auf diese Weise zur Laufzeit erzeugte XSL Datei wird dann vom XSLT Prozessor auf der<br />

Web Service Antwort ausgeführt. Ergebnis ist ein neues XML Dokument – die modifizierte<br />

Web Service Antwort, aus der alle zugriffsgeschützten Knoten herausgefiltert wurden. Dieses<br />

Dokument kann nun an den Nutzer zurückgegeben werden. Sofern Knoten herausgefiltert<br />

wurden, muss dem Nutzer mitgeteilt werden, dass seine ursprüngliche Anfrage an den Web<br />

Service aufgr<strong>und</strong> mangelnder Zugriffsrechte modifiziert wurde <strong>und</strong> er nur die für ihn zugreifbaren<br />

Daten aus der Menge der angefragten Daten übermittelt bekommen hat. Dies geschieht<br />

im Prototypen durch einen Kommentar am Anfang der modifizierten Web Service Antwort.<br />

6.4.3 Erweiterung der Web Service Anfrage beim Pre-Processing<br />

Wie man den Ausführungen aus Abschnitt 5.4 entnehmen kann, wird eine Modifikation der<br />

Anfrage an den Web Service nur bei lesenden Aktionen als sinnvoll erachtet. Im Folgenden<br />

wird daher kurz darauf eingegangen, wie der PEP anhand <strong>einer</strong> Menge an Obligations –<br />

diese bekommt er, wenn eine Zugriffsregel angewendet werden konnte – die Web Service<br />

Anfrage erweitert (Details siehe PEP.java). In <strong>einer</strong> Obligation ist ein Fiterprädikat enthalten,<br />

welches die zugreifbare Datenmenge beschreibt <strong>und</strong> per and mit dem Filter der Web<br />

Service Anfrage verknüpft werden soll.<br />

Zur Modifikation der Web Service Anfrage muss der PEP eine XSL Datei erzeugen. In dieser<br />

wird zunächst eine identische Kopie der Anfrage erreicht. Zusätzlich wird an der durch das<br />

resource-id Attribut der individuellen XACML Response gekennzeichneten Stelle der<br />

Filter der Web Service Anfrage um die Filterprädikate der entsprechenden Zugriffsregel bzw.<br />

Obligation über die and Funktion erweitert. Unten abgebildete XSL Datei ist ein Beispiel<br />

für eine vom PEP generierte XSL Datei, die zur Modifikation der Leseanfrage nach dem<br />

gerade beschrieben Schema verwendet werden kann.<br />

Beispiel <strong>einer</strong> XSL Datei beim Pre-Processing zum modifizieren der Web Service Anfrage:<br />

<br />

<br />

<br />

<br />

<br />

<br />


126<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

Geometrie<br />

<br />

50,40 100,60<br />

<br />

<br />

<br />

<br />

<br />

<br />

6.5 Validierung der <strong>Implementierung</strong><br />

Das für diese Arbeit entwickelte Zugriffskontrollsystem für den WFS stellt einen Prototypen<br />

dar, der zeigt, wie raumbezogene Zugriffskontrolle für Geo Web Services umgesetzt werden<br />

kann. Zur Validierung der vorgestellten <strong>Implementierung</strong> finden sich im Anhang A.3 bzw.<br />

auf der CD-ROM zahlreiche Testfälle. Durch sie wird die korrekte Funktionalität der<br />

SUNXACML Erweiterungen überprüft <strong>und</strong> belegt.


127<br />

7 Zusammenfassung, Evaluierung <strong>und</strong> Ausblick<br />

In diesem letzten Kapitel werden die Ergebnisse der Diplomarbeit zunächst noch einmal zusammengefasst<br />

(7.1). Anschließend werden diese im Ausblick (7.2) kurz kritisch bewertet<br />

<strong>und</strong> darüber hinaus wird auf fortführende Arbeitsgebiete eingegangen, in denen noch Forschungsbedarf<br />

besteht.<br />

7.1 Zusammenfassung der Arbeit<br />

In dieser Arbeit wurden zunächst gängige Konzepte zum Schutz von Daten vor unautorisierten<br />

Zugriffen vorgestellt. Von diesen Ansätzen ausgehend wurde ein Modell für Zugriffskontrolle<br />

bei Geo Web Services entworfen, das den Anforderungen dieses Anwendungsbereiches<br />

genügt. Im Fokus stand daher die Umsetzung regelbasierter raumbezogener Zugriffskontrolle.<br />

Es wurde davon ausgegangen, dass Geo Web Services XML- bzw. GML-kodierte Anfragebzw.<br />

Antwortformate unterstützen <strong>und</strong> die dem Dienst zugr<strong>und</strong>eliegenden Geodaten objektartig<br />

strukturiert sind.<br />

Beim Entwurf der Architektur des Zugriffskontrollsystems wurde versucht, soweit möglich<br />

die Richtlinien des XACML Standards zu verfolgen. Die zur Umsetzung von raumbezogenen<br />

Zugriffsregeln benötigten Erweiterungen der eXtensible Access Control Markup Language<br />

wurden ausführlich erläutert <strong>und</strong> deren Verwendung wurde an zahlreichen Beispielen demonstriert.<br />

Anschließend wurde die prototypische <strong>Implementierung</strong> des beschriebenen Zugriffskontrollmodells<br />

vorgestellt. Dabei wurde als Basis die XACML <strong>Implementierung</strong> der Firma SUN<br />

verwendet. Eine Version des Programms befindet sich zusammen mit den Testdaten <strong>und</strong> den<br />

Zugriffsregeln, die das Programm validieren, auf der CD-ROM im Inneneinband der Arbeit.<br />

Das Zugriffskontrollsystem erfüllt die in der Aufgabenstellung geforderten Ziele: Es können<br />

Zugriffsrechte an Featuretypen, an Featureinstanzen <strong>und</strong> an den Raumbezug der Features geb<strong>und</strong>en<br />

werden. Dadurch ist es möglich, mächtige Regelwerke für Geo Web Services zu definieren,<br />

wodurch flexibler Zugriffsschutz für Geodaten umgesetzt werden kann.


128<br />

7.2 Evaluierung <strong>und</strong> Ausblick<br />

Neben dem Zeitaufwand, sich durch die Fülle englischsprachiger Literatur zu lesen, kam erschwerend<br />

hinzu, dass aus den Artikeln nur wenig brauchbare Informationen gezogen werden<br />

konnten. Es fehlen Werke, die zusammenfassend einen Überblick über die Autorisationsproblematik<br />

geben. Material zur Umsetzung <strong>einer</strong> Zugriffskontrolle für Web Services ist kaum<br />

auffindbar, was den Forschungsbedarf in diesem Bereich unterstreicht. Für den in dieser Arbeit<br />

betrachteten Spezialfall feingranularer, raumbezogener Zugriffskontrolle für Geo Web<br />

Services konnten keine hilfreichen Quellen gef<strong>und</strong>en werden. Das im Rahmen dieser Arbeit<br />

entwickelte <strong>und</strong> implementierte Konzept liefert daher einen substantiellen Fortschritt im Forschungsgebiet<br />

der sicheren Nutzung verteilter Geodaten über Geo Web Services. Das herausgearbeitete<br />

Zugriffskontrollmodell zeigt, wie feingranulare <strong>und</strong> raumbezogene Zugriffskontrolle<br />

für Geo Web Services bzw. für GML-kodierte Geodaten erreicht werden kann. Die<br />

Ausführungen dieser Arbeit können als Basis für Standardisierungen im Bereich raumbezogener<br />

Zugriffskontrolle dienen <strong>und</strong>/oder in konkreten Anwendungsfällen als Anleitung <strong>und</strong><br />

Muster zur Umsetzung eines Zugriffskontrollsystems verwendet werden.<br />

Um einem Paradigma der Informationsverarbeitung – der Interoperabilität – zu genügen,<br />

wurde das vorgestellte Konzept für raumbezogene Zugriffskontrolle konsequent auf Spezifikationen<br />

internationaler Standardisierungs- <strong>und</strong> Normierungsgremien aufgebaut. Des weiteren<br />

standen bei der <strong>Entwicklung</strong> die Informatikprinzipien Austauschbarkeit, Erweiterbarkeit<br />

<strong>und</strong> „separation of concerns“ im Vordergr<strong>und</strong>.<br />

Das Modell <strong>und</strong> die prototypische <strong>Implementierung</strong> erfüllen zwar die geforderten Ziele,<br />

könnten jedoch an einigen Stellen weiterentwickelt werden. Aufgr<strong>und</strong> des Umfangs dieser<br />

Ergänzungen wurden sie in den vorliegenden Ausführungen nicht behandelt, um den Rahmen<br />

der Arbeit nicht zu sprengen. Der Vollständigkeit halber werden diese allerdings im Folgenden<br />

kurz erwähnt.<br />

Das Beispielregelwerk dieser Arbeit wurde per Hand editiert. Dieses Vorgehen ist allerdings<br />

sehr umständlich, zeitaufwendig <strong>und</strong> fehleranfällig. Gerade angesichts komplexer Autorisationen<br />

<strong>und</strong> mehrerer SSOs ist es deutlich besser, das entwickelte Zugriffskontrollsystem um einen<br />

PAP zur Pflege <strong>und</strong> Verwaltung des Regelwerkes zu erweitern. Dadurch wäre eine komfortable<br />

Eingabeschnittstelle für Zugriffsregeln gegeben, die zahlreiche Vorteile, wie beispielsweise<br />

eine semantische Überprüfungen des Regelwerkes (z.B. Konflikterkennung), eine<br />

Visualisierung von Raumregeln oder die Unterstützung eines Regelwerkes zur Administration<br />

des Regelwerkes der Anwendung bieten könnte.<br />

Zusätzlicher Forschungsbedarf besteht des weiteren im Bereich Performance. Es muss beispielsweise<br />

analysiert werden, wann der Pre- oder der Post-Processing Ansatz als Zugriffskontrollmechanismus<br />

für feingranulare, inhaltsabhängige Zugriffskontrolle zu verwenden ist.


129<br />

Zu beweisen ist ebenfalls, dass bei der Definition von Autorisationen gemäß dem Pre-<br />

Processing Ansatz völlige Flexibilität gegeben ist <strong>und</strong> dass Q’ (d.h. der modifizierte dann sicher<br />

Query) unter allen Umständen erzeugt werden kann. So erwähnte Dongwon Lee, <strong>einer</strong><br />

der Erfinder des Q-Filter Ansatzes, im Mailverkehr, dass er bislang nur Regelfilterprädikate<br />

in der konjuktiven Normalform (KNF) behandelt habe. Prädikate, die eine Negierung enthalten,<br />

wurden von Dongwon Lee stets in KNF umgewandelt (siehe MailLee).<br />

Ebenfalls interessant aber noch ungeklärt ist, inwieweit mächtige feingranulare Autorisationen<br />

verwaltbar sind <strong>und</strong> ob diese ausreichend reaktionsschnell überprüft werden können. Des<br />

weiteren ist zu betrachten, wie bei <strong>einer</strong> Zugriffskontrolle nach dem „so viel wie geht“ Prinzip<br />

verhindert werden kann, dass böswillige Nutzer durch geschickte Anfragen <strong>und</strong> zugriffsbeschränkte<br />

Antworten indirekt Information über nicht zugreifbare Daten bekommen.<br />

Bislang wurde zudem ausschließlich der zweidimensionale Fall berücksichtigt. Es gilt noch<br />

zu erforschen, welche Konsequenzen eine Erweiterung auf den dreidimensionalen Fall hat, ob<br />

dies sinnvoll ist <strong>und</strong> ob das vorgestellte Konzept weiterhin gültig bleibt.<br />

Seitens des Autors ist geplant, die genannten Aspekte in <strong>einer</strong> auf dieser Arbeit aufbauenden<br />

Geographie Diplomarbeit zu behandeln. Ebenso soll in dieser anhand eines realen Anwendungsbeispieles<br />

darauf eingegangen werden, wie Regelwerke inhaltlich aufzubauen sind (z.B.<br />

an welche Variablen inhaltsabhängige Autorisationen geb<strong>und</strong>en werden sollen, welche Vorraussetzungen<br />

Zugriffsregeln erfüllen müssen, um im PAP Konflikte in Zugriffsregeln zu erkennen<br />

usw.).<br />

Abschließend ist zu erwähnen, dass die vorgestellten Konzepte nicht nur für Geo Web Services<br />

einsetzbar sind. Es ist vorstellbar, dass die in dieser Arbeit verfolgte Vorgehensweise zur<br />

Realisierung raumbezogener Zugriffskontrolle für beliebige Anwendungen, die das Arbeiten<br />

mit strukturierten Daten ermöglichen (z.B. XML Datenbanken), verwendbar ist.


130<br />

Literaturverzeichnis<br />

AC Mech 2004<br />

AC XML 2002<br />

Altinel 2002<br />

Brügge 2000<br />

Bungartz 1996<br />

CoordTrans<br />

Córcoles 2002<br />

Damiani 2000<br />

LUO, B.; LEE, D.; LEE, W.-C.; et al. (2004): A Flexible Framework for<br />

Architecting XML Access Control Enforcement Mechanisms. Pennsylvania.<br />

Online im Internet. URL: http://nike.psu.edu/publications/<br />

sdm04.pdf (Stand: 30.9.2004).<br />

DIVESH, S.; YU, T.; et al. (2002): Compressed Accessibility Map: Efficient<br />

Access Control for XML. Online im Internet. URL:<br />

http://www.csc.ncsu.edu/faculty/yu/courses/csc591d/handouts/ATN.p<br />

df (Stand: 20.9.2004).<br />

ALTINEL, M.; DIAO, Y.; FRANKLIN, M. J.; et al. (2002): Path sharing<br />

and predicate evaluation for high-performance XML filtering. Online<br />

im Internet. URL: http://www.cs.berkeley.edu/˜diaoyl/publications/<br />

yfilter-public.pdf (Stand: 30.9.2004).<br />

BRÜGGE, B.; HERZOG, C. (2000): Einführung in die Informatik Funktionale<br />

Programmierung. Online im Internet. URL:<br />

http://atbruegge27.informatik.tu-muenchen.de/teaching/ws00/Info1/<br />

vorlesung/folien/08a_Funktional.pdf (Stand: 23.2.2005).<br />

BUNGARTZ, H.-J.; GRIEBEL, M.; ZENGER, C. (1996): Einführung in die<br />

Computergraphik: Gr<strong>und</strong>lagen, Geometrische Modellierung, Algorithmen.<br />

Wiesbaden.<br />

FRANSON TECHNOLOGY AB: Franson CoordTrans – Programm zur<br />

Transformation von Koordinaten. Online im Internet. URL:<br />

http://franson.com/coordtrans/download.asp?platform=winxp (Stand:<br />

7.3.2005).<br />

CÓRCOLES, J. E.; GONZÁLEZ, P. (2002): A Specification of a Spatial<br />

Query Language over GML. Online im Internet. URL:<br />

http://portal.acm.org/citation.cfm?id=512186 (Stand: 15.10.2004).<br />

DAMIANI, E.; DE CAPITANI DI VIMERCATI, S.; SAMARATI, P.; et al.<br />

(2000): Design and Implementation of an Access Control Processor<br />

for XML Documents. Online im Internet. URL:<br />

http://www9.org/w9cdrom/419/419.html (Stand: 15.9.2004).


131<br />

Damiani 2001<br />

Damiani 2002<br />

Diao 2003<br />

Eckert 2002<br />

Gallagher 1987<br />

GI-Lexikon<br />

GIS-Glossar<br />

GML-QL 2002<br />

Hauser 2004<br />

DAMIANI, E.; DE CAPITANI DI VIMERCATI, S.; SAMARATI, P.; et al.<br />

(2001): Controlling Access to XML Documents. Mailand. Online im<br />

Internet. URL: http://seclab.dti.unimi.it/Papers/ieee-ic.pdf (Stand:<br />

17.9.2004).<br />

DAMIANI, E.; PARABOSCHI, S.; SAMARATI, P.; et al. (2002): A Fine-<br />

Grained Access Control System for XML Documents. ACM Transactions<br />

on Information and System Security (TISSEC) archive Volume<br />

5 , Issue 2, S. 169 – 202. Online im Internet. URL:<br />

http://portal.acm.org/citation.cfm?id=505586.505590 (Stand:<br />

23.9.2004).<br />

DIAO, Y.; FRANKLIN, M. J. (2003): Query processing for high-volume<br />

XML message brokering. Berkeley. In ACM CCS. Online im Internet.<br />

URL: http://portal.acm.org (Stand: 25.9.2004).<br />

ECKERT, C. (2002): IT-Sicherheit. München.<br />

GALLAGHER, P. (1987): A Guide to Understanding Discretionary Access<br />

Control in Trusted Systems. National Computer Security Center<br />

(NCSC-TG-003 Version 1). Online im Internet. URL:<br />

http://nestroy.wi-inf.uniessen.de/Lv/ibis2/discretionary_acces_control.html<br />

(Stand:<br />

5.10.2004).<br />

GI-Lexikon des Instituts für Geodäsie <strong>und</strong> Geoinformatik der Uni<br />

Rostock. Online im Internet. URL: http://www.geoinformatik.unirostock.de/suche.asp<br />

(Stand: 5.2.2005).<br />

M Schilcher, M (2003): GIS-Glossar. Online im Internet. URL:<br />

http://www.gis1.bv.tum.de/Aktuelles/GIS-Glossar/Dokumente/GIS-<br />

Glossar_online.pdf (Stand: 5.2.2005).<br />

VATSAVAI, R. R. (2002): GML-QL: A Spatial Query Language Specification<br />

for GML. Online im Internet. URL:<br />

http://www.cobblestoneconcepts.com/ucgis2summer2002/vatsavai/vat<br />

savai.htm (Stand: 30.11.2004).<br />

HAUSER, T.; LOWER, U. M. (2004): Web Services – Die Standards.<br />

Galileo Press GmbH. Bonn.


132<br />

Huber 2002<br />

HUBER, U. W. (2002): Das Referenz-Geoinformationssystem „Nationalpark<br />

Bayerischer Wald“, eine fachübergreifende Forschungsplattform<br />

für die Geoinformatik. München.<br />

ITSEC 2001<br />

B<strong>und</strong>esamt für Sicherheit in der Informationstechnik (2001): Leitfaden<br />

für die Erstellung <strong>und</strong> Prüfung formaler Sicherheitsmodelle im<br />

Rahmen von ITSEC <strong>und</strong> CC. Online im Internet. URL:<br />

http://www.bsi.de/aufgaben/projekte/fmethode/sonstige/wwwleitf.htm<br />

(Stand: 11.10.2004).<br />

Jajodia 2001<br />

JAJODIA, S.; SAMARATI, P.; SAPINO, M. L. (2001): Flexible Support<br />

for Multible Access Control Policies. Online im Internet. URL:<br />

http://homes.dsi.unimi.it/~samarati (Stand: 20.9.2004).<br />

JTS Tech Spec 1.4<br />

VIVID SOLUTIONS (Hrsg.) (2003): JTS Topology Suite, Technical Specifications,<br />

Version 1.4. Online im Internet. URL:<br />

http://www.vividsolutions.com/JTS/bin/jts-1.4.0.zip (Stand:<br />

10.02.2005).<br />

Lampson 1974<br />

LAMPSON, B. W. (1974): Protection. In: ACM Operating System Review,<br />

Vol. 8, S. 18-24.<br />

Leitfaden GIS 2003 BAYERISCHES STAATSMINISTERIUM DER FINANZEN (Hrsg.) (2003):<br />

Leitfaden für kommunale GIS-Einsteiger. München. Online im Internet.<br />

URL: http://www.gis-leitfaden.de/GIS-Leitfaden-www.pdf<br />

(Stand: 30.11.2004).<br />

MailAnderson a<br />

Mailverkehr vom 7.10.04 mit Anne Anderson. Online im Internet.<br />

URL: http://www.geo.wiso.tu-muenchen.de/herrmann/da/mailquellen<br />

(Stand: 10.03.2005).<br />

MailAnderson b<br />

Mailverkehr vom 9.10.04 mit Anne Anderson. Online im Internet.<br />

URL: http://www.geo.wiso.tu-muenchen.de/herrmann/da/mailquellen<br />

(Stand: 10.03.2005).<br />

MailLee<br />

Mailverkehr vom 15.10.04 mit Dongwon Lee. Online im Internet.<br />

URL: http://www.geo.wiso.tu-muenchen.de/herrmann/da/mailquellen<br />

(Stand: 10.03.2005).


133<br />

MailProctor<br />

Mailverkehr vom 5.10.04 mit Seth Proctor. Online im Internet. URL:<br />

http://www.geo.wiso.tu-muenchen.de/herrmann/da/mailquellen<br />

(Stand: 10.03.2005).<br />

OGC Filter Spec 1.0 VRETANOS, P. A. (2001): Filter Encoding Implementation Specification,<br />

Version 1.0.0. Open GIS Consortium, Inc. (Hrsg.). Online im Internet.<br />

URL: http://www.opengis.org/techno/specs/02-059.pdf (Stand:<br />

30.11.2004).<br />

OGC GML 2.1.2<br />

OGC SFS 1.1<br />

OGC WFS 1.0.0<br />

Opincaru 2004<br />

O’Reilly 2002<br />

PreProc 2003<br />

RBAC 1996<br />

COX, S.; CUTHBERT, A.; LAKE, R.; et al. (2002): OpenGIS Geography<br />

Markup Language (GML) Implementation Specification, Version<br />

2.1.2. Open GIS Consortium, Inc. (Hrsg.). Online im Internet. URL:<br />

http://www.opengis.net/gml/02-069/GML2-12.html (Stand:<br />

27.10.2004).<br />

OPEN GIS CONSORTIUM, INC. (Hrsg.) (1999): OpenGIS Simple Features<br />

Specification For SQL Revision 1.1. Online im Internet. URL:<br />

http://www.opengis.org/techno/specs/99-049.pdf (Stand: 18.9.2004).<br />

VRETANOS, P. A. (2002): Web Feature Service Implementation Specification,<br />

Version 1.0.0. Open GIS Consortium, Inc. (Hrsg.). Online im<br />

Internet.<br />

URL:<br />

https://portal.opengeospatial.org/files/?artifact_id=7176 (Stand:<br />

20.1.2005).<br />

OPINCARU, C. (2004): Study about Securing OPENGIS Web Services.<br />

Institut für Technik Intelligenter Systeme an der Universität der B<strong>und</strong>eswehr<br />

München. München.<br />

O’REILLY (Hrsg.), HAROLD, E. R.; MEANS W. S. (2002): XML in a<br />

Nutshell. Sebastopol.<br />

LUO, B.; LEE, D.; LEE, W.-C.; et al. (2004): QFilter: Fine-Grained<br />

Run Time XML Access Control via NFA-based Query Rewriting. Online<br />

im Internet. URL: http://nike.psu.edu/publications/cikm04.pdf<br />

(Stand: 15.10.2004).<br />

SANDHU, R. S.; COYNE, E. J., FEINSTEIN, H.; et al. (1996): Role-Based<br />

Access Control Models. Online im Internet. URL:<br />

http://www.list.gmu.edu/journals/computer/i94rbac(org).pdf (Stand:<br />

30.11.2004).


134<br />

Samarati 2000<br />

SAMARATI, P.; DE CAPITANI DI VIMERCATI, S. (2000): Access Control:<br />

Policies, Models and Mechanisms. Online im Internet. URL:<br />

http://homes.dsi.unimi.it/~samarati (Stand: 15.1.2005).<br />

Schilcher et al. 2004 SCHILCHER, M; AUMANN, G; MATHEUS, A; et al. (2004): Abschlussbericht<br />

Geoportal. München.<br />

Schilcher GeoInf1<br />

SCHILCHER, M. (2001); Skript zur Vorlesung Geoinformatik 1. Kapitel<br />

3, 4 <strong>und</strong> 6. Online im Internet. URL:<br />

http://www.gis1.bv.tum.de/Lehre/Vorlesungen/Geoinformatik1/Geoin<br />

formatik1.htm (Stand: 5.10.2004).<br />

Scholz 2001<br />

SCHOLZ, D. (2001); Diplomarbeiten normgerecht verfassen. Schreibtipps<br />

zur Gestaltung von Studien-, Diplom- <strong>und</strong> Doktorarbeiten.<br />

Würzburg.<br />

StatAnalysis 2003<br />

MURATA, M.; TOZAWA, A.; KUDO, M. (2003): XML Access Control<br />

using Static Analysis. In: ACM CCS, Washington D.C.. Online im Internet.<br />

URL: http://portal.acm.org/citation.cfm?id=505576.505590<br />

(Stand: 30.11.2004).<br />

Summers 1997<br />

SUMMERS, R. C. (1997): Secure Computing: Threats and Safeguards.<br />

Maidenhead: McGraw-Hill.<br />

SUNXACML 1.2<br />

SUN (Hrsg.); PROCTOR, S. (2004): Sun's XACML Implementation<br />

Programmer's Guide for Version 1.2. Online im Internet. URL:<br />

http://sunxacml.sourceforge.net/guide.html (Stand: 3.10.2004).<br />

Tannenbaum 2002<br />

TANNENBAUM, A. S. (2002): Moderne Betriebssysteme. München.<br />

Twig Queries 2002<br />

CHO, S.; DIVESH, S.; SIHEM, A.-Y.; et al. (2002): Optimizing the Secure<br />

Evaluation of Twig Queries. Online im Internet. URL:<br />

http://www.research.att.com/~divesh/ papers/cals2002-secureopt.abs<br />

(Stand: 8.10.2004).<br />

W3C DefWS<br />

AUSTIN, D.; BARBIR, A.; FERRIS, C.; et al. (2004): Web Service Architekture<br />

Requirements. Online im Internet. URL:<br />

http://www.w3.org/TR/wsa-reqs/ (Stand: 24.11.2004).


135<br />

W3C XML 1.0<br />

W3C XML Schema<br />

W3C XPath 2.0<br />

W3C XSLT 1.0<br />

XACML HierProf<br />

XACML MultProf<br />

XACML Spec 1.1<br />

YFilter 2003<br />

BRAY, T.; PAOLI, J. ; SPERBERG-MCQUEEN, C. M.; et al. (2004): XML<br />

Specification Version 1.0. World Wide Web Consortium (Hrsg.).<br />

Online im Internet. URL: http://www.w3.org/TR/2004/REC-xml-<br />

20040204 (Stand: 30.11.2004).<br />

THOMPSON, H., BEECH, D.; MALONEY, M.; et al. (2001): XML<br />

Schema Part 1: Structures. World Wide Web Consortium (Hrsg.). Online<br />

im Internet. URL: http://www.w3.org/TR/xmlschema-1 (Stand:<br />

30.11.2004).<br />

FERNANDEZ, M. F.; KAY, M.; ROBIE, J.; et al. (2003): XML Path Language<br />

(XPath) 2.0. World Wide Web Consortium (Hrsg.). Online im<br />

Internet. URL: http://www.w3.org/TR/2003/WD-xpath20-20031112<br />

(Stand: 30.11.2004).<br />

CLARK, J. (1999): XSL Transformations (XSLT) Specification Version<br />

1.0. World Wide Web Consortium (Hrsg.). Online im Internet.<br />

URL: http://www.w3.org/TR/1999/WD-xslt-19990421 (Stand:<br />

30.11.2004).<br />

ANDERSON, A. (2004); Hierarchical Resource profile of XACML.<br />

Committee Draft 01, 30 September 2004. Online im Internet. URL:<br />

http://docs.oasis-open.org/xacml/access_control-xacml-2.0-<br />

hier_profile-spec-cd-01.pdf (Stand: 5.10.2004).<br />

ANDERSON, A. (2004); Multiple Resource profile of XACML. Committee<br />

Draft 01, 30 September 2004. Online im Internet. URL:<br />

http://docs.oasis-open.org/xacml/access_control-xacml-2.0-<br />

mult_profile-spec-cd-01.pdf (Stand: 5.10.2004).<br />

OASIS (Hrsg.); GODIK, S.; MOSES, T. (2003): eXtensible Access Control<br />

Markup Language (XACML) Version 1.1, Committee Specification.<br />

Online im Internet. URL: http://www.oasisopen.org/committees/xacml/repository/cs-xacml-specification-1.1.pdf<br />

(Stand: 15.9.2004).<br />

DIAO, Y.; FRANKLIN, M. J. (2003): High-Performance XML Filtering:<br />

An Overview of YFilter. Online im Internet. URL:<br />

http://www.csdl.computer.org/comp/proceedings/<br />

icde/2002/1531/00/15310341.pdf<br />

(Stand: 25.9.2004).


136<br />

Anhang A<br />

Anwendungsszenario – Die Schweizer Bank<br />

Für ein besseres Verständnis der in dieser Arbeit vorgestellten Techniken zur Realisierung<br />

raumbezogener Zugriffskontrolle soll folgendes fiktives, aber dennoch realistisches Anwendungsszenario<br />

angenommen werden:<br />

Die Schweizer Bank besitzt Gebäude, Straßen <strong>und</strong> Bankautomaten. Diese stellen georeferenzierbare<br />

geographische Objekte dar. Gebäude werden als Polygone, Straßen durch Linienzüge<br />

<strong>und</strong> Bankautomaten als Punkte dargestellt. Zu jedem dieser Objekte stehen neben den raumbezogen<br />

Daten auch Sachdaten zur Verfügung. Für die Verwaltung der dezentral gehalten Informationen<br />

zu diesen Objekten durch die weltweit verteilten Bankangestellten setzt die Bank<br />

einen WFS ein. Bankangestellte können sowohl lesend als auch schreibend über den WFS auf<br />

die Objekte der Bank zugreifen. Welche Daten gewisse Bankangestellte sehen dürfen, unterliegt<br />

staatlichen Gesetzen <strong>und</strong> Regulierungen. Zudem existiert bei der Schweizer Bank eine<br />

Verwaltungseinheit, welche die für die Mitarbeiter möglichen Aktionen auf bestimmten Daten<br />

verf<strong>einer</strong>nd festlegt. Zur Umsetzung dieser Zugriffsregeln soll der WFS um ein XACMLbasiertes<br />

Zugriffskontrollsystem ergänzt werden, um die Anforderungen des Datenschutzes zu<br />

erfüllen.<br />

Im Anhang A.1 wird das Modell der Daten, die vom WFS bereit gestellt werden, aufgeführt.<br />

Unter A.2 findet sich eine Beispielanfrage an den WFS sowie die darauf folgende Antwort<br />

des Dienstes der Bank. Anhang A.3 enthält die umzusetzenden Zugriffsregeln.<br />

Anhang A.1 Das den Geodaten zugr<strong>und</strong>eliegende Datenmodell<br />

Im Folgenden wird das Datenmodell je Featuretyp in Worten, <strong>und</strong> ergänzend über UML Klassendiagramme<br />

beschrieben. Zudem findet sich unter A.2 eine diesem Schema genügende<br />

XML Dokumentinstanz (umhüllt in <strong>einer</strong> WFS Response).<br />

Gebäude<br />

Ein Feature vom Typ Gebäude besitzt die Eigenschaften Name (String), Besitzer (String),<br />

Baujahr (Integer) <strong>und</strong> Anzahl_Stockwerke (Integer). Zusätzlich besitzen Gebäude eine<br />

geometrische Eigenschaft Geometrie. Diese ist ein dem GML Datenmodell (OGC<br />

GML 2.1.2) entsprechender Polygon-Datentyp.<br />

UML Klassendiagramm zum Gebäude Featuretyp


137<br />

GEBÄUDE<br />

Name: String<br />

Besitzer: String<br />

Baujahr: Integer<br />

Anzahl_Stockwerke: Integer<br />

Geometrie: Polygon<br />

Straßen<br />

Features vom Typ Straße besitzen die Eigenschaften Bezeichner (String), Belag_Typ<br />

(String), Anzahl_Spuren (Integer) sowie die geometrische Eigenschaft Geometrie. Diese<br />

ist wieder ein dem GML Datenmodell (OGC GML 2.1.2) entsprechender Linenzug-<br />

Datentyp.<br />

STRAßE<br />

Bezeichner: String<br />

Belag_Typ: String<br />

Anzahl_Spuren: Integer<br />

Geometrie: Linienzug<br />

Bankautomat<br />

Ein Feature vom Typ Bankautomat besitzt die Eigenschaften ID (Integer), Monteur<br />

(String), kameraüberwacht (Boolean), existiertSeit (Date) sowie die geometrische<br />

Eigenschaft Geometrie. Diese ist vom GML Datentyp Punkt.<br />

BANKAUTOMAT<br />

ID: Integer<br />

Monteur: String<br />

kameraüberwacht: Boolean<br />

existiertSeit: Date<br />

Geometrie: Punkt


138<br />

Die unten abgebildete Karte in Abbildung A.1 stellt exemplarisch 37 einige Gebäude-, Straßen<strong>und</strong><br />

Bankautomat-Objekte der Bank in Zürich dar.<br />

Legende<br />

Bankautomat<br />

Straße<br />

Gebäude<br />

Abbildung A.1 Gebäude-, Straßen- <strong>und</strong> Bankautomat-Objekte der Schweizer Bank in Zürich


139<br />

Anhang A.2 Beispielanfrage an <strong>und</strong> Antwort vom WFS<br />

Um die Funktionalität des Regelwerkes <strong>und</strong> die aus Sicht des Zugriffskontrollsystems besonders<br />

interessanten Fälle zu analysieren, wird hier zunächst eine Beispielanfrage eines Bankangestellten<br />

definiert, der alle Daten zu Straßen, Bankautomaten <strong>und</strong> Gebäuden der Schweizer<br />

Bank im Gebiet Zürich (kodiert durch das Polygon 50,40 100,60 38 ) einsehen möchte. Anschließend<br />

ist die entsprechende Antwort 1 des WFS abgedruckt.<br />

Beispiel für eine GetFeature Anfrage an den WFS der Schweizer Bank:<br />

<br />

<br />

<br />

myns:Geometrie<br />

myns:Bezeichner<br />

myns:Belag_Typ<br />

myns:Anzahl_Spuren<br />

<br />

<br />

<br />

myns:Geometrie<br />

<br />

50,40 100,60<br />

<br />

<br />

<br />

<br />

<br />

myns:Geometrie<br />

myns:ID<br />

myns:Monteur<br />

myns:Kameraüberwacht<br />

myns:existiertSeit<br />

<br />

<br />

<br />

myns:Geometrie<br />

<br />

50,40 100,60<br />

<br />

<br />

<br />

<br />

<br />

myns:Geometrie<br />

myns:Name<br />

38 rein fiktive Daten


140<br />

myns:Baujahr<br />

myns:Besitzer<br />

myns:Anzahl_Stockwerke<br />

<br />

<br />

myns:Geometrie<br />

<br />

50,40 100,60<br />

<br />

<br />

<br />

<br />

<br />

Beispiel für eine Antwort des WFS der Schweizer Bank (korrespondierend zu oben abgedruckter<br />

Anfrage):<br />

<br />

<br />

<br />

<br />

-180.0,-90.0 180.0,90.0<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

120,360 280,360<br />

280,240 120,240 60,300 120,360<br />

<br />

<br />

<br />

<br />

<br />

ETH<br />

1980<br />

Staat<br />

5<br />

<br />

<br />

<br />

<br />

<br />

<br />

80,300 80,260 140,220<br />

140,260 200,280 200,340<br />

<br />

<br />

<br />

N304<br />

ASPHALT


141<br />

6<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

280,300<br />

<br />

<br />

<br />

0000000002<br />

Firma Meier<br />

false<br />

30.11.2002<br />

<br />

<br />

...<br />

<br />

Anhang A.3 Das Regelwerk der Schweizer Bank<br />

An dieser Stelle sollen einige Zugriffsregeln auf Daten zu Gebäuden, Straßen <strong>und</strong> Bankautomaten<br />

der Schweizer Bank kurz in Worten angegeben werden. Für ihre Umsetzung in<br />

XACML wird aufgr<strong>und</strong> der Länge der entsprechenden Deklarationen auf die Dateien im Verzeichnis<br />

policy der im Inneneinband der Arbeit beigefügten CD-ROM verwiesen.<br />

Sämtliche in diesem Abschnitt vorgestellten Zugriffsregeln sind so definiert worden, dass sie<br />

den Zugriff auf genau ein Feature der WFS Antwort (vgl. A.2) beschränken. Dadurch kann<br />

bei Ausführung des Prototypen <strong>und</strong> anschließender Überprüfung der Ausgabe des PEPs (die<br />

modifizierte WFS Antwort beim Post-Processing oder die modifizierte WFS Anfrage beim<br />

Pre-Processing) nachvollzogen werden, welchen Effekt die Zugriffsregel auf die Aktion des<br />

Nutzers hat. Alle hier vorgestellten Zugriffsregeln haben negativen Effekt, was bedeutet, dass<br />

die der Regel zugehörige Instanz aus der WFS Antwort gefiltert wird. Aus diesem Gr<strong>und</strong> sind<br />

die modifizierten WFS Antworten nicht explizit aufgeführt.<br />

Des weiteren ist zu erwähnen, dass die Regeln zum Postprocessing sofern sie den Zugriff auf<br />

ein Feature beschränken sollen ab dem FeatureMember Element greifen, damit in der WFS<br />

Antwort nicht ein leeres FeatureMember Element auftaucht.<br />

Beispiele: Zugriffsregeln für eine Zugriffskontrolle nach dem Post-Processing Ansatz<br />

Beispiel 1:<br />

Um aufzuzeigen, welche Möglichkeiten Instanzregeln bieten, seien hier noch zwei weitere Instanzregeln<br />

definiert.


142<br />

Regel 1: Ein Mitarbeiter der Bank darf nur dann auf Gebäudedaten der Bank lesend zugreifen,<br />

wenn der Name des Gebäudes nicht ETH ist.<br />

Für die XACML-kodierte Form dieser Regel sei auf die Datei einzelne_Testfaelle_Instanzregel.xml<br />

verwiesen.<br />

Regel 2: Ein Auszubildender der Bank darf nur dann auf Daten zu den Bankautomaten der<br />

Bank lesend zugreifen, wenn alle unten aufgelisteten Bedingungen erfüllt sind:<br />

• Der Zugriff muss zwischen 9 <strong>und</strong> 17 Uhr erfolgen.<br />

• Die FeatureID der Bankautomaten muss im Intervall [0, 100] liegen.<br />

• Der Monteur der Bankautomaten muss die Firma Meier sein.<br />

• Der Bankautomat darf nicht kameraüberwacht sein.<br />

• Der Bankautomat muss nach dem 1.1.2000 errichtet worden sein.<br />

Die Formulierung dieser Regel findet sich in der Datei einzelne_Testfälle_Instanzregel2.xml.<br />

Beispiel 2:<br />

Raumbezogene Zugriffsregel in Abhängigkeit des Standpunktes des Web Service Nutzers<br />

Hier soll aufgezeigt werden, dass das in 5.1 vorgestellte Konzept zur Deklaration raumbezogener<br />

Zugriffsregeln unverändert auch für Autorisationen verwendet werden kann, die sich<br />

auf den Standort des Web Service Nutzers beziehen. Vorausgesetzt werden muss hierfür, dass<br />

aus der Kommunikation zwischen Nutzer <strong>und</strong> Web Service (die über den PEP läuft) zuverlässig<br />

ermittelt werden kann, wo sich der Nutzer befindet. Sofern dies möglich ist, muss der PEP<br />

diese Information z.B. per XACML Attribut (location_WS_User) im XACML Request Context<br />

übergeben, wovon in diesem Beispiel ausgegangen werden soll.<br />

Bei der Schweizer Bank lautet ein Bankdatengesetz beispielsweise, dass ein Angestellter der<br />

Schweizer Bank, der in New York seinen Arbeitsplatz hat, nur Daten von amerikanischen<br />

K<strong>und</strong>en sehen darf.<br />

Die XACML basierte Formulierung dieser Regel findet sich in der Datei einzelne_Testfälle_Instanzregel3.xml.


143<br />

Beispiel 3: Raumregeln<br />

Da die Umsetzung raumbezogener Zugriffskontrolle im Mittelpunkt dieser Arbeit stand <strong>und</strong><br />

es daher zur Validierung der Ergebnisse von besonderer Bedeutung ist, sämtliche Fälle abzudecken,<br />

die bei der Deklaration raumbezogener Autorisationen auftreten können, wurden<br />

zahlreiche Testfälle definiert. Die Testregeln sind so organisiert, dass die topologischen Operationen<br />

(touches <strong>und</strong> within 39 ) <strong>und</strong> die räumlichen Operationen (length, distance, iswithin-<br />

Distance) überprüft werden. Zu jeder Operation werden dabei alle sinnvollen (vgl. hierzu Anhang<br />

B) Parameterkombinationen (z.B. (Punkt,Punkt) oder (Polygon,Polygon)) überprüft.<br />

Zum Nachvollziehen der Tests sei auf die unten aufgelisteten Dateien im Verzeichnis policy<br />

verwiesen:<br />

• einzelne_Testfaelle_Touches_AA.xml<br />

• einzelne_Testfaelle_Touches_AL.xml<br />

• einzelne_Testfaelle_Touches_AP.xml<br />

• einzelne_Testfaelle_Touches_LA.xml<br />

• einzelne_Testfaelle_Touches_LL.xml<br />

• einzelne_Testfaelle_Touches_LP.xml<br />

• einzelne_Testfaelle_Touches_PA.xml<br />

• einzelne_Testfaelle_Touches_PL.xml<br />

• einzelne_Testfaelle_Touches_PP.xml<br />

• einzelne_Testfaelle_Within_AA.xml<br />

• einzelne_Testfaelle_Within_LA.xml<br />

• einzelne_Testfaelle_Within_LL.xml<br />

• einzelne_Testfaelle_Within_PA.xml<br />

• einzelne_Testfaelle_Within_PL.xml<br />

• einzelne_Testfaelle_Within_PP.xml<br />

• einzelne_Testfaelle_areaOfPolygon.xml<br />

• einzelne_Testfaelle_isWithinDistance_PA.xml<br />

• einzelne_Testfaelle_isWithinDistance_PA.xml<br />

• einzelne_Testfaelle_lengthOfLine.xml<br />

Alternativ kann zum Überprüfen der Testfälle auch die Datei policy_WFS.xml verwendet<br />

werden. In dieser sind sämtliche Testfälle auskommentiert enthalten. Zur Überprüfung der<br />

einzelnen Fälle können diese selektiv einkommentiert werden. Sofern alle Regeln auskommentiert<br />

bleiben <strong>und</strong> werteNotApplicableAlsDeny im PEP auf true eingestellt wurde,<br />

bekommt der Nutzer keine Daten, da keine Regel auf die Anfrage greift.<br />

Beispiel 4<br />

In der Datei RaumregelMitBo<strong>und</strong>edBy.xml wird eine Raumregel definiert, die prüft ob alle<br />

angefragten Features unabhängig von ihrem Typ in einem gewissen Gebiet liegen. Sofern<br />

kein angefragtes Feature in den Zugreifbaren Gebieten liegen kannn das Zugriffskontrollsystem<br />

bereits ein deny für alle angefragten Features zurückgeben (Performacegewinn da auswertung<br />

gegebenenfalls vorhandener einzelner Regeln nicht mehr nötig ist)<br />

39 Der Einfachheit halber wurden die Testfälle für die übrigen topologischen Relationen nur probeweise überprüft<br />

<strong>und</strong> die entsprechenden Regeln wurden nicht explizit gespeichert.


144<br />

Beispiel 5<br />

In diesem Beispiel wird eine Attributregel definiert. Ihr Ziel ist, exemplarisch die in Abschnitt<br />

6.3.4 aufgeführte Alternative zur Gewährleistung übereinstimmender Koordinatensysteme zu<br />

errreichen, bevor Raumregeln angewendt werden. Hierzu wird das srsName Attribut der angefragten<br />

Gebäudeinstanzen mit dem Literal http://www.opengis.net/gml/srs/epsg.xml#4326<br />

(eindeutige Kodierung des EPSG 4326 Raumbezugssystems) verglichen.<br />

Die entsprechende XACML Testregel findet sich in der Datei einzelne_Testfaelle_Instanzregel_aufAttribut.xml.<br />

Alle weiteren Regelbeispiele finden sich im Verzeichnis policy auf der CD-ROM <strong>und</strong> sind<br />

durch die ergänzenden Kommentare selbsterklärend.


145<br />

Anhang B<br />

Verwendbarkeit topologischer Relationen<br />

Es werden nur Relationen auf den Gr<strong>und</strong>typen Punkt, Linienzug <strong>und</strong> Polygon – also nicht auf<br />

MultiGeometrietyp <strong>und</strong> Geometry Collection – betrachtet. Für MultiGeometrietypen<br />

gelten die selben Vergleichsmöglichkeiten wie für den entsprechenden Gr<strong>und</strong>typ.<br />

Daher sind die MultiGeometrietypen zu den Gr<strong>und</strong>geometrien nicht extra in den Tabellen<br />

aufgeführt. Werden die topologischen Relationen auf MultiGeometrietypen angewendet,<br />

so muss für jedes Element der Menge die Relation zu mindestens einem Element der<br />

zweiten Menge erfüllt sein.<br />

Welche Vergleichsmöglichkeiten zwischen zwei Geometry Collections möglich sind, hängt<br />

von den enthalten Gr<strong>und</strong>typen ab. Da nicht klar definiert ist, welche Semantiken für räumliche<br />

Analysemethoden, die auf Geometry Collections ausgewertet werden, gelten sollen, sind<br />

Geometry Collections nicht als Argumente topologischer Relationen angebbar (JTS Tech<br />

Spec 1.4, S. 26).<br />

Lesehinweis:<br />

• Reihenfolge: Geometrie Zeile Relation Geometrie Spalte<br />

• grün – sinnvoller Vergleich<br />

• rot – Vergleich der immer false liefert<br />

• grau – nicht definierter Vergleich<br />

equals point line polygon<br />

point<br />

line<br />

polygon<br />

disjoint point line polygon<br />

point<br />

line<br />

polygon<br />

intersects point line polygon<br />

point<br />

line<br />

polygon


146<br />

touches point line polygon<br />

point<br />

line<br />

polygon<br />

crosses point line polygon<br />

point<br />

line<br />

polygon<br />

overlaps point line polygon<br />

point<br />

line<br />

polygon<br />

within point line polygon<br />

point<br />

line<br />

polygon<br />

contains point line polygon<br />

point<br />

line<br />

polygon


147<br />

Anhang C<br />

Organisiation der XACML PolicySets, Polices <strong>und</strong> Regeln<br />

XACML bietet bei der Definition <strong>und</strong> Organisation des Regelwerkes maximale Flexibilität,<br />

da nur die zu verwendende Syntax vorgegeben wird. Leider erschwert diese völlige Flexibilität<br />

ein leichtes Umsetzen <strong>und</strong> Administrieren des Regelwerkes für einen konkreten Anwendungsfall.<br />

Für SSOs ist es nicht leicht, mit der Mächtigkeit der Sprache umzugehen. Unklar<br />

konzipierte Regelwerke bergen das Risiko, dass sie mit der Zeit unüberschaubar <strong>und</strong> chaotisch<br />

werden <strong>und</strong> für unerwünschtes Verhalten des Zugriffskontrollsystems sorgen. Um diese<br />

Gefahr zu vermeiden, sollte man gewisse Gr<strong>und</strong>sätze beim Definieren von XACML Regeln,<br />

Policys <strong>und</strong> PolicySets festlegen. Deren Einhaltung wird umso essentieller, je größer<br />

das Regelwerk ist, je mehr SSOs die Regeln pflegen, wenn Zugriffsregeln sowie Datenbasis<br />

<strong>einer</strong> Dynamik unterliegen <strong>und</strong> wenn die Policen verteilt gespeichert werden. Da die genannten<br />

Faktoren in Zugriffskontrollsystemen für (Geo) Web Services vorliegen können, ist es in<br />

diesem Anwendungsgebiet unbedingt nötig, ein klar strukturiertes Regelwerk zu entwerfen,<br />

das nach festen Modellierungsprinzipien erstellt wurde. Im Folgenden soll versucht werden,<br />

einige Entwurfsprinzipien festzulegen, die dem Autor nach intensiver Auseinandersetzung<br />

mit der Thematik als sinnvoll erscheinen.<br />

C.1 Vorgeschaltete Überprüfung inhaltsunabhängiger Zugriffsregeln<br />

Zur Performanceverbesserung des Zugriffskontrollsystems ist es empfehlenswert, dass der<br />

Context Handler nach Erhalt <strong>einer</strong> vom PEP generierten globalen Zugriffsentscheidungsanfrage<br />

als erstes eine spezielle individuelle Zugriffsentscheidungsanfrage (Aufbau vgl. Ausführungen<br />

unten) generiert.<br />

Der Einsatz dieser speziellen Zugriffsanfrage ist unabhängig davon, ob der Pre- oder der Post-<br />

Processing Ansatz verwendet wird <strong>und</strong> ist in beiden Fällen zur Optimierung des Zugriffskontrollsystems<br />

anzuraten. Dadurch kann das Zugriffskontrollsystem <strong>und</strong> gegebenenfalls der<br />

Web Service vor unnötiger Belastung (z.B. durch unautorisierte Anfragen, „denial of service“<br />

Attacken, unnötige Regelauswertungen usw.) geschützt werden. Durch die spezielle Zugriffskontrollanfrage<br />

kann ermittelt werden, ob der Nutzer bzw. die Rolle:<br />

• dem Zugriffskontrollsystem überhaupt bekannt ist.<br />

• für die gewünschte Aktion jemals ausreichend Rechte hat.<br />

• seine Anfrage an einen für ihn nutzbaren WS geleitet hat.<br />

• die Anfrage an den richtigen Port geleitet hat.<br />

• …


148<br />

All diesen Überprüfungen ist gemeinsam, dass die Zugriffsentscheidung unabhängig vom<br />

konkreten Inhalt der Web Service Anfrage bzw. Antwort ist <strong>und</strong> dafür keine Auswertung inhalts-<br />

<strong>und</strong> raumbezogener Zugriffsregeln stattfinden muss. Bei der Auswertung der speziellen<br />

individuellen Zugriffsentscheidungsanfrage wird daher das ResourceContent Element, in<br />

dem das zu schützende XML Dokument enthalten ist, nicht berücksichtigt.<br />

Würde man die eben genannten Überprüfungen in das Hauptregelwerk integrieren, so würden<br />

diese zu jeder individuellen Zugriffsentscheidungsanfrage aufs Neue kontrolliert werden, obwohl<br />

sie konstant für alle individuellen Anfragen zum selben Ergebnis evaluieren.<br />

Erwähnt sei, dass unabhängig von der vorgeschalteten Überprüfung einiger Zugriffsregeln,<br />

die Action <strong>und</strong> Subject Attribute der Zugriffsentscheidungsanfrage im Kontext der Ressource<br />

bei der nachfolgenden Anwendung des Hauptregelwerkes kontrolliert werden müssen.<br />

Zur Realisierung der vorgeschalteten Überprüfung einiger Zugriffsregeln muss neben dem<br />

Hauptregelwerk für den Web Service ein zweites Regelwerk existieren. In diesem sind nur<br />

Zugriffsregeln enthalten, die unabhängig vom Resource Teil der Zugriffsentscheidungsanfrage<br />

sind. Damit im PDP entschieden werden kann, ob es sich bei <strong>einer</strong> Zugriffsentscheidungsanfrage<br />

um die vorgeschaltete spezielle Zugriffsentscheidungsanfrage handelt, muss<br />

diese entsprechend vom PEP gekennzeichnet werden. Dazu wird das resource-id Attribut<br />

der speziellen Zugriffsentscheidungsanfrage mit einem Wert wie beispielsweise „generalChecks“<br />

belegt. Ansonsten ist deren Inhalt identisch der globalen Zugriffsentscheidungsanfrage.<br />

Der resource-id Wert wirkt in diesem Fall wie ein Schalter. Entspricht der Wert<br />

von resource-id „generalChecks“, dann verwendet der PDP das spezielle Regelwerk für<br />

die vorgeschalteten Überprüfungen, die unabhängig von der Ressource sind. Ansonsten wird<br />

das eigentliche Regelwerk der Anwendung zur Zugriffsentscheidung herangezogen. Das Verzweigen<br />

in das entsprechende Regelwerk wird über zwei PolicySets unterhalb der Wurzel<br />

des Regelwerkes erreicht. Diese überprüfen in ihrem Target ausschließlich den Wert des resource-id<br />

Attributes.<br />

C.2 Grobstruktur des Regelwerkes bei Web Services<br />

Ausgangsituation ist, dass eine individuelle Zugriffsentscheidungsanfrage an den PDP übermittelt<br />

wird. Diese wird durch das Tupel Subjekt, Knoten <strong>und</strong> Aktion charakterisiert. Aufgabe<br />

des PDPs ist es, schnell die zu diesem Tupel passenden Regeln zu identifizieren.<br />

Abgesehen von der besonderen Police, die sich auf die vorgeschaltete spezielle Zugriffsentscheidungsanfrage<br />

bezieht, sollte das eigentliche Hauptregelwerk für den Web Service als ein<br />

Baum organisiert werden. Die Alternative wäre, sich bei der Wahl der Grobstruktur für eine<br />

flache Strukturierung zu entscheiden. Mit flacher Strukturierung ist gemeint, dass alle Regeln


149<br />

in <strong>einer</strong> Policy liegen. Dadurch müssen zu jeder Zugriffsentscheidungsanfrage alle Regeln<br />

auf Anwendbarkeit geprüft werden. Da sich dadurch ein Aufwand von O (Anzahl Regel) ergeben<br />

würde, ist die baumartige Strukturierung der flachen Strukturierung vorzuziehen.<br />

Die Wurzel des baumartigen Regelwerkes ist ein PolicySet Element mit einem Target<br />

Element, das folgendermaßen aufgebaut ist:<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

generalChecks<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

...<br />

Dadurch kommt das Hauptregelwerk zur Anwendung, unabhängig davon welcher Nutzer eine<br />

Operation auf dem Web Service tätigt. Es spielt außerdem keine Rolle, welche Aktion er auf<br />

dem Web Service ausführt. Der Abgleich des resource-id Attributs mit dem Literal „generalChecks“<br />

über die Funktion string-NOT-equal ist nötig, um die vorgeschaltete spezielle<br />

Zugriffsentscheidungsanfrage (vgl. C.1) abweisen zu können.<br />

Unterhalb des eben eingeführten Wurzel-PolicySets des Hauptregelwerkes folgt eine<br />

baumartige Schachtelung der PolicySets (PolicySet…PolicyRules), wobei<br />

die Target Bereiche der PolicySets, Policies oder Rules je Level im Regelwerkbaum<br />

stetig eingegrenzt werden sollten (d.h die Targets der Kinder-PolicySets sollten<br />

das Target des Vater-PolicySets weiter einschränken). Dies entspricht einem Clustering<br />

Prinzip. Dadurch sind die für eine individuelle Zugriffsentscheidungsanfrage relevanten<br />

Regeln schnell bestimmbar. Nach Identifikation der relevanten Regeln kann der PDP diese<br />

auswerten <strong>und</strong> die Zugriffsentscheidung ermitteln. Vorteil <strong>einer</strong> solchen Organisation des Regelwerkes<br />

ist, dass sich die Laufzeit bei der Auswertung <strong>einer</strong> konkreten individuellen<br />

Zugriffsentscheidungsanfrage an O (log (Anzahl Regeln)) annähern kann, vorausgesetzt es<br />

existieren zu jeder Policy ungefähr gleich viele Regeln <strong>und</strong> der Regelwerkbaum ist möglichst<br />

höhenausgeglichen.<br />

40 ist selbst zu definieren, da im Target die not Funktion nicht die string-equal Funktion umhüllen<br />

kann.


150<br />

Neben der baumartigen Strukturierung sollte das Ziel sein, alle Regeln, die zu <strong>einer</strong> individuellen<br />

Zugriffsentscheidungsanfrage greifen könnten, in <strong>einer</strong> Policy zu halten. Dadurch<br />

kann einfach <strong>und</strong> übersichtlich durch den regelverbindenden Algorithmus das Gesamtergebnis<br />

bei mehrfachem Regelmatch bestimmt werden.<br />

Zur Entscheidungsfindung, wie ein Regelwerkbaum zu strukturieren ist, spielen folgende<br />

Faktoren eine entscheidende Rolle:<br />

• Anzahl an Nutzern<br />

• Anzahl an Operationen<br />

• Anzahl an Schemaknoten<br />

• Anzahl <strong>und</strong> Art der Regeln<br />

• Hierarchie der SSOs<br />

• unterschiedliche konfliktauflösende Strategien<br />

• fehlende Knoten sind unterschiedlich berücksichtigt<br />

• Open vs. Closed Policy<br />

• f<strong>einer</strong>e Strukturierungen (z.B. „räumliches Clustering“ von Raumregeln – vgl. C.3)<br />

• usw.<br />

Wie die zahlreichen Faktoren zeigen, kann aufgr<strong>und</strong> der Abhängigkeit vom Anwendungsfall<br />

kein allgemeingültiger Vorschlag für eine sinnvolle Strukturierung des Regelwerkes gemacht<br />

werden. Dennoch soll eine Empfehlung zur Grobstrukturierung des Regelwerkes diskutiert<br />

werden, deren Ziel es ist, für möglichst viele Anwendungsfälle sinnvoll zu sein. Selbst wenn<br />

aufgr<strong>und</strong> besonderer Gegebenheiten der Vorschlag unbrauchbar sein sollte, demonstriert er<br />

dennoch, welche Überlegungen bei der Strukturierung berücksichtigt werden müssen.<br />

Geschachtelte PolicySets sollen, wie oben erwähnt, die Target Bereiche nach innen<br />

weiter einschränken. Dadurch wird die Menge der potentiell anwendbaren Anfragen geringer.<br />

Dies entspricht der Tatsache, dass aus Sicht eines beliebigen Knotens des XML Schemas der<br />

zu schützenden Daten die Anzahl der darunter liegenden Knoten abnimmt. Es bietet sich daher<br />

an, die Struktur des Regelwerkbaumes dem Schemabaum anzupassen.<br />

An das Schema der zu schützenden Daten angepasste Strukturierung:<br />

Um dies zu realisieren, müssen die regulären Ausdrücke im Resource Element der Targets<br />

der PolicySet Elemente einem Knoten im Schemabaum entsprechen. Zu jedem E-<br />

lement- oder Attributknoten im Schema existiert daher genau ein PolicySet. In diesem<br />

PolicySet Element existieren „Anzahl Kinder des Schema-Knotens“, darunter liegende<br />

PolicySet Elemente <strong>und</strong> ein „lokales PolicySet" für den Knoten selbst. Welche Organisation<br />

unterhalb des lokalen PolicySets vorliegt wird als Feinstruktur des Regelwerkes<br />

angesehen <strong>und</strong> wird unter C.3 behandelt.


151<br />

Zusätzlich zu der an den Schemabaum angepassten Struktur des Regelwerkbaumes bietet es<br />

sich an, in Abhängigkeit der Operation <strong>und</strong>/oder in Abhängigkeit des Nutzers zu strukturieren.<br />

Strukturierung in Abhängigkeit der Operation auf den Web Service:<br />

Ist das Regelwerk je Operation sehr unterschiedlich (z.B. Regeln für die Leseoperationen <strong>und</strong><br />

Regeln für die Löschoperationen auf den Web Service), so ist es empfehlenswert, auf dem<br />

ersten Level des Hauptregelwerkes nach der Operation auf den Web Service zu differenzieren<br />

(Level null entspricht der Wurzel des Regelwerkes). Unterhalb der Differenzierung nach der<br />

Operation schließt sich die Strukturierung in Abhängigkeit des Schemas an.<br />

Strukturierung in Abhängigkeit des Nutzers des Dienstes:<br />

Auf welcher Ebene in dem am XML Schema orientierten Regelwerkbaum nach Nutzer unterschieden<br />

werden soll, ist ausschließlich vom Anwendungsfall abhängig (Anzahl Nutzer, Anzahl<br />

Regeln je Nutzer, Ähnlichkeit der Regeln je Nutzer etc.). Es kann kein sinnvoller, allgemein<br />

gültiger Vorschlag gemacht werden.<br />

Vorgestellt wurden drei kombinierbare Strukturierungsmöglichkeiten. Eine nur am Schema<br />

orienterte Strukturierung impliziert automatisch, dass Kinder eines PolicySets immer disjunkt<br />

<strong>und</strong> vollständig sind, was Ziel eines sauber strukturierten Regelwerkes sein sollte.<br />

(Zur Verdeutlichung, was unter der Disjunktheit der Kinder verstanden wird:<br />

M sei die Menge der Anfragen, für die PolicySet A greift. Vollständig <strong>und</strong> disjunkt bedeutet<br />

nun, dass für alle M i ’s genau ein Kind-PolicySet von A bzw. eine Kind-Policy<br />

von A greift.)<br />

Sollen weitere Strukturierungsvarianten verfolgt werden (z.B. nach Nutzern), dann muss der<br />

SSO bei der Definition des Regelwerkes explizit für den Erhalt der Disjunktheit sowie Vollständigkeit<br />

sorgen. Hierzu sei erwähnt, dass Vollständigkeit auf Regelebene durch eine default<br />

Regel (diese ist immer anwendbar) erreicht werden sollte. Eine Alternative, die Vollständigkeit<br />

indirekt zu erreichen, wäre not applicable als deny zu werten. Existiert zu <strong>einer</strong><br />

Anfrage kein PolicySet, keine Policy <strong>und</strong> keine Regel, dann gibt der PDP zu dieser<br />

Zugriffsentscheidungsanfrage not applicable zurück. Dies kann im PEP dann als ein deny gewertet<br />

werden.


152<br />

C.3 Feinstruktur des Regelwerkes<br />

Die weitere Strukturierung des Regelwerkes unterhalb der lokalen PolicySets – charakterisiert<br />

durch das Target-Tupel (Nutzer, Schemaknoten, Aktion) – wird als Feinstruktur bezeichnet.<br />

Diese sollte, wie schon die Grobstruktur, Vollständigkeit sowie Disjunktheit von den PolicySets<br />

bzw. Policies unterhalb des lokalen PolicySets fordern. Mögliche Variablen<br />

für eine verf<strong>einer</strong>te Unterteilung sind beispielsweise Raumbezug, SRS, zuständiger SSO etc..<br />

Bei <strong>einer</strong> Zugriffskontrolle für Geodaten bzw. für einen Geo Web Service ist wegen des<br />

Raumbezuges eine besondere Feinstrukturierung möglich (das so genannte räumliche Clustering<br />

Prinzip), die im Folgenden kurz vorgestellt werden soll.<br />

Ziel ist es, zu einem „lokalen PolicySet“ eine darunter liegende räumliche Clustering PolicySet-Hierarchie<br />

aufzubauen, die den Raum vollständig <strong>und</strong> in disjunkte Teilgebiete zerlegt.<br />

Jedes dieser Teilgebiete kann wiederum in Teilgebiete zerlegt werden. Je Teilgebiet wird<br />

ein eigenes PolicySet erzeugt. In diesem gibt es wieder je Unterteilgebiet ein eigenes PolicySet.<br />

Auf der untersten Ebene – kleingranularste Teilgebiete – existiert eine Policy,<br />

welche die Raum- <strong>und</strong> RaumInstanzregeln, die sich auf dieses Teilgebiet beziehen, beinhaltet.<br />

Beziehen sich die Regeln auf zwei Teilgebiete, weil sich die Featureinstanz über die Teilgebietgrenzen<br />

erstreckt, so müssen sie red<strong>und</strong>ant in den entsprechenden Policies auftauchen.<br />

Regeln, die keinen Raumbezug haben, stehen auf der selben Ebene wie die Wurzel der räumlichen<br />

Clustering PolicySet-Hierarchie.<br />

Durch die Beispiele auf der CD-ROM wird demonstriert, wie die genannten Strukturierungsvorschläge<br />

umgesetzt werden können.<br />

C.4 Organisation der SSOs<br />

In der Praxis ist der Fall eines einzigen SSOs eher die Ausnahme. Zudem stellt er in Bezug<br />

auf die Anforderungen an eine Zugriffskontrolle eine echte Untermenge des Multi-SSO Falls<br />

(d.h. mehrere SSOs verwalten das Regelwerk) dar. Nachfolgend wird daher immer angenommen,<br />

dass mehrere Administratoren das Regelwerk pflegen. Es ist sinnvoll, den SSOs<br />

möglichst disjunkte Zuständigkeitsbereiche zu geben. Beispiele für Variablen, die zur disjunkten<br />

Aufteilung der Zuständigkeitsbereiche der SSOs dienen könnten, sind:<br />

• nach Nutzern<br />

• nach Featuretypen<br />

• nach Raumbezug


153<br />

• nach Operation auf den Web Service bzw. auf die Objekte<br />

• …<br />

In Fällen, in denen dies nicht möglich ist (z.B. SSO Aufteilung nach Regeltyp – SSO A legt<br />

allgemeine Regeln fest <strong>und</strong> SSO B definiert Verf<strong>einer</strong>ungs-Regeln), müssen die parallel zuständigen<br />

SSOs durch ein weiteres Regelwerk koordiniert werden (vgl. C.5). In diesem kann<br />

z.B. durch die Vergabe von Prioritäten je SSO – vergeben durch einen Master-SSO – geregelt<br />

werden welcher SSO wann welche Regeln festlegen darf. Durch die Prioritäten ausgewertet<br />

von regelverbindenden Algorithmen lassen sich administrative Hierarchien abbilden. Höherer<br />

Rang bedeutet höhere Priorität. Die Regeln eines höherrangigen SSOs sind nicht durch die<br />

niederrangigen SSOs veränderbar. Verändert dagegen ein höherrangiger SSO die Regeln eines<br />

untergeordneten SSOs, so ist dies erlaubt. Allerdings sollte der betroffene SSO von der<br />

Veränderung s<strong>einer</strong> Regeln benachrichtigt werden. Gleiche Priorität würde bedeuten, dass die<br />

Regeln des konkurrierenden SSOs wie die eigenen behandelt werden können. Dies bedeutet,<br />

dass die SSOs aus Sicht des Zugriffskontrollsystems wie ein SSO behandelt werden. Daher<br />

ist es zu vermeiden, den SSOs bei gleichem Zuständigkeitsbereich die selbe Priorität zu geben.<br />

C. 5 Regelwerk für die Verwaltung der Zugriffsgesetze der Anwendung<br />

Um ein ungewolltes Abändern der konfliktauflösenden Strategie oder ein unkontrolliertes<br />

Überschreiben vorhandener Regeln zu vermeiden, ist eine Zugriffskontrolle für die Verwaltung<br />

des Regelwerkes selbst nötig. Mit solchen Zugriffsregeln wird festgelegt, wer auf welche<br />

Art <strong>und</strong> Weise gewisse Zugriffsgesetze verändern kann. Um das Zugriffskontrollsystem der<br />

Anwendung nicht unnötig zu verkomplizieren, sollte entweder nur eine Person diese administrativen<br />

Zugriffsgesetze festlegen können oder die Zuständigkeitsbereiche der einzelnen<br />

„Ebene 2 Administratoren“ müssen disjunkt sein. Würden nämlich mehrere Personen die „Ebene<br />

2 Zugriffsgesetze“ für den selben SSO verwalten, so müsste, um die Aktionen der „Ebene<br />

2 Administratoren“ untereinander zu koordinieren, ein drittes Regelwerk existieren. Das<br />

dritte Regelwerk regelt die Administration des „Ebene 2 Regelwerkes“.<br />

Die Zugriffskontrolle für die Verwaltung des Regelwerkes muss festlegen, für wen welche<br />

Zugriffsregeln modifizierbar sind, ob sowohl positive als auch negative Regeln möglich sein<br />

sollen, wann welche konfliktauflösenden Strategien verwendet werden können, welcher Administrator<br />

welche Attribute in der Regel festlegen darf (z.B. Prio etc.),…<br />

Wie Zugriffsregelwerke auf Ebene 2 oder gegebenenfalls auf höheren Ebenen verwaltet werden,<br />

soll in dieser Arbeit nicht näher betrachtet werden. Zu erwähnen ist allerdings, dass die<br />

gleichen Probleme <strong>und</strong> Lösungsansätze wie bei <strong>einer</strong> Zugriffskontrolle für die Anwendung<br />

selbst auftreten <strong>und</strong> daher konzeptionell nichts Neues hinter dieser Thematik steckt. Neue


154<br />

Herausforderung eines mehrschichtigen Zugriffskontrollsystems ist lediglich die erhöhte semantische<br />

Komplexität durch die unterschiedlichen aufeinander aufbauenden Regelwerke.<br />

C.6 Designprinzipien bei der Deklaration von Zugriffsegeln für XML Dokumente<br />

Basis für die Definition von Zugriffsregeln für dynamisch generierte XML Dokumente ist das<br />

den Dokumentinstanzen zugr<strong>und</strong>eliegende XML Schema. Das Regelwerk muss berücksichtigen,<br />

dass in diesem Schema Existenz, Anzahl <strong>und</strong> Reihenfolge gewisser Knoten offen festgelegt<br />

ist. Ziel eines guten Regelwerkes sollte es sein, Regeln so allgemeingültig wie möglich<br />

zu definieren, damit sie eine maximale Stabilität gegenüber <strong>einer</strong> Dynamik der Datenbasis<br />

aufweisen (z.B. Nutzen des Raumbezuges bei Zugriffsregeln für immobile Featuretypen).<br />

Der SSO kann bei der Definition von Zugriffsregeln positive <strong>und</strong>/oder negative Regeln unterschiedlichsten<br />

Typs definieren. Traditionell unterscheidet man zwischen zwei unterschiedlichen<br />

Ansätzen:<br />

Geschlossene Verfahrensweise ( engl. Closed Policy):<br />

Man definiert nur positive Autorisationen. Alle nicht explizit für zugänglich erklärten Daten<br />

sind zugriffsbeschränkt – dies entspricht also der Gr<strong>und</strong>einstellung (Anglizismus: default Regel)<br />

„Zugriff verboten“. Dieser Ansatz ist besonders dann geeignet, wenn der Großteil der<br />

Daten zugriffsbeschränkt sein soll.<br />

Offene Verfahrensweise ( engl. Open Policy):<br />

Es werden nur negative Autorisationen explizit spezifiziert. Bei dieser Taktik wird Zugriff<br />

gewährt, wenn keine einschränkende Autorisation vorliegt. Somit lautet die default Regel in<br />

diesem Fall „Zugriff erlaubt“. Diese Variante wird in Szenarien bevorzugt, in denen nur wenige<br />

Zugriffsbeschränkungen festzulegen sind.<br />

Hinter beiden Varianten steckt die gleiche Idee. Die expliziten Regeldefinitionen bestimmen<br />

die zugreifbaren bzw. zugriffsbeschränkten Datenobjekte. Der Rest wird durch die default<br />

Regel abgedeckt. Welche Variante zu bevorzugen ist, hängt ganz vom Anwendungsszenario<br />

ab.<br />

Verwendet man bei der Definition der Zugriffsregeln entweder die Open Policy oder die Closed<br />

Policy, so hat man zwei entscheidende Vorteile:


155<br />

• Vollständigkeit:<br />

Zu jeder Zugriffsanfrage greift mindestens eine Zugriffsregel.<br />

• Konfliktfreiheit:<br />

Zu <strong>einer</strong> Zugriffsanfrage greifen entweder nur positive oder nur negative Zugriffsregeln.<br />

Allerdings kann die Forderung, dass ausschließlich explizite positive Regeln oder nur explizite<br />

negative Regeln in <strong>einer</strong> Regelgruppe vorkommen dürfen, unerwünscht sein. Gründe sind<br />

beispielsweise:<br />

• Geringere Flexibilität bei der Regeldefinition<br />

• Die Ausdrucksstärke des Regelwerkes ist eingeschränkt.<br />

In Szenarien, in denen eine neue Zugriffssemantik nur durch eine Regel gegensätzlichen Effekts<br />

im Regelwerk umgesetzt wird, ist eine Kombination von positiven <strong>und</strong> negativen Regeln<br />

gefordert.<br />

Beispiel:<br />

Eine Firma definiert in <strong>einer</strong> offenen Verfahrensweise (Open Policy) eine Menge an negativen<br />

Regeln, welche die globale Firmenstrategie umsetzen. Eine dieser globalen Regeln verbietet<br />

den Zugriff auf Daten zu Gebäuden innerhalb Bayerns. Möchte eine Abteilung dieser<br />

Firma aber, dass Daten zu Gebäuden mit einem Kaufpreis über <strong>einer</strong> Million zugänglich sind,<br />

so kann dies nur erreicht werden, wenn die Regelsemantik aus der globalen Firmenstrategie<br />

umgeändert wird. Dies kann auf zwei Weisen geschehen:<br />

• Umschreiben der vorhandenen Regel<br />

• explizites Deklarieren <strong>einer</strong> positiven Regel <strong>und</strong> Festlegen eines konfliktauflösenden Algorithmuses,<br />

der die Regel dieser Abteilung bevorzugt<br />

Wie dieses Beispiel verdeutlicht, hat das Zulassen von Regeln gegensätzlichen Vorzeichens<br />

nicht nur eine Erhöhung des Komforts im Regeldefinitionsprozess zur Folge, sondern ermöglicht<br />

auch eine sauberere Trennung der Regeln der unterschiedlichen SSOs (Umschreiben<br />

impliziert Verschmelzen von Regeln).<br />

Erwähnt sei, dass man an der Forderung nach <strong>einer</strong> Open Policy durchaus festhalten kann,<br />

ohne Einschränkungen bei der Umsetzung <strong>einer</strong> Zugriffssemantik unterworfen zu sein, wenn<br />

für jedes Feature immer nur ein SSO zuständig ist. Allerdings ist der dafür nötige Prozess des<br />

Integrierens <strong>einer</strong> positiven Regel sehr komplex <strong>und</strong> fehleranfällig. Um dieselbe Regelsemantik<br />

durch negative Regeln ausdrücken zu können, muss gegebenenfalls ein Umschreiben der<br />

vorhandenen negativen Regeln <strong>und</strong>/oder ein Hinzufügen neuer negativer Regeln erfolgen.


156<br />

Möchte bzw. muss man zu <strong>einer</strong> Policy sowohl positive als auch negative Regeln festlegen,<br />

so hat dies zur Folge, dass die Konfliktfreiheit nicht mehr unbedingt sichergestellt ist. Vollständigkeit<br />

des Regelwerkes kann nach wie vor über eine zusätzliche default Regel gewährleistet<br />

werden. Alternativ könnte man dieses Ziel auch durch explizite Regeldefinition erreichen.<br />

Wie aber in Samarati 2000 auf Seite 32 aufgeführt, ist das Fordern von Vollständigkeit<br />

durch explizite Regeldefinition zu schwierig <strong>und</strong> verkompliziert unnötig die Administration<br />

der Regeln.<br />

Nachfolgende Designprinzipien beziehen sich auf eine Post-Processing Zugriffskontrolle<br />

nach dem „so viel wie geht“ Prinzip. Es werden Vorschläge gemacht, wie das Resource E-<br />

lement im Target der Regel <strong>und</strong> gegebenenfalls deren Condition Element zu spezifizieren<br />

ist.<br />

Der reguläre Ausdruck im Resource Element des Targets der Regel genügt den Knoten,<br />

ab denen die Regel den Zugriff beschränkt.<br />

Regeln sollten den Zugriff auf Knoten so differenziert wie möglich beschränken, da dadurch<br />

Post-Processing nach dem „so viel wie geht“ Prinzip begünstigt wird.<br />

Im Target wird ganz allgemein definiert, für welche Knoten die Regel greifen soll. Eine<br />

verf<strong>einer</strong>te Selektion der Knoten in Abhängigkeit der Inhalte der Objektinstanzen findet erst<br />

im Condition Teil der Regel statt.<br />

Anzuraten ist, dass die SSOs bei der Definition inhaltsbezogener Zugriffsregeln nur Knoten in<br />

den Regelbedingungen heranziehen dürfen, die erstens immer vorhanden sind <strong>und</strong> zweitens<br />

immer einen Wert ungleich null haben (im XML Schema mit nilable=false gekennzeichnet).<br />

Daraus folgt, dass in diesen Regeln die MustBePresent Attribute in den Attributselectoren<br />

bzw. InformationSelectoren den Wert true haben müssen. Dadurch evaluiert die Regel sicher<br />

zu „indeterminate“, wenn der entsprechende Knoten fehlt.

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!