4.8 Anwendungsorientierte Schutzsysteme

Werbung
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
Herunterladen