Zum Hauptinhalt springen

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:

  1. Die effektiven Rollen eines Subjekts (Benutzer oder Client) umfassen alle Rollen aus den Gruppen, denen es direkt angehört
  2. Wenn eine Gruppe untergeordnete Gruppen enthält, werden auch die Rollen dieser untergeordneten Gruppen einbezogen
  3. Die Auflösung unterstützt bis zu 10 Ebenen der Verschachtelung mit Zykluserkennung
  4. 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:

MitgliedstypBeschreibung
UsersLokale Benutzer im selben Tenant
External UsersTenantübergreifende Benutzerzuordnungen (Benutzer aus einem übergeordneten Tenant)
ClientsOAuth-Clients (Maschine-zu-Maschine-Identitäten) — sie erben die Rollen der Gruppe auf dieselbe Weise wie Benutzer
Child GroupsVerschachtelte Gruppen für hierarchische Rollenvererbung
Clients in Gruppen

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>"
Zirkuläre Referenzen

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:

  1. Standardgruppe am Identity Provider — setzen Sie die Eigenschaft DefaultGroupRtId an einem Identity Provider. Alle neuen Benutzer, die sich über diesen Provider registrieren, werden der angegebenen Gruppe hinzugefügt. Siehe Identity Provider.

  2. 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​

  1. Während der LDAP-Authentifizierung liest der Identity Service das memberOf-Attribut aus dem AD-Benutzereintrag
  2. Der Common Name (CN) jeder AD-Gruppe wird extrahiert (z. B. wird aus CN=FdaUsers,CN=Users,DC=example,DC=com FdaUsers)
  3. Die extrahierten Gruppennamen werden mit vorhandenen OctoMesh-Gruppen namentlich abgeglichen (Groß-/Kleinschreibung wird nicht beachtet)
  4. Wenn eine passende OctoMesh-Gruppe existiert, wird der Benutzer als Mitglied hinzugefügt (sofern noch nicht vorhanden)
  5. 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:

  1. Erstellen Sie eine OctoMesh-Gruppe mit dem exakt gleichen Namen wie die AD-Gruppe (z. B. FdaUsers)
  2. Weisen Sie Rollen dieser OctoMesh-Gruppe zu (z. B. Development, AssetRepositoryReadOnly)
  3. 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​

SzenarioErgebnis
AD-Gruppenname entspricht einer OctoMesh-GruppeBenutzer wird als Mitglied hinzugefügt, erbt Gruppenrollen
AD-Gruppenname hat keine passende OctoMesh-GruppeGruppe wird übersprungen (als Warnung protokolliert)
Benutzer ist bereits Mitglied der OctoMesh-GruppeKeine Änderung (idempotent)
Benutzer wird aus der AD-Gruppe entferntMitgliedschaft in OctoMesh wird nicht automatisch entfernt
Gruppensynchronisation schlägt fehlAnmeldung wird normal fortgesetzt; Fehler wird als Error protokolliert
Synchronisationsrichtung

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.

OpenLDAP

Die AD-Gruppensynchronisation ist nur für Microsoft Active Directory-Provider verfügbar. OpenLDAP-Provider extrahieren keine Gruppenmitgliedschaften aus dem Verzeichnis.