next up previous contents
Nächste Seite: 5.9 Delegation Aufwärts: 5. Ein Sicherheitsmodell für Vorherige Seite: 5.7 Sicherung der Daten   Inhalt

Unterabschnitte


5.8 Autorisierung

Nachdem mit den vorangehenden Kapiteln die Authentisierung einer handelnden Entität ermöglicht wird, ist die Grundvoraussetzung für eine Autorisierung von Aktionen gegeben.


5.8.1 Die zu autorisierenden Schnittstellen

Nachdem bereits in Kap. 3.4 die für die Autorisierung relevanten Schnittstellen vorgestellt wurden, soll nun detaillierter betrachtet werden, wo und wie die Autorisierung für diese Schnittstellen durchgeführt werden kann.

Betrachtet man die verschieden Ansätze aus Kap. 3.6, so kommt man zu dem Schluß, daß für eine Sicherheitsarchitektur, welche die gestellten Anforderungen erfüllt, eine Kombination der vorgestellten Ansätze notwendig ist.


Für eine grobe Trennung zwischen Ressourcen, die durch das Agentensystem generell erreichbar sein sollen und jenen, die niemals erreichbar sein sollen, eignen sich Sicherungsmaßnahmen im Endsystem. Wegen der Plattformabhängigkeit und schlechten Managebarkeit darf die Trennung dabei nur so vorgenommen werden, daß diese über einen langen Zeitraum Bestand hat und vor allem keine Änderungen dieser Sicherungsmaßnahmen zur Laufzeit des Agentensystems vorgenommen werden müssen. Zusicherungen, die mit ``immer'' oder ``niemals'' attributiert sind, können so umgesetzt werden.

Beispielsweise könnte eine solche Trennung Teile des lokalen Dateisystems vom Zugriff des Agentensystems ausschließen oder den Zugriff auf ein bestimmtes Netz-Interface sperren, auf dessen Segment niemals zugegriffen werden darf.


Die fallweise Autorisierung der Schnittstellen des Endsystems muß demnach eine Ebene höher, also durch das Agentensystem vorgenommen werden, denn zum einen kann das Agentensystem die notwendige Unterscheidung verschiedener Entitäten vornehmen. Zum anderen entsteht hierdurch eine zentrale, im gesamten SmA plattformunabhängige Komponente, die eine vereinheitlichte Managementschnittstelle bereitstellt, was die Voraussetzung für die Erfüllung der Forderung nach einfacher Managebarkeit ist. Daneben ist das Agentensystem auch für die Autorisierung seiner eigenen Schnittstelle verantwortlich.

Aber auch der Zugriff auf Schnittstellen einer Agenteninstanz müssen durch das Agentensystem autorisierbar sein. Dies ermöglicht, daß Agenteninstanzen die eigene Schnittstellen anbieten und dafür keine eigenen Autorisierungsmaßnahmen ergreifen, aber kritische Aktionen auf dem Agentensystem oder Endsystem ausführen, trotzdem ausgeführt werden können. Dies wird an einem Beispiel deutlich:

Eine Agenteninstanz E sei vertrauenswürdig und könne deshalb eine kritische Aktion A auf dem Endsystem ausführen. Bietet E aber auch eine eigene Schnittstelle zum Auslösen von A an und autorisiert deren Nutzung nicht, so könnte ein Angreifer diese Schnittstelle nutzen, um A unberechtigterweise auf dem Endsystem auszuführen, da aus der Sicht des Agentensystems A vom vertrauenswürdigen E ausgeführt wird. Kann aber das Agentensystem Zugriffe auf die Schnittstellen von E autorisieren, kann die unberechtigte Nutzung dieser Schnittstelle ohne Zutun der Agenteninstanz verhindert werden.


