next up previous contents index
Next: 2.5 Dienst-Management Up: 2.4 Policies Previous: Diverses

2.4.4 Ein allgemeines Policy-Modell

Die Notwendigkeit von Policies im Allgemeinen ist bereits bekannt. Derzeit arbeiten einige Gruppen an konkreten Vorschlägen für ein allgemeines Policy-Modell. Einer dieser Vorschläge kommt von Elleson, Ed, Strassner, Weiss und Westerinen  . Die Arbeit lag zum Zeitpunkt der Erstellung dieses Kapitels als Internet Draft vor.

Die hier beschriebene Version dieses Vorschlages beruht auf dem Draft vom März 1999 (strassner-policy-terms-01) inzwischen ist diese Version nicht mehr verfügbar.


  
Abbildung 2.3: Allgemeines Policy-Modell

Das allgemeine Policy-Modell ist in Abb. 2.3 dargestellt. Es ist nach dem Draft [ESM99c] erstellt.

Demnach gibt es ein Management-Tool , welches einen Repository Client  besitzt. Dieser greift mittels eines Repository Access Protocols  (dabei kann es sich um ein proprietäres Protokoll handeln) auf einen Datenbestand zu, der auf diesem Wege verwaltet wird.

Auf der Abbildung 2.3 unten rechts befinden sich PIN (Policy Ignorant Nodes) . Dabei handelt es sich um Programme und Services, die nicht mit Policies zu beeinflussen sind, da sie Policies generell nicht unterstützen oder ein inkompatibles Policy-System unterstützen.

PEP (Policy Enforcement Points) , sind Programme, die mit Policies beeinflußt werden können und Policies umsetzen können. Sie kommunizieren mit einem PDP (Policy Decision Point) , der seinerseits einen Repository Client hat, mit dem er auf den vom Managementsystem gepflegten Datenbestand zugreifen kann. Dabei ist vorgesehen, daß das Repository Access Protocol, welches zwischen Repository Client und Policy Repository sowie zwischen Policy Repository und Management Tool verwendet wird, jeweils identisch sind. Es muß aber nicht mit dem Policy Protocol, welches zwischen PEP und PDP verwendet wird, identisch sein.

Im Policy Decision Point werden ausschließlich Entscheidungen getroffen. Das Ergebnis wird dann dem Policy Enforcement Point mitgeteilt. Nur dieser besitzt die Implementierung zur Durchsetzung der Policy-Entscheidung.

 

  
Abbildung 2.4: Policy-Nutzung

Das allgemeine Vorgehen bei einer Policy-Entscheidung zeigt Abb 2.4. Ein PEP erhält ein Ereignis, welches eine policy-basierte Handlung erfordert. Der PEP stellt an den PDP eine konkrete Anfrage, was er tun soll, bzw. wie die dazugehörige Policy-Entscheidung aussieht. Der PDP wertet die ihm vorliegenden Policies aus und trifft danach eine Entscheidung. Diese übermittelt er an den PEP, der sie umsetzen kann.

 Das Policy-Objekt-Modell ist in Abb 2.5 dargestellt. Es handelt sich um ein komplettes Objektmodell einer Policy. Dieses Modell beinhaltet sechs Hauptklassen.


  
Abbildung 2.5: Policy-Object-Modell

Die Klasse Policy enthält vier Attribute: commonName (cn), caption, description und policyKeywords. (siehe Abb 2.6)


  
Abbildung 2.6: Policy-Klassen Modell

Klasse policy
]Klasse policy
cn
ist ein benutzerlesbarer Name. Dabei handelt es sich lediglich um eine menschenlesbare Bezeichnung, welche nicht eindeutig sein muß. Sie ist typischer Weise lediglich in einem begrenzten Bereich eindeutig.
caption
wird verwendet, um eine einzeilige Beschreibung des entsprechenden Objektes vorzuhalten.

description
enthält dann die ausführliche Beschreibung des Objekts.

policyKeywords
enthält eine Reihe von Schlüsselworten, die vom Administrator gegeben werden, um eine einfachere und genauere Zuweisung des Objekts an einen client zu unterstützen. Beispiele für solche Schlüsselworte sind: 'Engineering', 'Billing', 'Review in December 1999', 'UNKNOWN', 'CONFIGURATION', 'USAGE', 'SECURITY', 'SERVICE', 'MOTIVATIONAL', 'INSTALLATION', und 'EVENT'.

