6.4 Erstellen von Berechtigungen in XML mit iManager

Zum besseren Verständnis der wichtigsten Bestandteile einer Berechtigung lohnt sich ein Blick auf die Berechtigungen und Richtlinien in einem der mit Unterstützung für Berechtigungen vorkonfigurierten Treiber: Active Directory (AD). Dazu sollten Sie sich die von Novell mitgelieferte DTD (Dokumenttypdefinition) für Berechtigungen sowie einige XML-Beispiele für das Erstellen von Berechtigungen ansehen, die auf der DTD basieren.

Dieser Abschnitt umfasst:

6.4.1 Vom Active Directory-Treiber bei der Aktivierung von Berechtigungen beigesteuerte Komponenten

Die Struktur des AD-Treibers wird bei Aktivierung der Unterstützung für Berechtigungen folgendermaßen verändert:

  • Hinzufügen des Attributs „DirXML-EntitlementRef“ zum Treiberfilter. Das Attribut „DirXML-EntitlementRef“ gestattet es dem Treiberfilter, den Datenfluss auf Berechtigungsaktivitäten zu überwachen.
  • Erstellen einer Benutzerkontoberechtigung. Über die Benutzerkontoberechtigung wird dem Benutzer in Active Directory ein Konto erteilt oder entzogen. Wenn das Konto erteilt wird, erhält der Benutzer ein aktiviertes Anmeldekonto. Wenn das Konto entzogen wird, wird das Anmeldekonto in Abhängigkeit von der Treiberkonfiguration deaktiviert oder gelöscht.
  • Erstellen einer Gruppenmitgliedschaftsberechtigung. Über die Gruppenberechtigung wird die Mitgliedschaft in einer Gruppe in Active Directory erteilt oder entzogen. Die betreffende Gruppe muss einer Gruppe im Identitätsdepot zugeordnet sein. Wenn die Mitgliedschaft entzogen wird, wird der Benutzer aus der Gruppe entfernt. Die Gruppenmitgliedschaftsberechtigung wird nicht auf dem Herausgeberkanal erzwungen. Wenn ein Benutzer durch ein externes Werkzeug zu einer kontrollierten Gruppe in Active Directory hinzugefügt wird, wird der Benutzer nicht durch den Treiber entfernt. Zudem gilt, dass der AD-Treiber nichts unternimmt, wenn die Berechtigung nicht entzogen, sondern vom Benutzerobjekt entfernt wird.
  • Erstellen einer Exchange-Postfach-Berechtigung. Die Gruppenberechtigung erteilt oder entzieht dem Benutzer in Microsoft Exchange ein Exchange-Postfach.
  • Hinzufügen von Berechtigungsinformationen zu vielen Richtlinien.

Die folgenden Richtlinien enthalten zusätzliche Regeln, die für das Funktionieren von Berechtigungen erforderlich sind:

  • InputTransform (Treiberebene). Die Regel „Check Target Of Add Association For Group Membership Entitlements“ in dieser Richtlinie überprüft das Ziel der Aktion “add-association” auf vorhandene Gruppenmitgliedschaftsberechtigungen. Gruppenmitgliedschaftsberechtigungen, die für in Active Directory erstellte Benutzer gelten, können erst verarbeitet werden, nachdem der Benutzer erfolgreich erstellt wurde. „add-association“ signalisiert, dass vom Treiber ein Objekt in Active Directory erstellt wurde. Wenn das Objekt darüber hinaus für eine Gruppenberechtigungsverarbeitung vorgemerkt ist, wird diese Verarbeitung jetzt ausgeführt.
  • „Event Transform“ (Herausgeberkanal). Die Regel „Disallow User Account Delete“ in dieser Richtlinie bewirkt, dass das Löschen eines Benutzerkontos im Identitätsdepot nicht zulässig ist. Bei Verwendung der Benutzerkontoberechtigung werden die verwalteten Benutzerkonten durch die Berechtigung im Identitätsdepot kontrolliert. Ein Löschvorgang in Active Directory löscht nicht das kontrollierende Objekt im Identitätsdepot. Durch eine spätere Änderung des Objekts im Identitätsdepot oder eine Zusammenführungsoperation könnte das Konto in Active Directory neu erstellt werden.
  • Befehl (Abonnentenkanal). Die Befehlsrichtlinie enthält folgende Regeln, die für Berechtigungen relevant sind:
    • Die Regel „User Account Entitlement Change (Delete Option)“. Über die Benutzerkontoberechtigung wird dem Benutzer in Active Directory ein aktiviertes Konto erteilt. Durch Entziehen der Berechtigung wird das Konto in Active Directory deaktiviert oder gelöscht, in Abhängigkeit von dem Wert, den Sie für die globale Variable Bei Entzug der Kontoberechtigung gewählt haben. Diese Regel wird ausgeführt, wenn sich die Berechtigung ändert und Sie die Option „Löschen“ gewählt haben.
    • Die Regel „User Account Entitlement Change (Disable Option)“. Über die Benutzerkontoberechtigung wird dem Benutzer in Active Directory ein aktiviertes Konto erteilt. Durch Entziehen der Berechtigung wird das Konto in Active Directory deaktiviert oder gelöscht, in Abhängigkeit von dem Wert, den Sie für die globale Variable Bei Entzug der Kontoberechtigung gewählt haben. Diese Regel wird ausgeführt, wenn sich die Berechtigung ändert und Sie die Option „Deaktivieren“ gewählt haben.
    • Die Regel „Check User Modify for Group Membership Being Granted or Revoked“.
    • Die Regel „Check User Modify for Exchange Mailbox Being Granted or Revoked“.
  • Entsprechung (Abonnentenkanal). Dies ist die Regel „Account Entitlement: Do Not Match Existing Accounts“ für diese Richtlinie. Bei Verwendung der Benutzerkontoberechtigung mit der Identity Manager-Benutzeranwendung oder mit funktionsbasierten Berechtigungen werden Konten durch Erteilen oder Entziehen der Berechtigung erstellt und gelöscht (oder deaktiviert). Die Standardrichtlinie gilt nicht für ein entsprechendes, in Active Directory bereits vorhandenes Konto, wenn dem Benutzer kein Konto in Active Directory zusteht. Bearbeiten oder entfernen Sie diese Regel, wenn die Berechtigungsrichtlinie für entsprechende Konten in Active Directory gelten soll. Dadurch kann das Konto in Active Directory gelöscht oder deaktiviert werden.
  • Erstellung (Abonnentenkanal). Die Erstellungsrichtlinie enthält folgende Regeln, die für Berechtigungen relevant sind:
    • „Account Entitlement: Block Account Creation When Entitlement Not Granted“. Bei Verwendung der Benutzerkontoberechtigung mit der Identity Manager-Benutzeranwendung oder mit funktionsbasierten Berechtigungen werden Konten nur für Benutzer erstellt, denen die Kontoberechtigung explizit erteilt wurde. Diese Regel legt ein Veto gegen die Erstellung des Benutzerkontos ein, wenn die Berechtigung nicht erteilt wurde.
    • „Identity Vault Accounts Are Enabled if Login Disabled Does Not Exist“.
    • „Prepare To Check Group Entitlements After Add“. Gruppenberechtigungen werden nach dem Hinzufügen des Objekts verarbeitet, weil das hinzugefügte Objekt vorhanden sein muss, um zu einer Gruppe hinzugefügt werden zu können. Das erfolgte Hinzufügen des Objekts wird durch eine Operationseigenschaft gekennzeichnet, die bei Abschluss des Hinzufügens während der Eingabetransformation überprüft wird.
    • „Signal the Need To Check Exchange Entitlements After the Add“.
    • „Map User Name to Windows Logon Name“. Wenn „userPrincipalName“ so konfiguriert ist, dass der Wert dem Benutzernamen in eDirectory entsprechen soll, setzen Sie „userPrincipalName“ auf den eDirectory-Objektnamen plus den Namen der Active Directory-Domäne.