Eine extrem feingranulare, individuelle Überprüfung von Aktionen kann nur durch die jeweilige Entität selbst erfolgen, die die Schnittstelle für die Aktion bereitstellt. So sind beispielsweise Agenteninstanzen für die Überprüfung der Parameter bei Benutzung einer Schnittstelle selbst verantwortlich, da nur sie die genaue Semantik der Funktion und damit die in der Signatur verzeichneten Parameter kennen. Gleiches gilt für die Schnittstellen, die das Agentensystem selbst anbietet.


Zusammenfassend zeigt Tabelle 5.3 die Beziehungen zwischen Schnittstellen und den für deren Autorisierung zuständigen Entitäten


Tabelle 5.3: Übersicht Schnittstellen und deren Autorisierung
  Autorisierende Entität
Schnittstelle Endsystem Agentensystem Agenteninstanz
Endsystem, nie erreichbar X    
Endsystem, prinzipiell erreichbar   X  
Agentensystem   X  
Agenteninstanz   X X



5.8.2 Entscheidungshierarchie

Nach vorhergehendem Absatz tritt ein weiteres Problem in Erscheinung. Die Schnittstelle einer Agenteninstanz wird danach sowohl durch das Agentensystem als auch durch die Agenteninstanz selbst autorisiert. Damit sind Kollisionen in den Entscheidungen nicht auszuschließen.

Die einfachste Art solche Konflikte zu lösen ergibt sich durch eine einfache Priorisierung der Entscheidungsträger. So gelangt man zu einer Entscheidungshierarchie.

Da das Agentensystem nicht nur für seine eigene Sicherheit verantwortlich zeichnet, sondern auch für andere Agenteninstanzen und insbesondere das Endsystem, genießen ``Negativ''-Entscheidungen des Agentensystems eine höhere Priorität als Entscheidungen von Agenteninstanzen. D.h. wenn eine Agenteninstanz zwar die Benutzung einer eigenen Schnittstelle genehmigt, kann das Agentensystem dies immernoch ablehnen.

Im umgekehrten Fall kann eine Ablehnung durch die Agenteninstanz nicht durch das Agentensystem ``aufgehoben'' werden.


5.8.3 Formulierung von Entscheidungsregeln: Policies

Die zentrale Frage der Autorisierung ist


``Darf eine Entität E eine Aktion A durchführen?''


Damit diese Frage fallweise ohne Eingriff einer Person beantwortet werden kann müssen Regeln formuliert werden, nach denen diese Entscheidungen zu treffen sind. Ein Satz solcher Regeln wird im folgenden Policy genannt.

5.8.3.1 Adressierung von Entitäten in Policies

In einer solchen Policy muß es zunächst also die Möglichkeit geben die Entität E zu adressieren. Nun ist es allerdings nicht praktikabel, diese Adressierung allein über den Identifikator von E zu bewerkstelligen, da die Menge der möglichen Entitäten, und damit die konkreten Identifikatoren, in einem SmA weder endlich noch von vorneherein aufzählbar sind. Dies hat zur Folge, daß sich hierauf basierend keine allgemeinen Regeln formulieren lassen.

Vielmehr ist es notwendig weitere charakteristische Parameter einer Entität zu Rate zu ziehen, da nur solche Parameter vor der tatsächlichen Anfrage bekannt sind.


In Abschnitt 5.5.1 sind diese charakteristischen Parameter in Form von Attributen der Principals bereits definiert worden und können nun für die Formulierung von Regeln benutzt werden.

Daraus abgeleitet lassen sich die folgenden Überprüfungen anstellen:

Sei E ein Principal

Falls E ein Agentensystem ist:

Falls E eine Agenteninstanz ist:

Da die Attribute Authority, Implementierer, Agentensystem selbst wieder vom Typ Principal sind, lassen sich auch rekursiv fortgesetzte Bedingungen über die Attribute formulieren:

Weiterhin ist die boolsche Verknüpfung solcher Bedingungen wünschenswert, um komplexere Regeln formulieren zu können:

