Gruppen
Gruppen sind organisatorische Einheiten, die die Rollenverwaltung vereinfachen. Anstatt jedem Benutzer einzeln Rollen zuzuweisen, weisen Sie einer Gruppe Rollen zu und fügen dann Benutzer zu dieser Gruppe hinzu.
Konzept
Group "Engineering"
├── Roles: Development, CommunicationManagement
├── Members (Users): alice, bob
├── Members (External Users): xt_parent_charlie
└── Child Groups:
└── Group "Engineering Leads"
├── Roles: TenantManagement
└── Members: alice
In diesem Beispiel:
- bob hat die Rollen:
Development,CommunicationManagement - alice hat die Rollen:
Development,CommunicationManagement,TenantManagement(aus beiden Gruppen geerbt)
Rollenvererbung
Rollen werden rekursiv über die Gruppenhierarchie aufgelöst. Derselbe Resolver läuft für Benutzer und Clients — beide sind über dieselbe Mitgliedschafts-Assoziation mit Gruppen verknüpft:
- Die effektiven Rollen eines Subjekts (Benutzer oder Client) umfassen alle Rollen aus den Gruppen, denen es direkt angehört
- Wenn eine Gruppe untergeordnete Gruppen enthält, werden auch die Rollen dieser untergeordneten Gruppen einbezogen
- Die Auflösung unterstützt bis zu 10 Ebenen der Verschachtelung mit Zykluserkennung
- Der Identity Service löst alle effektiven Rollen zum Zeitpunkt der Token-Ausstellung auf
Standardgruppe: TenantOwners
Jeder neue Tenant wird automatisch mit einer TenantOwners-Gruppe bereitgestellt, die alle 10 Standardrollen enthält. Wenn sich ein Administrator in einem neuen Tenant provisioniert (über Admin-Provisionierung), wird er automatisch dieser Gruppe hinzugefügt.
Gruppenmitglieder
Eine Gruppe kann vier Arten von Mitgliedern enthalten:
| Mitgliedstyp | Beschreibung |
|---|---|
| Users | Lokale Benutzer im selben Tenant |
| External Users | Tenantübergreifende Benutzerzuordnungen (Benutzer aus einem übergeordneten Tenant) |
| Clients | OAuth-Clients (Maschine-zu-Maschine-Identitäten) — sie erben die Rollen der Gruppe auf dieselbe Weise wie Benutzer |
| Child Groups | Verschachtelte Gruppen für hierarchische Rollenvererbung |
Ein Client, der einer Gruppe hinzugefügt wird, erbt alle Rollen der Gruppe (direkt und über verschachtelte Gruppen), genau wie ein Benutzer. Diese Rollen werden als role-Claims im client_credentials-Access-Token des Clients ausgegeben. Siehe Clients und Scopes.
Gruppen über die CLI verwalten
CRUD-Operationen
# List all groups
octo-cli -c GetGroups
# Get a specific group
octo-cli -c GetGroup -id "<group-rtid>"
# Create a group with optional roles
octo-cli -c CreateGroup -n "Engineering" -d "Engineering team" -rids "role1,role2"
# Update a group
octo-cli -c UpdateGroup -id "<group-rtid>" -n "New Name" -d "New description"
# Delete a group
octo-cli -c DeleteGroup -id "<group-rtid>"
Rollenzuweisung
# Replace all roles assigned to a group
octo-cli -c UpdateGroupRoles -id "<group-rtid>" -rids "role1,role2,role3"
Benutzermitgliedschaft
# Add a user to a group
octo-cli -c AddUserToGroup -id "<group-rtid>" -uid "<user-id>"
# Remove a user from a group
octo-cli -c RemoveUserFromGroup -id "<group-rtid>" -uid "<user-id>"
Client-Mitgliedschaft
Ein Client wird über seine Runtime-ID (die RtId des Clients, verfügbar über GetClient/GetClients) einer Gruppe hinzugefügt, analog dazu, wie Benutzer über ihre Benutzer-ID hinzugefügt werden.
# Add a client to a group
octo-cli -c AddClientToGroup -id "<group-rtid>" -cid "<client-rtid>"
# Remove a client from a group
octo-cli -c RemoveClientFromGroup -id "<group-rtid>" -cid "<client-rtid>"
Verschachtelte Gruppen
# Add a child group
octo-cli -c AddGroupToGroup -id "<parent-group-rtid>" -cgid "<child-group-rtid>"
# Remove a child group
octo-cli -c RemoveGroupFromGroup -id "<parent-group-rtid>" -cgid "<child-group-rtid>"
Das System verhindert zirkuläre Gruppenreferenzen. Wenn das Hinzufügen einer untergeordneten Gruppe einen Zyklus erzeugen würde, wird die Operation abgelehnt.
Automatische Gruppenzuweisung
Benutzer können bei der ersten Anmeldung über zwei Mechanismen automatisch Gruppen zugewiesen werden:
-
Standardgruppe am Identity Provider — setzen Sie die Eigenschaft
DefaultGroupRtIdan einem Identity Provider. Alle neuen Benutzer, die sich über diesen Provider registrieren, werden der angegebenen Gruppe hinzugefügt. Siehe Identity Provider. -
E-Mail-Domain-Gruppenregeln — bilden Sie E-Mail-Domain-Muster auf Gruppen ab. Benutzer, deren E-Mail einem Muster entspricht, werden automatisch der entsprechenden Gruppe hinzugefügt. Siehe E-Mail-Domain-Gruppenregeln.
Active-Directory-Gruppensynchronisation
Bei Verwendung eines Microsoft Active Directory Identity Providers werden AD-Gruppenmitgliedschaften bei jeder Anmeldung automatisch mit OctoMesh-Gruppen synchronisiert. Dies ermöglicht die Rollenvererbung direkt aus Ihrer AD-Gruppenstruktur.
Funktionsweise
- Während der LDAP-Authentifizierung liest der Identity Service das
memberOf-Attribut aus dem AD-Benutzereintrag - Der Common Name (CN) jeder AD-Gruppe wird extrahiert (z. B. wird aus
CN=FdaUsers,CN=Users,DC=example,DC=comFdaUsers) - Die extrahierten Gruppennamen werden mit vorhandenen OctoMesh-Gruppen namentlich abgeglichen (Groß-/Kleinschreibung wird nicht beachtet)
- Wenn eine passende OctoMesh-Gruppe existiert, wird der Benutzer als Mitglied hinzugefügt (sofern noch nicht vorhanden)
- Der Benutzer erbt dann alle Rollen, die dieser OctoMesh-Gruppe zugewiesen sind, welche in seinem Access Token erscheinen
Einrichtung
So aktivieren Sie die AD-Gruppen-zu-Rollen-Zuordnung:
- Erstellen Sie eine OctoMesh-Gruppe mit dem exakt gleichen Namen wie die AD-Gruppe (z. B.
FdaUsers) - Weisen Sie Rollen dieser OctoMesh-Gruppe zu (z. B.
Development,AssetRepositoryReadOnly) - Stellen Sie sicher, dass der AD-Benutzer Mitglied der AD-Gruppe ist (
memberOf-Attribut)
# Example: Create a group matching AD group "FdaUsers" and assign a role
octo-cli -c CreateGroup -n "FdaUsers" -d "Mapped from Active Directory" -rids "<role-rtid>"
Verhalten
| Szenario | Ergebnis |
|---|---|
| AD-Gruppenname entspricht einer OctoMesh-Gruppe | Benutzer wird als Mitglied hinzugefügt, erbt Gruppenrollen |
| AD-Gruppenname hat keine passende OctoMesh-Gruppe | Gruppe wird übersprungen (als Warnung protokolliert) |
| Benutzer ist bereits Mitglied der OctoMesh-Gruppe | Keine Änderung (idempotent) |
| Benutzer wird aus der AD-Gruppe entfernt | Mitgliedschaft in OctoMesh wird nicht automatisch entfernt |
| Gruppensynchronisation schlägt fehl | Anmeldung wird normal fortgesetzt; Fehler wird als Error protokolliert |
Die Gruppensynchronisation verläuft einseitig (AD zu OctoMesh) und ist nur additiv. Wenn ein Benutzer aus einer AD-Gruppe entfernt wird, wird er nicht automatisch aus der entsprechenden OctoMesh-Gruppe entfernt. Um einen Benutzer aus einer OctoMesh-Gruppe zu entfernen, verwenden Sie die Groups-API oder die CLI.
Die AD-Gruppensynchronisation ist nur für Microsoft Active Directory-Provider verfügbar. OpenLDAP-Provider extrahieren keine Gruppenmitgliedschaften aus dem Verzeichnis.