Mit dem folgenden Verfahren können Sie sich in iManager den XML-Code für jede Richtlinie ansehen:

  1. Wählen Sie Identity Manager > Identity Manager-Überblick.
  2. Wechseln Sie zu dem Treibersatz, der den Treiber enthält, und klicken Sie anschließend auf Suchen.
  3. Wählen Sie auf der Seite „Identity Manager-Überblick“ das Treiberobjekt im angezeigten Treibersatz aus.
    Beschreibung: Auswählen eines Treibers
  4. Doppelklicken Sie im Treibersatz auf den gewünschten Treiber, um die Treiberseite zu öffnen. Klicken Sie in der Treibermitte auf das Symbol Alle Richtlinien anzeigen (rot eingekreist).
    Beschreibung: Auswählen der Option „Alle Richtlinien anzeigen“
  5. Wenn Sie auf der Seite „Alle Richtlinien anzeigen“ eine Richtlinie auswählen, können Sie sich die Bedingungen und Aktionen ansehen, aus denen ist die Richtlinie zusammengesetzt.
    Beschreibung: Anzeigen von Richtlinienregeln
  6. Wählen Sie zum Anzeigen des eigentlichen XML-Codes hinter den Richtlinien im Dropdown-Listenfeld die Option XML bearbeiten aus. (Standardmäßig ist in diesem Listenfeld die Option „Identity Manager-Richtlinie“ aktiviert.) Informationen zum Erstellen und Bearbeiten von Richtlinien finden Sie im Policy Builder and Driver Customization Guide (Handbuch zum Richtlinien-Builder und zur Treiberanpassung). Das Erstellen von Richtlinien für einen bestimmten Treiber ist im dazugehörigenhttp://www.novell.com/documentation/dirxmldrivers/index.html Identity Manager-Treiberhandbuch beschrieben.
  7. Führen Sie zum Anzeigen der bei entsprechend vorkonfigurierten Treibern verfügbaren Berechtigungen (in diesem Beispiel: Active Directory) Schritt 1 bis Schritt 4 durch. Wählen Sie dabei in der Treibermitte das Symbol Alle Berechtigungen anzeigen (rot eingekreist).
    Beschreibung: Anzeigen aller Berechtigungen
  8. Klicken Sie auf der Seite „Berechtigungen verwalten“ auf den Namen der Berechtigung, um die Berechtigung im XML-Viewer zu öffnen. Klicken Sie zum Bearbeiten des Berechtigungscodes auf XML-Bearbeitung aktivieren.

Der Active Directory-Treiber mit aktivierten Berechtigungen enthält drei Berechtigungen: „Benutzerkonto“, „Gruppe“ und „Exchange Mail“.

Abbildung 6-1 Im AD-Treiber vorkonfigurierte Berechtigungen

Sie können sich Beispiele aus dem XML-Code für diese Berechtigungen in Schnitt 6.4.6, Beispielberechtigungen zum leichteren Erstellen eigener Berechtigungen ansehen.

6.4.2 Die Berechtigungs-Dokumenttypdefinition (DTD) von Novell

Einige Berechtigungen sind bei Treibern mit aktivierter Unterstützung für Berechtigungen bereits vordefiniert. Sie können diese Berechtigungen verwenden oder eigene Berechtigungen in iManager oder Designer erstellen. Die folgende Berechtigungs-DTD von Novell dient als Beispiel, aus dem Sie eigene Berechtigungen ableiten können.

An die nachfolgende Erklärung der DTD schließen sich vier Beispiele für das Erstellen von Berechtigungen in diesem XML-Format mit iManager an. Wenn Ihnen die XML-Formatierung nicht liegt, können Sie in Designer Ihre Berechtigungen mit dem Assistenten für Berechtigungen auf einfachere Weise erstellen.

Berechtigungs-DTD von Novell

<!-*****************************************************************->
<!-- DirXML Entitlements DTD 
<!-- Novell Inc.
<!-- 1800 South Novell Place
<!-- Provo, UT 84606-6194
<!-- Version=1.0.0
<!-- Copyright 2005 Novell, Inc. All rights reserved -->
<!--************************************************************* -->
<!--
	Entitlement definition stored in the XmlData attribute of a
      DirXML-Entitlement object.
-->
<!ELEMENT entitlement (values?)>
<!ATTLIST entitlement
	conflict-resolution (priority | union) "priority"
	display-name CDATA #REQUIRED
	description CDATA #REQUIRED
>
<!ELEMENT values (query-app | value+)?>
<!ATTLIST values
	multi-valued (true | false) "true"