Eine weitere Flexibilisierung in der Formulierung von Regeln wird dann erreicht, wenn Attribute des Eigentümers einer Policy über symbolische Konstanten für die Vergleichsoperationen zu Verfügung gestellt werden. Sei MEINE_AUTHORITY nun die symbolische Konstante für den Eigentümer der Entität, die die Policy auswertet, dann könnte eine Regel lauten:

Nachdem jetzt die Bedingungen formuliert werden können ist es möglich anhand dieser Bedingungen Erlaubnisse für die Benutzung einer Schnittstelle zu erteilen, indem man in Abhängigkeit von Bedingungen Aktionen erlaubt:


Die hier informell vorgestellten Überprüfungen markieren das Minimum dessen, das benötigt wird, um Regeln formulieren zu können, die gleichzeitig

Eine Einschränkung des Umfangs der Formulierungsmöglichkeiten ist zwar denkbar, bedeutet aber immer, daß Teilaspekte sicherheitsrelevanter Informationen nicht überprüft werden können oder die Flexibilität in der Formulierung von Regeln eingeschränkt wird.

5.8.3.2 Adressierung von Aktionen in Policies

Mit den bis hierhin vorgestellten Mitteln lassen sich die Entitäten flexibel adressieren. Gleiches gilt bis dato aber nicht für Aktionen, diese können nur nach ihrer Art benannt werden. Häufig genügt es aber nicht nur die Aktion ihrem Typus nach zu betrachten, auch die konkrete Belegung der Parameter einer Aktion können die Entscheidung über die Durchführung der Aktion beeinflussen.

Beispielsweise sei eine Aktion ErzeugeAgenteninstanz mit dem Parameter Agentengattung betrachtet. Soll nun nur die Erzeugung von Instanzen bestimmter Agentengattungen gestattet werden, so besteht keine Möglichkeit dies zu formulieren.


Betrachtet man parametrisierte Aktionen näher, so zerfallen diese in zwei Kategorien:

Die erste Kategorie läßt sich auf Aktionen ohne Parameter abbilden, indem man für jede Parameterbelegung eine eigene Aktion definiert.

Beispiel: Eine Aktion Dateizugriff mit dem Parameter Zugriffsart und dessen möglichen Belegungen Lesen, Schreiben, LesenUndSchreiben kann auf die Aktionen DateiLesen, DateiSchreiben und DateiLesenSchreiben abgebildet werden.


Ist die Menge der Parameterbelegungen aber nicht endlich5.2, werden wiederum Entscheidungsregeln benötigt, die es ermöglichen eine konkrete Parameterbelegung zu analysieren.

Beispiel: Eine Aktion SystemkommandoAusführen mit dem Parameter Kommando vom Typ String, kann nicht in einzelne diskrete Aktionen zerlegt werden, da die Menge der möglichen Belegungen von Kommando praktisch nicht aufzählbar ist.

Entscheidungsregeln für Parameterbelegungen für den allgemeinen Fall, im voraus, auch nur informell, zu spezifizieren, ist aber nicht möglich, da hierfür die Semantik der einzelnen Parameter bekannt sein müßte. Eine Spezifikation solcher Entscheidungsregeln muß demnach immer individuell für den Einzelfall erstellt werden.

5.8.3.3 Realisierung von Policies

Faßt man nun die Erkenntnisse über die Adressierung von Aktionen in Policies mit jenen über die in Abschnitt 5.8.1 gemachte Analyse über eine sinnvolle Durchführung der Autorisierung zusammen, ergibt sich folgendes Bild:

In Agentensystemen ist eine sinnvolle Autorisierung von Aktionen nur im Folgenden Umfang möglich:

Im Rahmen der Entscheidungshierarchie kann dann durch Agenteninstanzen eine weitere, individuelle Autorisierung der eigenen Methoden erfolgen.


Generische Policies können also nur Aktionen behandeln, die entweder keine Parameter besitzen oder die Betrachtung der Parameter außen vorlassen.

