4.8 Anwendungsorientierte Schutzsysteme (verteilte )Anwendungssoftware Middleware Datenbanksystem System 1 SS-4.8 System 2 . . . . . 1 4.8.1 Zugriffsschutz in relationalen Datenbanksystemen Zur Erinnerung – Relationales Datenmodell: Datenbank = Menge von Relationen/Tabellen, z.B. Signatur Bücher Joy3 Autor Titel Joyce BenutzerNr Name Ulysses Benutzer Mey Adresse 4711 Zoo Tupel Buch Attribute Ausleihe Joy3 Leser 4711 Datenbank-Schema beschreibt die Tabellen enthält Fremdschlüssel 5.8.1.1 Anfragesprache SQL ermöglicht Definition, Anfrage und Änderung einer Datenbank, entweder interaktiv oder mit Einbettung in einen Programmtext Schemadefinition: create table Bücher (Signatur character(12) not null, Autor character(15), Titel character(30) not null); Eintragung eines oder mehrer Tupel in eine Tabelle: insert into Ausleihe ... SS-4.8 3 Löschen: delete Benutzer where ... Fortschreiben: update Benutzer where ... set Adresse = ... Anfragen: select Signatur, Titel from Bücher where Autor = 'Grass'; liefert Menge von Paaren (Signatur, Titel) select * from Benutzer where Name = 'Meier'; liefert Menge von Tripeln select Titel from Bücher, Ausleihe, Benutzer where Name = 'Lorenz' and BenutzerNr = Leser and Signatur = Buch; SS-4.8 4 Sichten (views) sind virtuelle Tabellen, d.h. wie Tabellen (nur) lesbar, aber bei Benutzung ad-hoc aus den realen Tabellen generiert create view Präferenzen(Name, Titel) as select Name, Titel from Bücher, Ausleihe, Benutzer where Benutzer = Leser and Signatur = Buch; SS-4.8 select Titel from Präferenzen where Name = 'Lorenz'; 5 4.8.1.2 Formulierung von Schutzstrategien Modell: Schutzmatrix Subjekte: Benutzer, identifiziert durch Benutzername Objekte: Tabellen, Sichten, Attribute Rechte: select insert delete update operationsbezogen references = Recht, bei Tabellenerzeugung als Attribut einen Fremdschlüssel auf die betroffene Tabelle zu wählen SS-4.8 6 Änderung des Schutzzustands durch Befehle grant rights on objects to subjects [with grant option] revoke rights on objects from subjects [restrict | cascade] Berechtigt zur Ausführung dieser Befehle ist - der Datenbankverwalter, - wer das zu gewährende/entziehende Recht mit with grant option gewährt bekommen hat M.a.W.: Zugriffsschutz ist im wesentlichen systembestimmt ! SS-4.8 7 Beispiele: grant select on Benutzer to traugott; grant update(Adresse) on Benutzer to traugott; grant insert, delete on Ausleihe to franz, fritz; Achtung: insert ermöglicht dem franz einen Test, ob Benutzer-Nr. 4711 existiert, auch wenn er nicht select from Benutzer machen darf! SS-4.8 8 create view Ausgeliehen(BenutzerNr, Titel) as select BenutzerNr, Titel from Benutzer, Ausleihe, Bücher where Buch = Signatur and Leser = BenutzerNr; grant select on Ausgeliehen to fritz; (und damit z.B. select BenutzerNr from Ausgeliehen where Titel = ...;) ist erheblich restriktiver als grant select on Benutzer, Ausleihe, Bücher to fritz; SS-4.8 9 grant references on Benutzer ... erlaubt unter der Voraussetzung, dass Name Primärschlüssel ist, create table Test (Name character(20) references Benutzer, Info character(50)); sicherheitsrelevant, weil es mit insert möglich ist, auf Vorhandensein eines bestimmten Namens zu testen, auch wenn auf Benutzer nicht zugegriffen werden kann. grant insert on Ausleihe to primus with grant option; primus darf das Recht insert on Ausleihe beliebig weitergeben SS-4.8 10 revoke insert on Ausleihe from primus entzieht primus das Recht ... ... restrict ... mit Fehlermeldung falls Weitergabe erfolgt ist ... cascade ... und auch allen anderen, an die das Recht (transitiv) weitergegeben wurde SS-4.8 11 4.8.2 Objektorientierte Middleware am Beispiel CORBA Middleware = verteilte Plattform für verteilte Applikationen, abstrahiert von unterliegender - Hardware, - Betriebssystem, - (möglichst auch) Programmiersprachen Objektorientierte Middleware erlaubt Strukturierung der Applikationen - als Ensemble von fernaufrufbaren Objekten - mit Schnittstellen, die in Vererbungsbeziehung zueinander stehen können. ( Sicherheit im Netz) SS-4.8 12 Beispiele: sprachunabhängig DCE COMANDOS RMI SS-4.8 objektorientiert CORBA MS DCOM () () MS .NET () 13 CORBA (Common Object Request Broker Architecture), standardisiert durch die OMG (Object Management Group): Schnittstellenbeschreibungsprache IDL (Interface Definition Language) - ist unabhängig von den verwendeten Implementierungssprachen; - Beziehung zu diesen (insbes. zu deren Typsystemen) wird über Sprachabbildung (language mapping) definiert Automatische Erzeugung von Stubs, die für Typumwandlung und Nachrichtenaustausch bei Operationsaufruf/rücksprung zuständig sind SS-4.8 14 4.8.2.1 Standard-Zugriffsschutz des CORBA Security Service Principal: (≈ Subjekt) Prozess, der sich durch kryptographisch gesicherte Beglaubigung (credentials) ausweist: - Identität des Benutzers, - Rolle des Benutzers, - Code des Prozesses, ... (eines oder mehrere davon) (entspricht Autorisierung) Objekt: Zustandsbehaftete Implementierung einer Schnittstelle SS-4.8 15 Rechte: R = ∪ Ri i∈I R0 = { g, s, m, u } get, set, manage, use (≈ R, W, . , X) ist generische Standard-Rechtefamilie; weitere Familien können vom Anwendungsentwickler nach Bedarf definiert werden SS-4.8 16 Rechte Operationen: requiredRights: Operation → 2R × { all, any } Festlegung durch den Anwendungsentwickler! d.h. Rechte sind generisch und nicht a priori an bestimmte Operationen gebunden (weil diese ja anwendungsspezifisch sind) Rechte Principals: effectiveRights: Principal → 2R auf der Basis von Sicherheitsattributen gemäß den credentials (nicht objektspezifisch!) d.h. Zugriffsschutz ist im wesentlichen systembestimmt ! SS-4.8 17 Nachteile des CORBA-Standard-Zugriffsschutzmodells: beschränkte, generische Rechtemenge (“object RWX”) schnittstellenbezogen, nicht objektbezogen: alle Objekte eines Typs werden gleich behandelt keine dynamischen Rechteänderungen keine Verbote SS-4.8 18 4.8.2.2 Alternatives Schutzmodell: VPL View Policy Language [Brose, Koch 1999-2005] (DFG-Projekt RACCOON - Rigorous Access Control in Object-Oriented Networks) VPL ist Sprache zur Formulierung anwendungsspezifischer Schutzstrategien + Werkzeuge für den Sicherheitsverwalter + Infrastruktur zur technischen Realisierung des Schutzes sichere Handhabbarkeit erhöht die Sicherheit Zentrale Elemente: SS-4.8 - Objektbezug IDL-Basierung Sichten Rollen Schemata für Änderung des Schutzstatus 19 Sicht (view): vereinfacht: Teilmenge der Operationen eines Schnittstellentyps allgemein: - typbezogene „Capability“ - ohne Objektbezug, - mit Erlaubnissen und Verboten View-Based Access Control (VBAC) Beispiel: IDL: interface Document { void read(out string text); long find(in string pattern); void delete(in long from, in long to); ... } VPL: view SS-4.8 } Reading controls Document { allow read, find 20 Benutzer 1 Gruppe 1 Rolle 1 Sicht 1 Rolle 2 Benutzer 2 Sicht 2 Gruppe 2 Rolle 3 Benutzer 3 CORBA Schnittstelle 1 CORBA Schnittstelle 2 CORBA Schnittstelle 3 Gute Skalierbarkeit durch Gruppen, Rollen, Sichten, Typen/Schnittstellen, Domains (fassen Objekte mit gleicher Strategie zusammen) SS-4.8 21 Schutzmatrix enthält Sichten von Rollen auf Objekte/Typen - Beispiel: (Objekte:) report: Document contract: Document todo: Folder (Rollen:) Secretary Reading Reading Lookup Author Reading Updating Reading Lookup Appending Editor Reading Reading Listing Appending Removing Manager Reading Updating Lookup SS-4.8 22 Erweiterung einer Sicht (view extension): view Updating : Reading { allow delete, insert } SS-4.8 23 Rollen gemäß RBAC3: Beispiel (Ausbildungsbereich): roles Examiner holds Examining initiale Sicht (auf alle Objekte vom Typ ...) Head: Examiner maxcard 1 schwächere Rolle invariante Kardinalität Lecturer Candidate excludes Examiner invarianter Ausschluss SS-4.8 24 Vollständige Strategie-Beschreibung: policy College roles ..... view ... view Updating : Reading restricted_to Author { ... } Einschränkung assignable view Managing : Updating { allow delete } benutzbar in: schema DocumentManaging ....... SS-4.8 25 Automatische dynamische Änderung des Schutzstatus als Folge der Ausführung von Operationen: interface DocumentFactory { Document create(); void op(...); } schema DocumentManaging observes DocumentFactory { create assigns PublicReviewing on result to caller with assign option, removes Creating on this from caller; op(...) ..... } SS-4.8 26 4.8.2.3 RACCOON-Infrastruktur zum Durchsetzen einer in VPL spezifizierten Zugriffsschutzstrategie: VPL-Übersetzer entdeckt statische Fehler und übersetzt nach XML Verifier prüft auf Konflikte mit bereits vorhandenen Strategien und aktualisiert die Repositories Management: View/Role/Domain Server + Management Tools SS-4.8 27 VPL Compiler XML XML Verifier Policy Descriptor Development IR IR Deployment XML Verifier VR VR RR RR Zugriff Datenfluss SS-4.8 IR Interface Repository VR View Repository RR Role Repository 28 Domänen: hierarchisch angeordnet gemäß Organisationsstruktur Geltungsbereich einer Domäne umfasst auch die Objekte aller untergeordneten Domänen Objekte können in mehr als einer Domäne Mitglied sein Auflösung von Strategie-Konflikten gemäß Meta-Strategie Hype Inc. Europe Europe R&D R&D AnwendungsAnwendungsdomäne domäne11 SS-4.8 US USBranch Branch Sales Sales AnwendungsAnwendungsdomäne domäne22 ... AnwendungsAnwendungsdomäne domänenn 29 RACCOON-Laufzeit-Unterstützung Role Mgmt. Domain Mgmt. Policy Mgmt. Policy Server Domain Server Role Server Policy Policy Domain Domain Roles Client SS-4.8 request() Target Interceptor Access Decision Server 30 4.8.3 XACML eXtensible Access Control Markup Language (Einführung: http://www.oasis-open.org/committees/...) XML-basierte Sprache zur Beschreibung von Zugriffsschutzstrategien in heterogenen Umgebungen OASIS-Spezifikation XACML 2.0 (Februar 2005) (Organization for the Advancement of Structured Information Standards) Existierende Werkzeuge: Parthenon Computing (http://www.parthenoncomputing.com) SUN (http://sunxacml.sourceforge.net) Lagash Systems: XACML.NET (http://mvpos.sourceforge.net) ... und weitere SS-4.8 31 <Policy PolicyId="SamplePolicy" ...> <Target> <Subjects> ... </Subjects> <Resources>... </Resources> <Actions> ... </Actions> </Target> <Rule ... Effect="Permit"> <Target> <Subjects> ... </Subjects> <Resources>... </Resources> <Actions> ... </Actions> </Target> <Condition> ........................... </Condition> </Rule> <Rule ... Effect="Deny"> ... </Rule> ..... ..... </Policy> Anwendbarkeit der Strategie Regel Anwendbarkeit der Regel Entscheidung weitere Regeln 4.8.3.1 Ein einfaches Beispiel "Einloggen am Server Aramis ist nur zwischen 9 und 17 Uhr erlaubt" SS-4.8 33 <Policy PolicyId="SamplePolicy" RuleCombiningAlgId= "urn:oasis:names:tc:xacml:1.0: rule-combining-algorithm:permit-overrides"> <!-- This Policy only applies to requests for Aramis --> <Target> <Subjects> <AnySubject/> </Subjects> <Resources> <ResourceMatch MatchId= "urn:oasis:names:tc:xacml:1.0:function:string-equal"> <AttributeValue DataType= "http://www.w3.org/2001/XMLSchema#string"> Aramis </AttributeValue> <ResourceAttributeDesignator DataType= "http://www.w3.org/2001/XMLSchema#string" AttributeId= "urn:oasis:names:tc:xacml:1.0:resource:resource-id"/> </ResourceMatch> </Resources> <Actions> <AnyAction/> </Actions> </Target> ........... ........... <!-- Rule to see if we should allow the Subject to login --> <Rule RuleId="LoginRule" Effect="Permit"> <!-- Only use this Rule if the action is login --> <Target> <Subjects> <AnySubject/> </Subjects> <Resources> <AnyResource/> </Resources> <Actions> <ActionMatch MatchId="urn:oasis:names:tc:xacml:1.0: function:string-equal"> <AttributeValue DataType= "http://www.w3.org/2001/XMLSchema#string"> login </AttributeValue> <ActionAttributeDesignator DataType=http://www.w3.org/2001/XMLSchema#string AttributeId="ServerAction"/> </ActionMatch> </Actions> </Target> ........... ............ <!-- Only allow logins from 9am to 5pm --> <Condition FunctionId="urn:oasis:names:tc:xacml:1.0: function:and"> <Apply FunctionId="urn:oasis:names:tc:xacml:1.0: function:time-greater-than-or-equal" <Apply FunctionId="urn:oasis:names:tc:xacml:1.0: function:time-one-and-only"> <EnvironmentAttributeSelector DataType=http://www.w3.org/2001/XMLSchema#time AttributeId="urn:oasis:names:tc:xacml:1.0: environment:current-time"/> </Apply> <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#time"> 09:00:00 </AttributeValue> </Apply> ........... SS-4.8 36 ........... <Apply FunctionId="urn:oasis:names:tc:xacml:1.0: function:time-less-than-or-equal" <Apply FunctionId="urn:oasis:names:tc:xacml:1.0: function:time-one-and-only"> <EnvironmentAttributeSelector DataType=http://www.w3.org/2001/XMLSchema#time AttributeId="urn:oasis:names:tc:xacml:1.0: environment:current-time"/> </Apply> <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#time"> 17:00:00 </AttributeValue> </Apply> </Condition> </Rule> ........... SS-4.8 37 ........... <!-- We could include other Rules for different actions here --> <!-- A final, "fall-through" rule that always denies --> <Rule RuleId="FinalRule" Effect="Deny"/> </Policy> SS-4.8 38 4.8.3.2 Architektur von XACML-Implementierungen Access Requester Zugrifsswunsch Resource PEP Policy Enforcement Point Anfrage Antwort Context Handler SS-4.8 39 4.8.3.2 Architektur von XACML-Implementierungen Access Requester Zugrifsswunsch Resource PEP Policy Enforcement Point Attribute von Subjekten, Ressourcen, Aktionen, ... PIP Policy Information Point Anfrage Antwort Context Handler Strategie PDP Policy Decision Point Strategie verwalten PAP - Policy Administration Point SS-4.8 40 PDP - Policy Decision Point: Eine Regel liefert entweder Permit oder Deny oder Indeterminate (Fehler bei Auswertung der Condition) oder NotApplicable (gemäß Target) PDP ist mit verschiedenen Rule Combining Algorithms konfigurierbar, z.B. dem Deny Overrides Algorithm: "Wenn keine Regel Permit liefert oder eine Regel Deny liefert, dann ist das Ergebnis Deny " SS-4.8 41