Die Klasse Policy  hat im Original-Modell zwei direkte Unterklassen: PolicyRule  und PolicyGroup . Im oben beschriebenen Management-Modell wäre es allerdings denkbar die Klasse PolicyGroup  anstatt der Klasse Group  zu verwenden, bzw. umgekehrt. Group  ist eine Unterklasse der Klasse Verwaltung .

 Die Klasse PolicyGroup  enthält im Modell Instanzen der Klasse PolicyGroup  oder PolicyRules . Sie ist als reine Container-Klasse gedacht (siehe Abb. 2.7. Dabei ist zu beachten, daß die Klasse PolicyGroup  entweder PolicyRules  oder PolicyGroups  enthalten darf, aber nicht beide.


  
Abbildung 2.7: Containerklasse PolicyGroup

Klasse policyGroup
]Klasse policyGroup Diese Klasse hat als Attribut einen Namen, der wie cn der Klasse policy  lediglich zur leichteren Benennung durch Menschen zu verwenden ist.

Die Klasse policyRule  enthält drei Unterklassen: policyCondition , PolicyTimePeriod und PolicyAction.

Eine policRuleCondition ist in der Regel entweder ein Set, welches mit 'OR' verbunden ist und jede Einzelregel innerhalb dieses Sets mit 'AND' verbunden ist (Disjunktiv Nornmalform (DNF)) oder ein Set, welches mit 'AND' verbunden ist und jede Einzelregel innerhalb dieses Sets mit 'OR' verbunden ist (Konjunktiv Normalform (KNF)) dargestellt.

Einzelne Regeln können zusätzlich negiert sein. Eine policyRule  darf dann und nur dann ausgeführt werden, wenn ihre Auswertung TRUE ergibt - egal ob es sich um KNF oder DNF handelt.

Die genaue Regel, wann etwas auszuführen ist, wird in der Unterklasse policyCondition  abgelegt. In der Unterklasse policyRule  ist festgelegt, was im Falle einer erfüllten policyCondition  zu tun ist.

  Die Unterklasse policyTimePeriodCondition  beinhaltet eine Angabe über den Zeitraum, an dem diese spezielle policyRule  gültig ist.

Klasse policyRule
]Klasse policyRule Die Klasse policyRule  hat folgende Attribute:

policyRuleName
enthält einen benutzerfreundlichen Namen.
policyRuleEnabled
zeigt an, ob dieses spezielle policyRule gerade aktiv ist oder nicht (d.h. ob es ausgewertet werden soll oder nicht.) Die Idee dahinter ist die, daß man einzelne Conditions temporär entfernen kann ohne sie wirklich aus dem Regelset herauszunehmen und später wieder einzugeben.

policyRuleConditionList
ist eine Liste, in der die policyConditions, die mit diesem policyRule verbunden sind, aufgelistet sind.

policyRuleConditionList
beinhaltet eine ungeordnete Liste von Pointern, die ein Set von Policy Conditions, die mit dieser Policy Regel assoziiert werden enthält.

policyRuleActionList
enthält eine unsortierte Liste mit Strings der Form: 'n:DN' (DN = distinguished name; entspricht einer Instanz in einem Directory), welches eine policyAction  beschreibt, die mit diesem policyRule  assoziiert ist. mit 'n' wird eine Priorität der einzelnen Regeln zueinander angegeben, je niedriger der Wert von 'n' desto niedriger die Priorität der Regel. Diese Angabe ist wichtig, wenn es zu Konflikten kommt, bei denen sich die Ausführung einzelner Aktionen gegenseitig widersprechen oder gar unmöglich machen würden.

policyRuleValidityPeriodList
enthält eine ungeordnete Liste mit Pointern auf eine oder mehrere policyTimePeriodConditions , die anzeigen, wann die policyRule  aktiv ist und wann nicht.

policyRuleUsage
ist ein 'free-form' String, der angibt, wie diese Policy zu verwenden ist.

policyRulePriority
enthält eine nichtnegative Integer Zahl, die angibt wie diese policyRule  gegenüber anderen policyRules zu priorisieren ist.

policyRuleMandatory
enthält, ob eine Auswertung (und das Durchführen möglicher Aktionen) dieses policyRule  'mandatory' ist oder nicht.