Um eine solche Policy nun konkret formulieren zu können und damit auch eine plattformunabhängige Instanz zum Management von Policies zu schaffen, ist die Schaffung einer formale Sprache denkbar, die folgende Eigenschaften besitzt:

Um auch die individuellen Semantiken der einzelnen Schnittstellen behandeln zu können, d.h. konkret Methoden inklusive ihrer Parameter zu betrachten, sollte die Policy-Sprache modular erweiterbar sein.

Die konkrete Spezifikation einer solchen Policy-Sprache, die all diese Eigenschaften unterstützt, muß im Rahmen dieser Arbeit unterbleiben und könnte Gegenstand einer weiteren Arbeit werden.

5.8.3.4 Konkrete Policies

Neben einer Policy für die Benutzung der einzelnen Schnittstellen werden aber weitere Entscheidungen notwendig, die in eigene Policies formuliert werden können:

Somit seien nun die folgenden Policies konkret definiert:

Alle drei genannten Policy-Typen müssen durch ein Agentensystem implementiert werden, Authentication Policy und Permission Policy können optional auch zusätzlich durch Agenteninstanzen erweitert werden. Dann wird die Priorisierung der Entscheindungen nach Abschnitt 5.8.2 vorgenommen.


Die Permission Policy bestimmt dabei im Fall eines Agentensystems über die Erlaubnis zur Benutzung der eigenen Methode, der Methode der Schnittstelle zum Endsystem und über den Zugriff auf Methoden eines Agenten. Die Permission Policy einer Agenteninstanz dagegen ist nur für eigene Methoden zuständig, die an ihren Schnittstellen angeboten werden.

5.8.4 Der Entscheidungsprozeß

Die Eingangs im vorangegangenen Kapitel gestellte Frage

``Darf eine Entität E eine Aktion A durchführen?''

kann jetzt mit den vorgestellten Mitteln vollständig beantwortet werden.

Wird von einer Entität E eine Anfrage zur Durchführung einer Aktion A an eine Entität F gestellt, so authentisiert F die anfragende Entität mittels der Authorization Policy und den in Abschnitt 5.5.3 geschilderten Verfahren. Wenn E authentisiert werden konnte, dann überprüft F anhand der Permission Policy, ob die Aktion ausgeführt werden darf.

Wird von der Permission Policy die Ausführung der Aktion genehmigt, so wird die Aktion ausgeführt. Kann die anfragende Entität nicht authentisiert werden oder stellt die Permission Policy einen negativen Bescheid aus, so wird die Aktion nicht durchgeführt. Außerdem wird die Entität, die die Aktion ausführen wollte, darüber informiert, daß die Aktion nicht ausgeführt wurde. Ob und wie ausführlich eine Begründung für die Ablehnung beigefügt wird, ist davon abhängig, inwieweit man einem potentiellen Angreifer Hinweise für weitere Angriffe geben möchte, bzw. hängt auch mit der Benutzerfreundlichkeit des Systems ab; näheres hierzu soll an dieser Stelle nicht betrachtet werden.

Wird die Ausführung einer Aktion nicht gestattet, sind noch weitere Sanktionen denkbar. Begeht z.B. eine lokale Agenteninstanz einen ``schwerwiegenden'' Sicherheitsverstoß, so wäre beispielsweise denkbar, daß dieser terminiert wird. Die Art der Sanktionen kann optional wiederum durch eine Policy bestimmt werden.



Fußnoten

... endlich5.2
Tatsächlich sind in realen Systemen die Mengen der Belegungen immer endlich, da nur eine begrenzte Menge physikalischen Speichers zu Verfügung steht, aber schon 1 kByte kann ca. \( 2*10^5 \) verschiedene Belegungen annehmen

next up previous contents
Nächste Seite: 5.9 Delegation Aufwärts: 5. Ein Sicherheitsmodell für Vorherige Seite: 5.7 Sicherung der Daten   Inhalt
harald@roelle.com