Zum Inhalt springen

SSO, SCIM & Identitätsquellen (feste Attribution)

Identität ist die harte Abhängigkeit unter der gesamten Access Map: natives Audit attribuiert einen Zugriff einem Credential, und nur ein Identitäts-Roster kann dieses Credential an einen Agenten oder eine Person binden. Diese Seite bindet die drei Identitätsoberflächen an: Konsolen-SSO-Login, SCIM-Provisionierung in die Control Plane und die Roster-Quellen (LDAP, Okta, Entra ID), die die Attribution attributed statt approximate machen.

Föderierter Login wird über den Federation-Seam der Engine ausgeliefert. Die Posture ist konstruktionsbedingt ehrlich:

  • Die Endpunkte des Login-Flows existieren in jedem Build, und die Engine hält jeden geheimnisführenden Flow-Wert serverseitig — den CSRF-State, die OIDC-Nonce, den PKCE-Verifier (nur die S256-Challenge geht an den Provider). Authorization Code + PKCE ist immer aktiv.
  • OIDC/SAML-Anmeldung mit einem IdP ist in jeder Edition verfügbar, Community eingeschlossen. Konfigurieren Sie sie über die verwalteten SSO-Einstellungen der Konsole. Ohne verwaltete Konfiguration verwendet die Engine die Startumgebung (OLIVARES_SSO_PROTOCOL, OLIVARES_OIDC_* oder OLIVARES_SAML_*). Ohne konfigurierten Provider gibt NoFederation den Status 501 sso_not_configured zurück: Es fehlt die Konfiguration; das Protokoll ist nicht den kommerziellen Editionen vorbehalten.
  • Die Redirect-/ACS-URI, die Ihr IdP führen muss, ist exakt (…/v1/auth/federation/callback auf Ihrem Konsolen-Origin — RFC-9700-Exact-Matching, keine Präfix-Tricks).

Der Konsolen-Tab Identity & NHI → SSO & SCIM dokumentiert die Live-Konfiguration, prüft die Redirect-URI Ihres IdP gegen den exakt erwarteten Wert und zeigt den Verbindungszustand — und wo das Backend eines Panels ein deklarierter Vertrag ist, der noch nicht live ist, sagt es „backend pending“, statt fabrizierte Daten zu rendern:

Die Identity-&-access-Ansicht: Benutzer und Gruppen, SSO-Anmeldung, Maschinenidentitäten (NHI) und Schlüssel-Posture. Die Identity-&-access-Ansicht: Benutzer und Gruppen, SSO-Anmeldung, Maschinenidentitäten (NHI) und Schlüssel-Posture.

Der eingehende SCIM-Server ist eine Business-Funktion (Identity & Scale). Ein Community-Server stellt dieselben URLs bereit, authentifiziert das Token und antwortet dann mit HTTP 501 im SCIM-Fehlerformat, wobei Business genannt wird; es wird nichts gelesen oder geschrieben. In Community entfernen Sie eine Person aus der Organisation in der Konsole (Personen) oder mit DELETE /v1/members/{id}.

Mit Business ist die Control Plane ein standardkonformer SCIM-2.0-Service-Provider (RFC 7644) unter:

/v1/scim/v2/Users
/v1/scim/v2/Groups
  • Auth: ein tenant-gebundenes Admin-/Owner-API-Token auf der SCIM-Integration — dasselbe Opaque-Token-Modell wie der Rest der API, kein separater SCIM-Geheimnistyp. Die URLs sind immer eingehängt (nicht feature-gated); Community antwortet dort mit 501.
  • Users provisioniert und deprovisioniert Identitäten. Änderungen setzen die Zustellung und erfolgreiche Verarbeitung der SCIM-Anfrage voraus. Prüfen Sie die Antwort und die betroffenen Zugriffsrechte; ein HR-Ereignis allein belegt keinen abgeschlossenen Entzug. SCIM entfernt keine Betriebssystemkonten.
  • Groups führt Identitäts-zu-Gruppe-Referenzdaten. Jede Gruppe kann über mapped_role auf eine Control-Plane-Rolle abgebildet werden — und dieses Mapping ist operator-eigen: es wird auf der Control-Plane-Seite gesetzt und auditiert (scim.group.role.map); ein IdP-Push eskaliert nie still eine Rolle. Unbekannte Mitglieder in einer gepushten Gruppe werden übersprungen und auditiert, nicht erfunden.

3. Roster-Quellen: LDAP, Okta, Entra ID — Business/Enterprise

Abschnitt betitelt „3. Roster-Quellen: LDAP, Okta, Entra ID — Business/Enterprise“

Roster-Quellen speisen das Identitätsinventar von Modul VI und — das ist der Punkt — geben Modul III die Bindungen, die die Attribution hochstufen:

{
"sources": [
{
"name": "corp-ldap",
"kind": "ldap",
"tenant": "<tenant-id>",
"config": {
"url": "ldaps://ldap.corp.example:636",
"bind_dn": "cn=olivares-ro,ou=svc,dc=corp,dc=example",
"bind_password": "<reference>",
"base_dn": "dc=corp,dc=example"
}
},
{
"name": "okta",
"kind": "idp",
"tenant": "<tenant-id>",
"config": { "provider": "okta", "base_url": "https://corp.okta.com", "api_token": "<reference>" }
}
]
}

Wichtige LDAP-Optionen (aus dem ausgelieferten Deskriptor): user_filter / group_filter, privileged_group_dns (Gruppen, deren Mitgliedschaft selbst ein Signal für privilegierten Zugriff ist), nhi_dn_suffix (welcher Teilbaum nicht-menschliche Identitäten enthält), start_tls, page_size. Die idp-Art nimmt provider: okta (mit api_token) oder provider: entra (mit tenant_id / client_id / client_secret); okta und entra funktionieren auch direkt als kind.

Eine Roster-Quelle registriert Identitäten (per External ID) und, wo das Verzeichnis sie deklariert, erlaubte Grants. Wenn der Ursprung einer beobachteten Kante mit einer nicht gemeinsam genutzten Roster-Identität übereinstimmt, bindet Modul III den Zugriff an diese Identität, und die Confidence der Kante wird auf attributed hochgestuft. Identitäten, die sich mehrere Workloads teilen, bleiben ehrlich approximate — das Roster kann ein Credential nicht entteilen; nur das Ausstellen einer Per-Agent-Identität kann das (die Brücke zur Governance).

Dedizierte Agent-Identity- und Workload-Identity-Arten (die Agent-Federation-Quellen — Entra Agent ID, AgentCore, SPIFFE und vergleichbare) sind das feste Per-Agent-Signal; Gruppen-/Verzeichnis-Roster schärfen Personen und Service-Accounts.

  • Community enthält SSO mit einem IdP. Routing zwischen mehreren IdPs und Gruppenzuordnung bei der Anmeldung bietet das entsprechende private Identitätsmodul. Die allgemeine Verwaltung von Benutzern, Gruppen und Berechtigungen bleibt in Community verfügbar.
  • Ein Roster kann ein gemeinsam genutztes Credential nicht reparieren. Es kann Ihnen nur ehrlich sagen, dass das Credential gemeinsam genutzt wird.
  • SCIM ist Inbound-Provisionierung — die Control Plane pusht keine Identitäten zurück an Ihren IdP, und der Security-Event-Token-Receiver ist eine Inbound-Oberfläche, kein Outbound-Webhook.