Die Aktivierung des Zugriffs auf ein CRX-Repository umfasst mehrere Themen:
Nachfolgend sind die grundlegenden Elemente aufgeführt:
Benutzerkonten: CRX authentifiziert den Zugriff durch Identifizieren und Verifizieren eines Benutzers (durch eine Person oder eine andere Anwendung) entsprechend den im Benutzerkonto gespeicherten Details.
In CRX stellt jedes Benutzerkonto einen Knoten im Workspace dar. Ein CRX-Benutzerkonto weist die folgenden Eigenschaften auf:
Es repräsentiert einen Benutzer von CRX.
In ihm sind ein Benutzername und ein Kennwort gespeichert.
Es gilt für diesen Workspace.
Es kann keine Unterbenutzer haben. Verwenden Sie für hierarchische Zugriffsrechte Gruppen.
Sie können Zugriffsrechte für das Benutzerkonto festlegen.
Zur Vereinfachung der Verwaltung raten wir jedoch, (in der Mehrzahl der Fälle) Zugriffsrechte zu Gruppenkonten zuzuweisen. Bei der Zuweisung von Zugriffsrechten zu jedem einzelnen Benutzer kann die Verwaltung schnell sehr schwierig werden (Ausnahmen sind bestimmte Systembenutzer, wenn nur ein oder zwei Instanzen vorhanden sind).
Gruppenkonten: Gruppenkonten sind Sammlungen von Benutzern und/oder anderen Gruppen. Sie dienen zur Vereinfachung der Verwaltung, da eine Änderung der einer Gruppe zugewiesenen Zugriffsrechte automatisch auf alle Benutzer in dieser Gruppe angewendet wird. Ein Benutzer muss nicht unbedingt Mitglied einer Gruppe sein, gehört aber häufig zu mehreren.
In CRX verfügt eine Gruppe über die folgenden Eigenschaften:
Zugriffsrechte: CRX verwendet Zugriffsrechte zur Steuerung des Zugriffs auf bestimmte Bereiche des Repositorys.
Dies erfolgt über die Zuweisung von Berechtigungen, um den Zugriff auf eine Ressource (Knoten oder Pfad) im Repository zuzulassen oder abzulehnen. Da zahlreiche Berechtigungen zugewiesen werden können, müssen sie ausgewertet werden, um festzustellen, welche Kombination für die aktuelle Anfrage relevant ist.
CRX ermöglicht es Ihnen, die Zugriffsrechte für Benutzer- und Gruppenkonten zu konfigurieren. Es werden dann dieselben grundlegenden Auswertungsprinzipien auf beide angewendet.
In CRX wird die Zugriffssteuerung gemäß der Definition in JSR-283 implementiert.
Die Standardinstallation eines CRX-Repositorys ist so konfiguriert, dass sie die ressourcenbasierten Zugriffssteuerungslisten verwendet. Dies ist eine mögliche Implementierung der JSR-283-Zugriffssteuerung und eine der Implementierungen in Jackrabbit.
CRX verwendet zwei Hauptkonzepte zur Bewertung der Zugriffsrechte:
Ein Prinzipal ist eine Entität, die die Zugriffsrechte enthält. Prinzipale beinhalten:
Ein Benutzerkonto
Ein Gruppenkonto
Wenn ein Benutzerkonto zu einer oder mehreren Gruppen gehört, ist es auch mit jedem dieser Gruppenprinzipale verknüpft.
Ein Objekt repräsentiert die Quelle einer Anfrage.
Es dient zur Konsolidierung der für diese Anfrage relevanten Zugriffsrechte. Diese stammen von:
dem Benutzerprinzipal
den Rechten, die Sie dem Benutzerkonto direkt zuweisen
allen mit diesem Benutzer verknüpften Gruppenprinzipalen
sowie allen Rechten, die Sie jeder der Gruppen zugewiesen haben, zu denen der Benutzer gehört.
Das Ergebnis wird anschließend verwendet, um den Zugriff auf die angeforderte Ressource zuzulassen oder abzulehnen.
In CRX ist das Objekt abhängig von:
Die Liste der Zugriffsrechte, die für das Objekt relevant sind, wird erstellt aus:
Wenn CRX die Anfrage verarbeitet, vergleicht es die Zugriffsanfrage des Objekts mit der Liste der Zugriffssteuerung im Repository-Knoten:
Wenn also Linda eine Aktualisierung des Knotens /features
in der folgenden Repository-Struktur anfordert:
Zugriffsrechte in CRX werden wie folgt bewertet:
Benutzerprinzipale haben stets Vorrang vor Gruppenprinzipalen – unabhängig von:
Bei einem gegebenen Prinzipal ist (maximal) 1 Ablehnungs- und 1 Zulassungseintrag in einem gegebenen Knoten vorhanden. Die Implementierung löscht immer redundante Einträge und stellt sicher, dass dieselbe Berechtigung nicht sowohl in den Zulassungs- als auch in den Ablehnungseinträgen aufgeführt wird.
Dieser Bewertungsprozess ist für die ressourcenbasierte Zugriffssteuerung einer CRX-Standardinstallation geeignet.
Nachfolgend sehen Sie zwei Beispiele, in denen der Benutzer aUser
Mitglied der Gruppe aGroup
ist:
+ parentNode
+ acl
+ ace: aUser - deny - write
+ childNode
+ acl
+ ace: aGroup - allow - write
+ grandChildNode
Im obigen Fall:
aUser
keine Schreibberechtigung für den Knoten grandChildNode
gewährt. + parentNode
+ acl
+ ace: aUser - deny - write
+ childNode
+ acl
+ ace: aGroup - allow - write
+ ace: aUser - deny - write
+ grandChildNode
In diesem Fall:
aUser
keine Schreibberechtigung für den Knoten grandChildNode
gewährt.aUser
ist redundant.Zugriffsrechte von mehreren Gruppenprinzipalen werden basierend auf ihrer Reihenfolge innerhalb der Hierarchie und innerhalb einer einzigen Zugriffssteuerungsliste bewertet.
Die nachfolgende Tabelle enthält einige Empfehlungen und Best Practices:
Empfehlung... | Grund... |
Benutzergruppen | Vermeiden Sie es, Zugriffsrechte Benutzer für Benutzer zuzuweisen. Dafür gibt es mehrere Gründe:
|
Positiv sein | Verwenden Sie immer Anweisungen vom Typ „Zulassen“, um die Zugriffsrechte des Gruppenprinzipals anzugeben (sofern möglich). Vermeiden Sie Anweisungen vom Typ „Ablehnen“. Gruppenprinzipale werden der Reihenfolge nach innerhalb der Hierarchie und innerhalb einer einzelnen Zugriffssteuerungsliste bewertet. |
Es einfach halten | Wenn Sie bei der Konfiguration einer Neuinstallation etwas Zeit investieren und nachdenken, zahlt sich das später aus. Eine klare Struktur vereinfacht die fortlaufende Wartung und Verwaltung, sodass sowohl aktuelle Kollegen als auch Nachfolger die Implementierung problemlos verstehen können. |
Testen | Verwenden Sie eine Testinstallation, um zu üben und sicherzustellen, dass Sie die Beziehungen zwischen den verschiedenen Benutzern und Gruppen verstehen. |
Standardbenutzer/-gruppen | Aktualisieren Sie die Standardbenutzer und -gruppen immer sofort nach der Installation, um Sicherheitsprobleme zu vermeiden. |
Für die Benutzerverwaltung wird ein Standard-Dialogfeld verwendet.
Sie müssen sich beim jeweiligen Workspace anmelden und können dann wie folgt auf das Dialogfeld zugreifen:
Eigenschaften
Benutzer-ID
Kurzname für das Konto, der beim Zugriff auf CRX verwendet wird
Prinzipalname
Vollständiger Name des Kontos
Kennwort
Erforderlich, wenn mit diesem Konto auf CRX zugegriffen wird
ntlmhash
Wird automatisch jedem neuen Konto zugewiesen und bei Änderung des Kennworts aktualisiert
Sie können neue Eigenschaften hinzufügen, indem Sie einen Namen, einen Typ und den Wert definieren. Klicken Sie auf „Speichern“ (grünes Häkchen-Symbol) für jede neue Eigenschaft.
Gruppenmitgliedschaft
Hier werden alle Gruppen angezeigt, die zu diesem Konto gehören. Die Spalte Übernommen zeigt Mitgliedschaften an, die durch eine Mitgliedschaft bei einer anderen Gruppe übernommen wurden.
Durch Klicken auf eine Gruppen-ID (falls verfügbar) wird die Gruppenverwaltung für diese Gruppe geöffnet.
Darsteller
Mit der Funktion Stellvertretend agieren können Benutzende im Auftrag anderer Benutzenden arbeiten.
Dies bedeutet, dass über ein Benutzerkonto andere Konten (Benutzer oder Gruppe) festgelegt werden können, die mit ihrem Konto arbeiten können. Anders ausgedrückt: Wenn Benutzer B stellvertretend für Benutzer A agieren darf, kann Benutzer B Aktionen unter Verwendung aller Kontodetails des Benutzers A (einschließlich ID, Name und Zugriffsrechte) ausführen.
Hierdurch kann der Stellvertreter (Darsteller) Aufgaben so abschließen, als würde er das Konto verwenden, für das er stellvertretend agiert, etwa bei Abwesenheit oder zur kurzfristigen Entlastung anderer überlasteter Benutzer.
Wenn ein Konto stellvertretend für ein anderes agiert, ist dies sehr schwierig zu erkennen. In den Protokolldateien werden keine Informationen dazu gespeichert, ob bei den Ereignissen jemand stellvertretend agiert hat. Wenn also Benutzer B stellvertretend für Benutzer A agiert, sehen alle Ereignisse so aus, als ob sie von Benutzer A persönlich ausgeführt wurden.
Öffnen Sie das Dialogfeld Benutzerverwaltung.
Klicken Sie auf Benutzer erstellen.
Sie können dann die Eigenschaften eingeben:
Klicken Sie auf die Schaltfläche „Speichern“ (grünes Häkchen-Symbol).
Daraufhin wird das Dialogfeld erweitert und Sie können Folgendes tun:
Es kann manchmal zu einer Beeinträchtigung der Leistung kommen, wenn neue Benutzer in Installationen registriert werden, die eine hohe Anzahl haben an:
Dadurch wird der Knoten für diesen Prinzipal aus dem Repository entfernt.
Zugriffsrechte-Einträge werden hingegen nicht entfernt. So wird die historische Integrität gesichert.
Sie können Eigenschaften für neue oder vorhandene Konten definieren:
Vorhandene Eigenschaften können mit dem Papierkorb-Symbol gelöscht werden.
Mit Ausnahme des Kennworts können Eigenschaften nicht bearbeitet werden, sie müssen gelöscht und neu erstellt werden.
Das Kennwort ist eine spezielle Eigenschaft, die durch Klicken auf den Link Kennwort ändern geändert werden kann.
Sie können über das Menü Sicherheit im CRX Explorer auch das Kennwort für Ihr eigenes Benutzerkonto ändern.
Sie können Darsteller für neue oder vorhandene Konten definieren:
Öffnen Sie das Dialogfeld Benutzerverwaltung für das entsprechende Konto.
Geben Sie das Konto an, dem es gestattet sein soll, stellvertretend für dieses Konto zu agieren.
Sie können über die Option „Durchsuchen…“ ein bestehendes Konto auswählen.
Klicken Sie auf „Speichern“ (grünes Häkchen-Symbol) für die neue Eigenschaft.
Für die Gruppenverwaltung wird ein Standard-Dialogfeld verwendet.
Sie müssen sich beim jeweiligen Workspace anmelden und können dann wie folgt auf das Dialogfeld zugreifen:
Eigenschaften
Gruppen-ID
Kurzname für das Gruppenkonto
Prinzipalname
Vollständiger Name des Gruppenkontos
Sie können neue Eigenschaften hinzufügen, indem Sie einen Namen, einen Typ und den Wert definieren. Klicken Sie auf „Speichern“ (grünes Häkchen-Symbol) für jede neue Eigenschaft.
Mitglieder
Sie können Benutzer oder andere Gruppen als Mitglieder dieser Gruppe hinzufügen.
Gruppenmitgliedschaft
Hier werden alle Gruppen angezeigt, die zu diesem aktuellen Gruppenkonto gehören. Die Spalte Übernommen zeigt Mitgliedschaften an, die durch eine Mitgliedschaft bei einer anderen Gruppe übernommen wurden.
Durch Klicken auf eine Gruppen-ID wird das Dialogfeld für diese Gruppe geöffnet.
Mitglieder
Hier werden alle Konten (Benutzer und/oder Gruppen) aufgelistet, die Mitglieder der aktuellen Gruppe sind.
Die Spalte Übernommen zeigt Mitgliedschaften an, die durch eine Mitgliedschaft bei einer anderen Gruppe übernommen wurden.
Wenn die Eigentümer-, Bearbeiter- oder Betrachterrolle einem Benutzer in einem beliebigen Asset-Ordner zugewiesen wird, wird eine neue Gruppe erstellt. Der Gruppenname ist vom Format mac-default-<foldername>
für jeden Ordner, für den die Rollen definiert sind.
Öffnen Sie das Dialogfeld Gruppenverwaltung.
Klicken Sie auf Gruppe erstellen.
Sie können dann die Eigenschaften eingeben:
Klicken Sie auf die Schaltfläche „Speichern“ (grünes Häkchen-Symbol).
Daraufhin wird das Dialogfeld erweitert und Sie können Folgendes tun:
Dadurch wird der Knoten für diesen Prinzipal aus dem Repository entfernt.
Zugriffsrechte-Einträge werden hingegen nicht entfernt. So wird die historische Integrität gesichert.
Sie können Eigenschaften für neue oder vorhandene Konten definieren:
Vorhandene Eigenschaften können mit dem Papierkorb-Symbol gelöscht werden.
Sie können der aktuellen Gruppe Mitglieder hinzufügen:
Öffnen Sie das Dialogfeld Gruppenverwaltung für das entsprechende Konto.
Führen Sie einen der folgenden Schritte durch:
Klicken Sie auf „Speichern“ (grünes Häkchen-Symbol) für die neue Eigenschaft.
Alternativ können Sie ein vorhandenes Mitglied über das Papierkorb-Symbol löschen.
Auf der Registerkarte Zugriffssteuerung von CRXDE Lite können Sie die Richtlinien für die Zugriffssteuerung definieren und die zugehörigen Berechtigungen zuweisen.
Wählen Sie beispielsweise auf der Registerkarte „Zugangssteuerung“ im unteren rechten Bereich für die Option Aktueller Pfad die gewünschte Ressource im linken Bereich aus:
Die Richtlinien sind wie folgt kategorisiert:
Gültige Richtlinien zur Zugriffssteuerung
Diese Richtlinien können angewendet werden.
Dies sind Richtlinien, die für die Erstellung einer lokalen Richtlinie zur Verfügung stehen. Nachdem Sie eine gültige Richtlinie ausgewählt und hinzugefügt haben, wird sie zu einer lokalen Richtlinie.
Lokale Richtlinien zur Zugriffssteuerung
Dies sind Richtlinien zur Zugriffssteuerung, die Sie angewendet haben. Sie können sie dann aktualisieren, sortieren oder entfernen.
Eine lokale Richtlinie überschreibt jedwede Richtlinien, die vom übergeordneten Element übernommen werden.
Gültige Richtlinien zur Zugriffssteuerung
Dies sind Richtlinien zur Zugriffssteuerung, die jetzt für alle Zugriffsanfragen gelten. Sie zeigen die aggregierten Richtlinien an, die von den lokalen Richtlinien abgeleitet bzw. vom übergeordneten Element übernommenen werden.
Sie können Richtlinien für Folgendes auswählen:
Aktueller Pfad
Wählen Sie wie im vorherigen Beispiel eine Ressource innerhalb des Repositorys aus. Die Richtlinien für diesen aktuellen Pfad werden angezeigt.
jcr:namespaceManagement
festlegen, die nur für das Repository und nicht für einen Knoten relevant ist.Prinzipal
Ein Prinzipal, der im Repository registriert ist.
Sie können entweder den Prinzipal-Namen eingeben oder auf das Symbol rechts neben dem Feld klicken, um das Dialogfeld Prinzipal auswählen zu öffnen.
Dort können Sie nach einem Benutzer oder einer Gruppe suchen. Wählen Sie den gewünschten Prinzipal aus der angezeigten Liste aus und klicken Sie dann auf OK, um den Wert in das vorherige Dialogfeld zu übernehmen.
Zur Vereinfachung der Verwaltung empfehlen wir, dass Sie Gruppenkonten und nicht einzelnen Benutzerkonten Zugriffsrechte zuweisen.
Es ist einfacher, einige wenige Gruppen anstatt vieler Benutzerkonten zu verwalten.
Die folgenden Berechtigungen können beim Hinzufügen eines Zugangssteuerungseintrags ausgewählt werden (umfassende Details finden Sie in Sicherheits-API).
Berechtigungsname | Dies steuert die Berechtigung zum... |
---|---|
jcr:read |
Abrufen eines Knotens und Lesen von dessen Eigenschaften und deren Werte. |
rep:write |
Dies ist eine Jackrabbit-spezifische Aggregat-Berechtigung von jcr:write und jcr:nodeTypeManagement. |
jcr:all |
Dies ist eine aggregierte Berechtigung, die alle anderen vordefinierten Berechtigungen enthält. |
Erweitert | |
crx:replicate |
Durchführen der Replikation eines Knotens. |
jcr:addChildNodes |
Erstellen von untergeordneten Knoten eines Knotens. |
jcr:lifecycleManagement |
Durchführen von Lebenszyklusvorgängen für einen Knoten. |
jcr:lockManagement |
Sperren und Rntsperren eines Knoten; Aktualisieren einer Sperre. |
jcr:modifyAccessControl |
Ändern der Richtlinien zur Zugriffssteuerung für einen Knoten. |
jcr:modifyProperties |
Erstellen, Ändern und Entfernen der Eigenschaften eines Knotens. |
jcr:namespaceManagement |
Registrieren von Namespace-Definitionen, Aufheben der Registrierung und Ändern der Registrierung. |
jcr:nodeTypeDefinitionManagement |
Importieren von Knotentypdefinitionen in das Repository. |
jcr:nodeTypeManagement |
Steuern der Berechtigung zum Hinzufügen und Entfernen von Mixin-Knotentypen sowie Ändern des primären Knotentyps eines Knotens. Dies schließt auch alle Aufrufe der Node.addNode- und XML-Importmethoden ein, bei denen der Mixin-Typ oder primäre Typ des neuen Knotens explizit festgelegt ist. |
jcr:readAccessControl |
Lesen der Richtlinie zur Zugriffssteuerung für einen Knoten. |
jcr:removeChildNodes |
Entfernen von untergeordneten Knoten eines Knotens. |
jcr:removeNode |
Entfernen eines Knotens. |
jcr:retentionManagement |
Durchführen von Aufbewahrungsverwaltungsvorgängen für einen Knoten. |
jcr:versionManagement |
Ausführen von Versionierungsvorgängen für einen Knoten. |
jcr:workspaceManagement |
Das Erstellen und Löschen von Workspaces über die JCR-API. |
jcr:write |
Dies ist eine aggregierte Berechtigung, die Folgendes enthält: – jcr:modifyProperties – jcr:addChildNodes – jcr:removeNode – jcr:removeChildNodes |
rep:privilegeManagement |
Registrieren von neuen Berechtigungen. |
Sie können auch neue Berechtigungen registrieren:
Wählen Sie in der Symbolleiste Tools und dann Berechtigungen aus, um die aktuell registrierten Berechtigungen anzuzeigen.
Öffnen Sie mithilfe des Symbols Berechtigung registrieren (+) das entsprechende Dialogfeld und legen Sie eine neue Berechtigung fest:
Klicken Sie zum Speichern auf OK. Die Berechtigung steht jetzt zur Auswahl zur Verfügung.
Wählen Sie die Ressource aus und öffnen Sie die Registerkarte Zugriffssteuerung.
Um neue Richtlinien zur lokalen Zugriffssteuerung hinzuzufügen, klicken Sie auf das +-Symbol rechts neben der Liste Gültige Richtlinie für die Zugriffssteuerung:
Es wird ein neuer Eintrag unter Richtlinien zur lokalen Zugriffssteuerung angezeigt:
Klicken Sie auf das +-Symbol, um einen neuen Eintrag hinzuzufügen:
Derzeit ist es nur mithilfe einer Übergangslösung möglich, eine leere Zeichenfolge festzulegen.
Geben Sie einfach "" ein.
Definieren Sie Ihre Richtlinie zur Zugriffssteuerung und klicken Sie dann zum Speichern auf OK. Die neue Richtlinie:
CRX überprüft Ihre Auswahl. Bei einem gegebenen Prinzipal ist (maximal) 1 Ablehnungs- und 1 Zulassungseintrag in einem gegebenen Knoten vorhanden. Die Implementierung löscht immer redundante Einträge und stellt sicher, dass dieselbe Berechtigung nicht sowohl in den Zulassungs- als auch in den Ablehnungseinträgen aufgeführt wird.
Die Reihenfolge in der Liste zeigt die Reihenfolge an, in der die Richtlinien angewendet werden.
Wählen Sie in der Tabelle Richtlinien zur lokalen Zugriffssteuerung den gewünschten Eintrag aus und ziehen Sie ihn an die neue Position in der Tabelle.
Die Änderungen werden in den Tabellen Richtlinien zur lokalen Zugriffssteuerung und Gültige Richtlinien zur Zugriffssteuerung angezeigt.
Wählen Sie in der CRXDE Lite-Symbolleiste Tools und dann Zugriffssteuerung testen… aus.
Daraufhin wird ein neues Dialogfeld im Bereich rechts oben geöffnet. Wählen Sie den Pfad und/oder den Prinzipal aus, den Sie testen möchten.
Klicken Sie auf Testen, um die Ergebnisse für Ihre Auswahl zu sehen: