Security architecture
Designed around the breach you hope never happens.
Identity is where attackers aim first. These are the properties the control plane enforces, as built, with the limits written down.
01 / Tenancy
Per-tenant isolation
An organization's calls route only to the engine recorded on its row, never to one a request names. A caller aimed at another tenant gets the same not_found as a missing object, and its denied calls are logged under its own organization, so one tenant can neither fill nor read another's log.
02 / Audit
Tamper-evident audit
Each row is chained by SHA-256 to the one before it and written in the same transaction as the change it records. If the audit write fails, the change does not commit.
03 / Operators
No standing access
In break-glass mode the operator bearer alone can list organizations, read audit, and request elevation. Nothing else. Changes need a scoped, time-boxed elevation signed offline by a threshold of Ed25519 approvers.
04 / SAML
Per-application signing keys
Every SAML application created on adsas.id signs with its own keypair, so no two applications share the certificate a service provider trusts. Persistent NameIDs are HMAC-keyed per application, so relying parties cannot compute or link each other's identifiers. SHA-1 is refused outright.
05 / Context
Contextual access
Restrict management actions by verified authentication methods, sign-in age, transport peer, and access window. Rules only ever narrow access. Start in observe mode, read the versioned decision journal, then enforce.
seq 121 credential_issueprev 19b25856e1c1…hash 51a1953ca414…
seq 122 audit_retention_setprev 51a1953ca414…hash aa44099e7d84…
seq 123 recovery_requestprev aa44099e7d84…hash 007785752087…
Illustrative rows. The hashes are real SHA-256 values computed with the documented field order. Read the full security model.