>
<!ELEMENT value (#PCDATA)>
<!ELEMENT query-app (query-xml, result-set)>
<!ELEMENT query-xml ANY>
<!ELEMENT result-set (display-name, description, ent-value)>
<!ELEMENT display-name(token-attr | token-src-dn | token-association)>
<!ELEMENT ent-value (token-association | token-src-dn | token-attr)>
<!ELEMENT description (token-association | token-src-dn | token-attr)>
<!ELEMENT token-association EMPTY>
<!ELEMENT token-attr EMPTY>
<!ATTLIST token-attr
	attr-name CDATA #REQUIRED
>
<!ELEMENT token-src-dn EMPTY>
<!--
	Entitlement reference stored in the DirXML-EntitlementRef attribute 	of a DirXML-EntitlementRecipient or a DirXML-SharedProfile object.
-->
<!ELEMENT ref (src?, id?, param?)>
<!ELEMENT param (#PCDATA)>
<!ELEMENT id (#PCDATA)>
<!ELEMENT src (#PCDATA)>
<!--
    Entitlement result stored in the DirXML-EntitlementResult attribute of a DirXML-EntitlementRecipient object.
-->
<!ELEMENT result(dn, src, id?, param?, state, status, msg?,timestamp)>
<!ELEMENT dn (#PCDATA)>
<!ELEMENT state (#PCDATA)>
<!ELEMENT status (#PCDATA)>
<!ELEMENT msg ANY>
<!ELEMENT timestamp (#PCDATA)>
<!--
   Cached query results stored in the DirXML-SPCachedQuery attribute of a DirXML-Entitlement object.
-->
<!ELEMENT items (item*)>
<!ELEMENT item (item-display-name?, item-description?, item-value)>
<!ELEMENT item-display-name (#PCDATA)>
<!ELEMENT item-description (#PCDATA)>
<!ELEMENT item-value (#PCDATA)>
<!--
   Representation of a DirXML-EntitlementRef within the DirXML Script and within the operation-data of an operation in an XDS document.
-->
<!ELEMENT entitlement-impl (#PCDATA)>
<!ATTLIST entitlement-impl
	name CDATA #REQUIRED
	src CDATA #REQUIRED
	id CDATA #IMPLIED
	state (0 | 1) #REQUIRED
	src-dn CDATA #REQUIRED
	src-entry-id CDATA #IMPLIED
>

6.4.3 Erläuterung der Berechtigungs-DTD

Die Berechtigungs-DTD besteht aus fünf Teilen: Definition, Referenz, Ergebnis, gecachte Abfrage und interne Referenzinformationen. Der Header ist optional und enthält lediglich einen Kommentar. Die Kopfzeile der Berechtigungsdefinition in der DTD lautet:

<!-- Entitlement definition stored in the XmlData attribute of a DirXML-Entitlement object. -->

Auf Kopfzeilen folgen Elemente (ELEMENT) und Attributlisten (ATTLIST). Nachfolgend finden Sie eine ausführliche Erklärung der Elemente und Attribute unter der Kopfzeile „Entitlement Definition“. Dies ist die wichtigste Kopfzeile, auf die Sie beim Erstellen von Berechtigungen achten müssen.

<!ELEMENT entitlement (values?)>

Das Element der Stammebene lautet <entitlement>. Es kann ein einzelnes, optionales, untergeordnetes Element vom Typ <values> enthalten. Daran schließt sich die Attributliste mit den Attributen „conflict-resolution“, „display-name“ und „description“ an. Das Attribut „conflict-resolution“ (Konfliktlösung) verwendet die Attributwerte „priority“ (Priorität) oder „union“ (Zusammenführung).

conflict-resolution (priority | union) "priority"

Funktionsbasierte Berechtigungen verwenden das Attribut für Konfliktlösung, um festzulegen, wie bei mehrfacher Anwendung einer mit Werten belegten Berechtigung auf dasselbe Objekt vorzugehen ist. Beispiel: Benutzer U ist Mitglied von Berechtigungsrichtlinie A und Berechtigungsrichtlinie B, die beide auf die gleiche, mit Werten (jedoch mit unterschiedlichen Wertesätzen) belegte Berechtigung E verweisen. Berechtigung E der Berechtigungsrichtlinie A besitzt einen Wertesatz (a, b, c). Berechtigung E der Berechtigungsrichtlinie B besitzt ebenfalls einen Wertesatz (c, d, e).

Das Konfliktlösungsattribut entscheidet, welcher Wertesatz für Benutzer U gelten soll. Wenn „union“ eingestellt ist, werden Benutzer U beide Wertesätze (a, b, c, d, e) zugewiesen. Wenn „priority“ eingestellt ist, wird Benutzer U nur ein Wertesatz zugewiesen, abhängig davon, welche Berechtigungsrichtlinie die höhere Priorität hat.

Wenn eine Berechtigung nur einen Wert besitzt, müssen Konflikte über die Priorität gelöst werden, da eine Zusammenführung („union“) von Werten dazu führen würde, dass mehr als ein Wert zugewiesen wird. Derzeit verwenden funktionsbasierte Berechtigungen dieses Attribut. In Zukunft werden möglicherweise auch Workflow-basierte Berechtigungen dieses Attribut verwenden.

display-name CDATA #REQUIRED description CDATA #REQUIRED

Der tatsächliche Name einer Berechtigung soll nicht immer in der Berechtigung angezeigt werden. Die Attribute „display-name“ (Anzeigename) und „description“ (Beschreibung) geben an, was dem Benutzer angezeigt wird. (In Designer gibt es eine Option, mit der Sie einen Anzeigenamen auswählen können, der vom eigentlichen Namen der Berechtigung abweicht.)

<!ELEMENT values (query-app | value+)?> <!ATTLIST values multi-valued (true | false) "true"

Das Element <values> (Werte) ist optional und zeigt an, dass eine Berechtigung Werte besitzt. Wenn Sie dieses Element nicht verwenden, bedeutet dies, dass die Berechtigung nicht mit einem Wert belegt ist. Eine Berechtigung, die die Zugehörigkeit zu einer Verteilerliste erteilt, ist ein Beispiel für eine mit Werten belegte Berechtigung. Eine Berechtigung, die ein Konto in einer Anwendung erteilt (etwa die Benutzerkontoberechtigung des Active-Directory-Treibers), ist ein Beispiel für eine Berechtigung, die nicht mit Werten belegt ist.

Berechtigungen, die mit Werten belegt sind, beziehen ihre Werte aus drei Quellen. Eine dieser Quellen ist die externe Anwendung (vorgegeben durch das Element <query-app>). Die zweite Quelle ist eine vordefinierte, durchnummerierte Werteliste (ein oder mehrere <value>-Elemente). Die dritte Quelle ist der Client der Berechtigung (ein <values>-Element ohne übergeordnete <value> Elemente). Diese Beispiele veranschaulichen die Funktionsweise von Werten.

Mit Werten belegte Berechtigungen können ein- oder mehrwertig sein. Standardmäßig sind solche Berechtigungen mehrwertig. Für das Erzwingen dieser Einschränkung ist der Client der Berechtigung zuständig.

<!ELEMENT value (#PCDATA)>

Berechtigungswerte sind typenlose Zeichenketten.

<!ELEMENT query-app (query-xml, result-set)>

Wenn Werte von einer externen Anwendung bezogen werden sollen (z. B. von einer Email-Verteilerliste), müssen Sie mit dem Element <query-xml> eine Anwendungsabfrage festlegen. Verwenden Sie zum Exrahieren der Ergebnisse aus der Abfrage das Element <result-set>. In Beispiel 2: Anwendungsabfrageberechtigung: Externe Abfrage finden Sie dazu zwei Beispiele.

<!ELEMENT query-xml ANY>

XML-Abfragen sind XDS-formatiert. Der Befehl <query-xml> dient zum Auffinden und Auslesen von Objekten aus der verbundenen Anwendung. Die Funktionalität für DirXML-Regeln, Objektmigration usw. hängt von der Implementierung dieses Abfragebefehls im Treiber ab. Weitere Informationen zu XML-Abfragen finden Sie in der Dokumentation der Novell-Entwickler zu Abfragen.

<!ELEMENT result-set (display-name, description, ent-value)> <!ELEMENT display-name(token-attr | token-src-dn | token-association)> <!ELEMENT ent-value (token-association | token-src-dn | token-attr)> <!ELEMENT description (token-association | token-src-dn | token-attr)> <!ELEMENT token-association EMPTY> <!ELEMENT token-attr EMPTY> <!ATTLIST token-attr attr-name CDATA #REQUIRED

Verwenden Sie das Element „result-set“ (Ergebnis-Set) als Hilfe bei der Interpretation der Ergebnisse aus der Abfrage einer externen Anwendung. Drei Datenelemente sind dabei von Interesse: der Anzeigename des Werts (das untergeordnete Element „display-name“), die Beschreibung des Werts (das untergeordnete Element „description“) und der nicht angezeigte Literale des Berechtigungswerts (das untergeordnete Element „ent-value“).

Die Token-Elemente <token-src-dn>, <token-association> und <token-attr> sind im Grunde genommen Platzhalter für XPATH-Ausdrücke, die die Attributwerte „src-dn“, „association“ oder „attr“ aus einem XDS-formatierten XML-Dokument extrahieren. Die DTD geht davon aus, dass das Abfrageergebnis in XDS vorliegt.

Weitere Kopfzeilen in der DTD

Auch die übrigen Berechtigungskopfzeilen in der Berechtigungs-DTD erfüllen bestimmte Funktionen, spielen jedoch beim Erstellen einer Berechtigung zunächst keine Rolle.

<!-- Entitlement reference stored in the DirXML-EntitlementRef attribute of a DirXML-EntitlementRecipient or a DirXML-SharedProfile object. -->

Die in der DTD unter „Entitlement reference...“ enthaltenen Informationen verweisen auf ein Berechtigungsobjekt. Diese Informationen werden vom zuständigen Verwaltungsagenten an dieser Stelle eingefügt (z. B. vom funktionsbasierten Berechtigungstreiber Entitlement.xml oder vom Genehmigungsablauftreiber UserApplication.xml). Dies ist das auslösende Ereignis für eine Aktion in einem verbundenen System. Sie müssen in der DTD unter dieser Kopfzeile nichts verändern, können diese Informationen jedoch verwenden, um sicherzustellen, dass auf das Berechtigungsobjekt verwiesen wird.

<!-- Entitlement result stored in the DirXML-EntitlementResult attribute of a DirXML-EntitlementRecipient object. -->

Der Abschnitt unter „Entitlement result...“ erhält Angaben dazu, ob eine Berechtigung erteilt oder entzogen wurde. Dazu gehören der Zustand oder Status des Ereignisses und der Zeitpunkt der Erteilung oder Entziehung des Ereignisses (per Zeitstempel). Sie können die Elemente und Attribute unter dieser Kopfzeile unverändert lassen.

<!-- Cached query results stored in the DirXML-SPCachedQuery attribute of a DirXML-Entitlement object. -->

Der Abschnitt unter „Entitlement query...“ enthält die von einer externen Anwendung gesammelten Berechtigungswerte. Diese Informationen können später wiederverwertet werden, wenn der Berechtigungsclient diese Informationen anzeigen muss. Diese Werte werden im DirXML-SPCachedQuery-Attribut des Berechtigungsobjekts gespeichert. Sie können die Elemente und Attribute unter dieser Kopfzeile unverändert lassen.

<!-- Representation of a DirXML-EntitlementRef within the DirXML Script and within the operation-data of an operation in an XDS document. -->

Da die DTD Werte für mehr als ein Dokument definiert, ist dieser Abschnitt unter „Representation of a DirXML-EntitlementRef...“ streng genommen kein Bestandteil der Berechtigungsdefinition. Sie können die Elemente und Attribute unter dieser Kopfzeile unverändert lassen.

6.4.4 Erstellen von Berechtigungen mit Designer

Die Beispiele in Schnitt 6.4.5, Erstellen und Bearbeiten von Berechtigungen in iManager zeigen den eigentlichen XML-Code, der beim Erstellen von Berechtigungen entsteht. Eine wesentlich einfachere Methode, als den Code manuell zu erstellen, bietet jedoch das mit Identity Manager gelieferte Dienstprogramm „Designer“. Nachdem Sie im Modelliermodul von Designer einen Identity Manager-Treiber zu einem Identitätsdepot hinzugefügt haben, können Sie in der Überblicksansicht mit der rechten Maustaste auf den Treiber klicken und den Befehl „Berechtigung hinzufügen“ wählen. Der Assistent für Berechtigungen fragt nach dem gewünschten Berechtigungstyp und führt Sie anschließend durch den Erstellungsvorgang.

Weitere Informationen zur Verwendung des Assistenten für Berechtigungen finden Sie im Designer for Identity Manager 3: Administration Guide (Designer für Identity Manager: Administrationshandbuch).

6.4.5 Erstellen und Bearbeiten von Berechtigungen in iManager

Es wird empfohlen, in Designer den Assistenten zum Erstellen von Berechtigungen zu verwenden. Sie haben aber auch die Möglichkeit, Berechtigungen in iManager zu erstellen.

  1. Wählen Sie die Option zum Erstellen von Berechtigungen unter „Identity Manager-Dienstprogramme“.
  2. Geben Sie auf der Seite „Berechtigung erstellen“ den gewünschten Namen für die Berechtigung ein und suchen Sie mit dem Objekt-Browser das Identity Manager-Treiberobjekt, zu dem die Berechtigung gehört.
    Beschreibung: Erstellen einer Berechtigung
  3. Wenn die Option „Zusätzliche Eigenschaften definieren“ ausgewählt ist, wird die Seite „XML-Editor“ zum Definieren der gewünschten Elemente der Berechtigung angezeigt.
    Beschreibung: Definieren der Berechtigung
  4. Klicken Sie auf „XML-Bearbeitung aktivieren“, um die Elemente zur Berechtigung hinzuzufügen.

HINWEIS:Es wird davon abgeraten, den Namen einer Berechtigung zu ändern. Wenn Sie den Namen der Berechtigung nachträglich ändern, müssen Sie auch alle Verweise in den Richtlinien ändern, in denen die Berechtigung implementiert ist. Der Name der Berechtigung wird in der Richtlinie in den Attributen „Ref“ und „Result“ gespeichert.

6.4.6 Beispielberechtigungen zum leichteren Erstellen eigener Berechtigungen

Sie können zwei Arten von Berechtigungen erstellen: Berechtigungen mit Werten und ohne Werte. Berechtigungen mit Werten beziehen diese Werte aus einer externen Abfrage. Sie können vom Administrator oder frei definiert sein. Nachstehend finden Sie vier Beispiele für die beiden Berechtigungsarten, die Sie erstellen können.

HINWEIS:Wenn Sie eine Zeile sehen, die das Kleiner-als-Zeichen (<) nicht enthält, bedeutet dies, dass die Zeile umbrochen wurde und ihr Inhalt eigentlich in einer Zeile und nicht auf zwei (oder drei) Zeilen verteilt angezeigt wird. Denken Sie auch daran, dass es sich hierbei im Gegensatz zur Kontoberechtigung um Beispiele für die Möglichkeiten handelt, die sich Ihnen beim Erstellen der verschiedenen Arten von Berechtigungen mit Werten bieten.

Beispiel 1: Kontoberechtigung: Ohne Werte

<?xml version="1.0" encoding="UTF-8"?>
<entitlement conflict-resolution="priority"
    description="This is an Account Entitlement"
    display-name="Account Entitlement"/>

In diesem Beispiel lautet der Name der nicht mit Werten belegten Berechtigung „Account“. Daran schließt sich die Zeile mit dem Attribut „conflict-resolution“ und der Standardeinstellung „Priority“ an. In den meisten Fällen bedeutet dies, dass die funktionsbasierte Berechtigung mit der höchsten Priorität den Wert festlegt, wenn die Berechtigung von der Funktion „Funktionsbasierte Berechtigungen“ verwendet wird. (Da es sich hierbei jedoch um ein Beispiel für Berechtigungen ohne Werte handelt, spielen mit Werten belegte Einstellungen keine Rolle. Die Berechtigungsbeschreibung lautet „This is an Account Entitlement“ und der Anzeigename lautet „Account Entitlement“. Diese Informationen genügen, um eine Kontoberechtigung zu erstellen, mit der Sie anschließend in einer Anwendung ein Konto erteilen können.

Der Active Directory-Treiber mit aktivierter Unterstützung für Berechtigungen besitzt eine UserAccount-Berechtigung, die Active Directory zum Erteilen oder Entziehen eines Benutzerkontos verwendet.

<?xml version="1.0" encoding="UTF-8"?>
<entitlement conflict-resolution="union"
	description="The User Account entitlement grants or denies an
	account in Active	Directory for the user. When granted, the user
	is given an enabled logon account.	When revoked, the logon
	account is either disabled or deleted depending on how the drive
	is configured."	display-name="User Account Entitlement" name="UserAccount">
</entitlement>

In diesem Beispiel erfolgt die Konfliktlösung über das Attribut „union“, d. h., die Berechtigung kann die zugewiesenen Werte zusammenführen. (Wie bereits erwähnt, sind mit einem Wert belegte Einstellungen für Berechtigungen ohne Wert nicht relevant.) Das Feld „description“ (Beschreibung) erläutert, wofür diese Berechtigung verwendet wird und warum sie erstellt wurde. Diese Informationen sind hilfreich, wenn nachträglich Änderungen an der Berechtigung vorgenommen werden. Der eigentliche Name der Berechtigung lautet „UserAccount“, das Attribut <display-name> sorgt jedoch dafür, dass in einem Verwaltungsagenten der Name „User Account Entitlement“ (Benutzerkontoberechtigung) angezeigt wird.

Beispiel 2: Anwendungsabfrageberechtigung: Externe Abfrage

Die in einem Active Directory-Treiber mit Berechtigungsunterstützung enthaltenen Gruppen- und Exchange-Postfach-Berechtigungen liefern Beispiele für Anwendungsabfragen. Verwenden Sie diese Berechtigungsart, wenn Sie zur Ausführung eines Ereignisses externe Informationen aus einem verbundenen System benötigen.

<?xml version="1.0" encoding="UTF-8"?>
<entitlement conflict-resolution="union"
   description="The Group Entitlement grants or denies membership in
   a group in Active Directory. The group must be associated with a
   group in the Identity Vault. When revoked, the user is removed from
   the group. The group membership entitlement is not enforced on the
   publisher channel: If a user is added to a controlled group in
   Active Directory by some external tool, the user is not removed by
   the driver. Further, if the entitlement is removed from the user
   object instead of being simply revoked, the driver takes no action."   display-name="Group Membership Entitlement" name="Group">
   <values>
	<query-app>
	   <query-xml>
		<nds dtd-version="2.0">
		   <input>
			<query class-name="Group"
			   scope="subtree">
			   <search-class class-name="Group"/>
			   <read-attr attr-name="Description"/>
			</query>
		   </input>
		</nds>
	   </query-xml>
	   <result-set>
		<display-name>
		    <token-src-dn/>
		</display-name>
		<description>
		   <token-attr attr-name="Description"/>
		</description>
		<ent-value>
		   <token-association/>
		</ent-value>
	   </result-set>
	</query-app>
   </values>
</entitlement>

In diesem Beispiel verwendet die Gruppenberechtigung das Attribut „union“ (Zusammenführung) zur Konfliktlösung, wenn die Berechtigung demselben Objekt mehrmals zugewiesen wird. Das Attribut „union“ führt die Berechtigungen der funktionsbasierten Berechtigungsrichtlinien zusammen, sodass die Berechtigung auch dann erteilt wird, wenn eine Richtlinie die Berechtigung entzieht, die andere Richtlinie sie jedoch erteilt.

Die ausführliche Gruppenbeschreibung ist hilfreich, denn sie erklärt den Zweck der Regeln in den Treiberrichtlinien. Diese Beschreibung ist ein gutes Beispiel für die Ausführlichkeit, mit der Sie Berechtigungen definieren sollten.

Der durch das Attribut <display-name> definierte Name lautet „Group Membership Entitlement“ (Gruppenmitgliedschaftsberechtigung) und wird in den Verwaltungsagenten angezeigt (z. B. in iManager für funktionsbasierte Berechtigungen). Dieser Name ist der relative eindeutige Name (Relative Distinguished Name, RDN) der Berechtigung. Wenn Sie keinen Anzeigenamen definieren, wird der RDN als Name für die Berechtigung verwendet.

Anhand der anfänglichen Abfragewerte wird der Baum und seine Teilbäume von oben nach unten nach dem Klassennamen „Group“ durchsucht. Diese Werte kommen vom verbundenen Active Directory-Server und die Anwendungsabfrage beginnt beim Tag <nds>. Unterhalb des Tags <query-xml> nimmt diese Abfrage Daten entgegen mit etwa der folgenden Struktur:

<instance class-name="Group" src-dn="o=Blanston,cn=group1">
   <association>o=Blanston,cn=group1</association>
   <attr attr-name="Description"> the description for group1</attr>
</instance>
<instance class-name="Group" src-dn="o=Blanston,cn=group2">
   <association>o=Blanston,cn=group2</association>
   <attr attr-name="Description"> the description for group2</attr>
</instance>
<instance class-name="Group" src-dn="o=Blanston,cn=group3">
   <association>o=Blanston, cn=group3</association>
   <attr attr-name="Description"> the description for group3</attr>
</instance>
<!-- ... ->

Anschließend werden unter dem Tag <result-set> die von der Abfrage empfangenen Daten in die verschiedenen Felder eingefügt. In das Feld <display-name> wird z. B. o=Blanston,cn=group1 eingefügt. Das Feld <description> erhält the description for group1 und das Feld <ent-value> erhält den Wert o=Blanston,cn=group1. Da mehr als eine der vorhandenen Gruppen die Abfragekriterien erfüllt hat, wurden diese Informationen ebenfalls erfasst und als weitere Instanzen dargestellt.

HINWEIS:Der Wert für das Verknüpfungsformat ist für jedes externe System eindeutig festgelegt, sodass sich Format und Syntax je nach abgefragtem externen System unterscheiden.

Ein weiteres Beispiel ist die Exchange-Postfach-Berechtigung.

<?xml version="1.0" encoding="UTF-8"?>
<entitlement conflict-resolution="union"
  description="The Exchange Mailbox Entitlement grants or denies an
  Exchange mailbox for the user in Microsoft Exchange."
  display-name="Exchange Mailbox Entitlement" name="ExchangeMailbox">
  <values>
	<query-app>
	   <query-xml>
		<nds dtd-version="2.0">
		   <input>
			<query class-name="msExchPrivateMDB"
			   dest-dn="CN=Configuration," scope="subtree">
			   <search-class class-name="msExchPrivateMDB"/>
			   <read-attr attr-name="Description"/>
			   <read-attr attr-name="CN"/>
			</query>
		   </input>
		</nds>
	    </query-xml>
	    <result-set>
		<display-name>
		   <token-attr attr-name="CN"/>
		</display-name>
		<description>
		   <token-attr attr-name="Description"/>
		</description>
		<ent-value>
		  <token-src-dn/>
		</ent-value>
	    </result-set>
	</query-app>
   </values>
</entitlement>

In diesem Beispiel verwendet die Exchange-Postfach-Berechtigung das Attribut „union“ (Zusammenführung) zur Konfliktlösung, wenn die Berechtigung demselben Objekt mehrmals zugewiesen wird. Das Attribut „union“ führt die Berechtigungen der funktionsbasierten Berechtigungsrichtlinien zusammen, sodass die Berechtigung auch dann erteilt wird, wenn eine Richtlinie die Berechtigung entzieht, die andere Richtlinie sie jedoch erteilt.

Die Beschreibung gibt an, dass die Berechtigung für den Benutzer in Microsoft Exchange ein Exchange-Postfach erteilt oder dieses entzieht. Damit ist die Aufgabe dieser Berechtigung hinreichend genau beschrieben. Der durch das Attribut „display-name“ definierte Name lautet „Exchange Mailbox Entitlement“ (Exchange-Postfach-Berechtigung) und wird in den Verwaltungsagenten angezeigt (z. B. in iManager für funktionsbasierte Berechtigungen). Dieser Name ist der relative eindeutige Name (Relative Distinguished Name, RDN) der Berechtigung. Wenn Sie keinen Anzeigenamen definieren, wird der RDN als Name für die Berechtigung verwendet.

Anhand der anfänglichen Abfragewerte wird der Container „Configuration“ und seine Teilbäume nach dem Klassennamen von „msExchPrivateMDB“ (ein Funktionsaufruf aus Microsoft Exchange). Diese Werte stammen von der verbundenen Active Directory-Datenbank und die Anwendungsabfrage beginnt beim Tag <nds>. Zur Klasse „msExchPrivateMDB“ gibt es in eDirectory kein Gegenstück, sodass Sie sich gut mit Funktionsaufrufen in Microsoft Exchange auskennen müssen, um eine entsprechende Abfrage durchführen zu können. Die Abfrage wird jedoch aufgrund der im Active Directory-Treiber vorgefundenen Regeln und Richtlinien durchgeführt.

Berechtigungsendkonsumenten verwenden die von der Abfrage abgerufenen Daten. So wird beispielsweise der Berechtigungswert („ent-value“) über das Attribut „DirXML-EntitlementRef“ an Identity Manager-Richtlinien übergeben. Der Anzeigename und die beschreibenden Informationen werden von iManager oder der Benutzeranwendung angezeigt und im Attribut „DirXML-SPCachedQuery“ gespeichert.

Beispiel 3: Vom Administrator definierte Berechtigung: Mit Listen

Das dritte Beispiel ist eine vom Administrator definierte Berechtigung, die ein Ereignis zum Erteilen oder Entziehen erstellt, nachdem Sie einen Listeneintrag ausgewählt haben.

<?xml version="1.0" encoding="UTF-8"?>
<entitlement conflict-resolution="union"
    description="This will show Administrator-defined Values">
	   <display-name="Admin-defined Entitlement"/>
	   <values multi-valued="true">
		<value>Building A</value>
		<value>Building B</value>
		<value>Building C</value>
		<value>Building D</value>
		<value>Building E</value>
		<value>Building F</value>
	</values>
</entitlement>

In diesem Beispiel lautet der Name der Berechtigung „Admin-defined“ und der Anzeigename ist als „Admin-defined Entitlement“ definiert. (Sie müssen nur dann einen Anzeigenamen angeben, wenn dieser sich vom RDN der Berechtigung unterscheiden soll.) Die Zeile für die Konfliktlösung enthält die Einstellung „union“, d. h., die Berechtigung kann die zugewiesenen Werte zusammenführen.

Die Berechtigungsbeschreibung lautet This will show Administrator-defined Values. Das multi-value-Attribut ist auf „true“ eingestellt, d. h., die Berechtigung kann einen Wert auch mehrmals zuweisen. In diesem Beispiel handelt es sich bei den Werten um mit Buchstaben gekennzeichnete Firmengebäude: „Building A“ bis „Building F“. Anschließend können Benutzer oder definierte Aufgabenmanager über einen Berechtigungsclient wie z. B. eine RBE-Aufgabe in iManager oder über die Benutzeranwendung die Gebäudeinformationen angeben, die in eine externe Anwendung wie z. B. Novell eDirectory aufgenommen werden.

Beispiel 4: Vom Administrator definierte Berechtigungen: Ohne Listen

Das vierte Beispiel ist eine vom Administrator definierte Berechtigung, die den Administrator zur Eingabe eines Werts zwingt, bevor die Berechtigung ein Ereignis erteilen oder entziehen kann. Diese Art von Berechtigung können Sie verwenden, wenn Ihnen zum Zeitpunkt der Erstellung noch nicht alle Informationen vorliegen und Sie daher keine Aufgabenliste erstellen können.

<?xml version="1.0" encoding="UTF-8"?>
<entitlement conflict-resolution="priority"
    description="There will be no pre-defined list">
    <values multi-valued="false"/>
</entitlement>

In diesem Beispiel lautet der Name der Berechtigung „Admin-defined (keine Liste)“ und die Berechtigung verwendet diesen Namen als Anzeigename, weil kein Eintrag für einen Anzeigenamen definiert ist. Auch hier gilt für das Konfliktlösungsattribut die Standardeinstellung „priority“. Dies bedeutet, dass die RBE mit der höchsten Priorität den Wert festlegt, wenn die Berechtigung von der Funktion „Funktionsbasierte Berechtigungen“ verwendet wird. Sie können anschließend über einen Berechtigungsclient wie z. B. eine RBE-Aufgabe in iManager oder über die Benutzeranwendung die Gebäudeinformationen angeben, die in eine externe Anwendung wie z. B. Novell eDirectory aufgenommen werden.

6.4.7 Abschließen der Berechtigungserstellung

Die Beispiele für das Erstellen und Verwenden von Berechtigungen haben die ersten beiden Schritte dieses Verfahrens veranschaulicht (siehe Schnitt 6.2, Erstellen von Berechtigungen: Überblick). Schritt 1 beinhaltet das Anlegen einer Checkliste mit den Zielen, die Sie mit den Berechtigungen verfolgen. In Schritt 2 schreiben Sie die Berechtigungen, mit denen die Ziele in der Checkliste umgesetzt werden sollen. Schritt 3, das Erstellen von Richtlinien für den Identity Manager-Treiber, würde den Rahmen dieses Kapitels sprengen. Informationen zum Erstellen und Bearbeiten von Richtlinien finden Sie im Policy Builder and Driver Customization Guide (Handbuch zum Richtlinien-Builder und zur Treiberanpassung) und in der Dokumentation zum jeweiligen Identity Manager-Treiber.

Nachdem Sie Berechtigungen erstellt (oder die bei bestimmten Identity Manager-Treibern enthaltenen, vorkonfigurierten Berechtigungen verwendet) haben, müssen Sie diese in Schritt 4 verwalten. Berechtigungen werden durch zwei Pakete oder Agenten verwaltet: über iManager als funktionsbasierte Berechtigungsrichtlinien oder über die Benutzeranwendung bei Workflow-basierter Bereitstellung. Informationen zu Berechtigungen, die bei der Workflow-basierten Bereitstellung verwendet werden, finden Sie in Abschnitt V: „Entwerfen und Verwalten von Bereitstellungsanforderungen“ im „Identity Manager-Benutzeranwendung: Administrationshandbuch“. Der Rest dieses Kapitels befasst sich mit funktionsbasierten Berechtigungen.