next up previous contents
Nächste Seite: 7.8 Webserver Agent Aufwärts: 7. Realisierung Vorherige Seite: 7.6 Laufzeitumgebung für Agenteninstanzen   Inhalt

Unterabschnitte

7.7 Autorisierung

In der vorliegenden Implementierung konnte der Permission Manager nicht vollständig implementiert werden, da noch keine Spezifikation der konkreten Policy Sprache für die Permission Policy vorliegt. Entsprechend können momentan keine dynamischen Entscheidungen anhand der Identität oder anderer Attribute der zu autorisierenden Entität durchgeführt werden.

Stattdessen wurde die Standard-Implementierung der Java System Policy benutzt. Somit konnte nur die Autorisierung anhand der Gattung einer Agenteninstanz realisiert werden.


7.7.1 Erweiterung von Java Permissions

Zur Demonstration der Möglichkeit der Implementierung eigener Permission-Klassen wurden vier Klassen implementiert. Diese bestimmen, ob eine Agenteninstanz berechtigt ist, Klassen zu definieren bzw. sie zu benutzen. Diese Permissions werden durch agentSystem.AgentClassloader ausgewertet.

agentSystem.ClassDenyUsePermission:
Legt fest, daß eine Klasse bzw. eine ganze Package-Hierarchie nicht benutzt werden darf.

agentSystem.ClassAllowUsePermission:
Erlaubt die Benutzung einer Klasse bzw. einer ganzen Package-Hierarchie

agentSystem.ClassDenyDefinePermission:
Legt fest, daß eine Klasse bzw. eine ganze Package-Hierarchie nicht definiert werden darf.

agentSystem.ClassAllowDefinePermission:
Erlaubt die Definition einer Klasse bzw. einer ganzen Package-Hierarchie

Der Einsatz dieser Permission-Klassen soll nun anhand des Beispiels der SNMP-Bibliothek aus 6.7.2 erläutert werden. Hier werden zwei Fälle unterschieden:

  1. Die SNMP-Bibliothek com.one_company.snmp ist Teil der Agentengattung com.other_company.SNMP_Agent, d. h. die Agenteninstanz muß die Bibliothek in ihrem Namensraum definieren dürfen:

    
    grant codeBase "systemresource://com/other_company/SNMP_Agent"
    {
        permission ClassAllowDefinePermission "com.one_company.snmp.-"
        permission ClassAllowUsePermission "com.other_company.snmp.-"
    }
    

  2. Die SNMP-Bibliothek com.one_company.snmp ist Teil der Installation des Agentensystems, d. h. die Agenteninstanz darf die Bibliothek zwar benutzen, diese aber nicht neu definieren:

    
    grant codeBase "systemresource://com/other_company/SNMP_Agent"
    {
        permission ClassDenyDefinePermission "com.one_company.snmp.-"
        permission ClassAllowUsePermission "com.other_company.snmp.-"
    }
    

7.7.2 Überwachung der Endsystemschnittstelle

Jeder Agenteninstanz wird eine eigene Protection Domain zugewiesen. Die Code Source der Protection Domain, mit der diese im System Policy File adressiert wird lautet:

systemresource://gattungsname

Dabei ist gattungsname das Package der Agentengattung.

Über die Java System Policy können nun Rechte über beliebige Permission-Objekte vergeben werden. Soll nun beispielsweise allen Agentengattungen aus dem Package de.unimuenchen.informatik.mnm.masa.agent das Recht eingeräumt werden, die Property testProperty auszulesen, ist folgende Zeile in das System Policy File einzufügen:


grant codeBase "systemresource://de/unimuenchen/informatik/mnm/masa/agent/-"
{
    permission java.util.PropertyPermission "testProperty", "read";
}

7.7.3 Überwachung der CORBA-Methoden

Die CORBA-Methoden des Agentensystems werden überwacht, indem zu Beginn jeder Methode der Permission Manager befragt wird, ob die Aktion erlaubt werden darf oder nicht (vgl. 6.7.2).

Eine Überwachung der Schnittstellen der Agenteninstanzen konnte nicht implementiert werden, da Orbacus hierzu keine Schnittstellen bereitstellt (vgl. 7.1.2, 6.7.2).


next up previous contents
Nächste Seite: 7.8 Webserver Agent Aufwärts: 7. Realisierung Vorherige Seite: 7.6 Laufzeitumgebung für Agenteninstanzen   Inhalt
harald@roelle.com