policyRuleSequencedActions
gibt dem Policy Administrator die Möglichkeit anzugeben, wie die Reihenfolge der Aktionen, die mit dieser policyRule  assoziiert sind, zu interpretieren ist. Drei Werte sind standardmäßig unterstützt: mandatory (Aktionen in der angegebenen Reihenfolge durchführen oder gar keine Aktionen durchführen), recommended (Aktionen nach Möglichkeit in der angegebenen Reihenfolge durchführen oder, wenn dies nicht möglich ist, in einer anderen Reihenfolge abarbeiten), dontCare (Aktionen durchführen, egal in welcher Reihenfolge)

Der Sinn der Klasse policyCondition  ist es, festzulegen wann das Set policyActions  auszuführen oder nicht auszuführen ist.

Klasse policyCondition
]Klasse policyCondition Die Klasse hat ein einzelnes Attribut policyConditionName, welches lediglich einen benutzerfreundlichen Namen enthält.

Die Klasse policyTimePeriodCondition  liefert eine Möglichkeit anzugeben, in welchen Zeitabschnitten diese spezielle policyRule  aktiv ist und somit auf das System wirken kann. Ist in einem policyRule  keine policyTimePeriodCondition  angegeben, wird davon ausgegangen, daß diese policyRule  immer aktiv sein soll.

policyTimePeriodCondition  ist als direkte Unterklasse der Klasse policyCondition  definiert. Sie enthält bis zu fünf Attribute, die Zeitperioden definieren. Ist ein Attribut nicht explizit angegeben, wird auch hier wieder davon ausgegangen, dass es die Wirkungszeit nicht einschränkt, also immer gültig ist.

Klasse policyTimePeriodCondition
]Klasse policyTimePeriodCondition
ptpConditionTime
gibt die Zeitdauer als Datumsfolge an: 'Startdatum und Zeit':'Enddatum und Zeit', das erste Datum gibt den Beginn der Zeitperiode an, das zweite das Ende (das zweite Datum muß später sein als das erste). Das Datum wird dabei wie folgt ausgedrückt: yyyymmddhhmmss. 19990901121500:19990902000000 bezeichnet also den Zeitraum vom 01. September 1999 12:15:00 Uhr bis zum 02. September 1999 00:00:00 Uhr.
ptpConditionMonthOfYearMask
gibt an, zu welchen Monaten innerhalb des angegebenen Zeitraumes der ptpConditionTime die Regel gültig sein soll. Sie wird durch 12 Stellen dargestellt, die entweder 0 oder 1 sind, wobei 0 bedeutet, daß die Regeln nicht gelten und 1 bedeutet, daß das Regelset aktiv sein soll: 110011100011 entspricht zum Beispiel der Zeit im Jahr, an der an der LMU München Vorlesungen gehalten werden.

ptpConditionDayOfMonthMask
gibt den genauen Tag innerhalb eines Monats an. Der String enthält 31 Felder, die mit 0 und 1 bezeichnet werden. 1110000000000000000000000000000 bezeichnet eine Regel, die nur an den ersten drei Tagen eines Monats aktiv ist.

ptpConditionDayOfWeekMask
wird zum genauen Benennen des Wochentages verwendet. Begonnen wird an Montag und bis Sonntag gezählt: 0010011 entspricht einer Gültigkeit am Mittwoch und am Wochenende.

ptpConditionTimeOfDayMask
ist zur genaueren Angabe von Zeitperioden im Stundenbereich. Es wird eine Start- und eine Endzeit angegeben, welche mit ':' voneinander getrennt sind: 121500:140000 entspricht einer regelmäßigen Periode von 12:15:00 Uhr bis 14:00:00 Uhr.

ptpConditionTimeZone
gibt an, welche Zeitzone zugrunde gelegt werden soll, ist nichts angegeben, wird die lokale Zeit angenommen.

Die Spezifikation [ESM99c] beinhaltet noch einige zusätzliche Klassen, welche hier nicht erwähnt sind. Diese dienen der zusätzlichen Gruppierung einzelner policyAction und policyCondition-Klassen. Die daraus entstehende Komplexität ist für den hier vorgesehenen Verwendungszweck allerdings nicht nötig.


next up previous contents index
Next: 2.5 Dienst-Management Up: 2.4 Policies Previous: Diverses
Copyright Munich Network Management Team