Scope
Inbound SCIM is exposed at:/scim/v2— the SCIM 2.0 service-provider surface used by customer IdPs./api/config/scim— the admin endpoints used to manage tokens and group-to-role mappings.
Security controls (built in)
- Distinct credential type. The SCIM bearer token is separate from
Genesis user sessions and personal access tokens. SCIM bearer tokens cannot
authenticate any Genesis API outside
/scim/v2. - Token storage. Persisted SCIM tokens are stored as hashes. Plaintext
tokens are returned only once, in the response to
POST /api/config/scim/tokens/rotate. - Token revocation.
POST /api/config/scim/tokens/revokedeactivates persisted tokens for the tenant immediately. - Tenant scoping. Group-to-role mappings and persisted tokens are scoped
to the tenant identifier configured via
GENESIS_SCIM_TENANT_ID. Mapping keys are normalized before persistence. - SCIM-managed user lock. Users carrying SCIM metadata
(
settings.scim) are protected from manual role mutation through the UI, the role API, and admin-facing tools. The SCIM actor remains authoritative for these users’ role memberships. - Soft deprovisioning. Genesis never hard-deletes users or roles in
response to SCIM operations. Deprovisioning sets
active=false. - Login admission gate. When
GENESIS_SCIM_REQUIRE_PROVISIONED_USERS=trueis set, inactive SCIM users are denied login and only active SCIM-provisioned users may sign in. In a Databricks App the variable is ignored (with a startup warning): SCIM is refused there, and who may sign in is the App’sCAN_USEpermission. - Audit logging.
SCIM_AUDIT_LOGrows include tenant, operation, resource type, resource id, external id, before JSON, after JSON, and timestamp. - SCIM-shaped errors. Invalid tokens, rate-limit events, and SCIM route
errors return SCIM-compliant error payloads with proper status codes,
scimType, anddetail.
Risks and recommended production controls
Verification checklist
Run these checks during pilot validation and again before promoting an integration to production:- An invalid SCIM bearer token is rejected at
/scim/v2with a SCIM-shaped401/403. - A SCIM bearer token cannot authenticate normal Genesis user APIs (for
example,
/api/rbac/me/permissionsrejects the token). - A non-admin Genesis user cannot manually edit roles for a SCIM-managed user through the UI or the role API.
- The SCIM actor can reconcile SCIM-managed roles by re-pushing groups.
- Once SCIM-only admission is enforced, deactivated SCIM users have no roles and cannot sign in.
- Removing a member from a mapped group does not deactivate the user.
- Deleting a mapped group from the IdP does not revoke the baseline user role from active users when that group maps to the baseline role.
- Audit rows are written for token rotation, token revocation, mapping replacement, user changes, group sync, group delete, and user deactivation.
Production rollout recommendation
Inbound SCIM is suitable for production customer use when all of the following are in place for the deployment:- The Pilot Runbook has been completed end-to-end, including the conformance harness.
- At least one IdP product has been validated against the deployment for the customer’s intended provisioning shape.
- Monitoring and alerting are wired up per the Monitoring page.
- For multi-replica deployments, strict global SCIM rate limits are enforced at ingress, WAF, API gateway, or a shared limiter.
- A documented rollback path exists, and a SCIM token rotation procedure is owned by the customer’s IdP admin.
- The verification checklist above passes against the deployment.

