XKOVA Docs

Authorization and RBAC

Authentication proves who is calling. Authorization decides what they may do. XKOVA has one authorization control plane: every mutation is checked against a single permission registry, and a role is just a named bundle of permissions resolved per request.

How a request is authorized

A principal, either a staff session or an API key, carries one or more roles. At request time the platform resolves those roles to a permission set and checks the permission the route requires. There is no hand-rolled role check anywhere; the same registry backs every mutation, every governed action, and every audit row.

  • owner and admin are wildcards: they hold every non-platform permission.
  • Other built-in roles are explicit bundles scoped to a domain.
  • A tenant may define custom roles, bounded by anti-escalation: you can only grant a role whose permissions you already hold.

Built-in roles

RoleAuthority
ownerFull tenant authority. Required to arm break-glass.
adminFull tenant authority, not the literal owner. May opt out of a domain (for example no treasury).
compliance_officerCompliance and verification oversight. Reads the approval trail but cannot attest.
customer_serviceRead payments and escrows, manage contacts, place and release holds.
treasury_adminFull treasury authority over vaults, signers, thresholds, and transfers.
treasury_signerTreasury reads plus transfer draft, approve, and execute.
treasury_viewerRead-only treasury.
tokenize_adminFull digital-asset and real-world-asset authority: deploy, mint, burn, schemas, distributions.
tokenize_minterToken read plus mint only.

The permissions group into domains: treasury and money, identity and keys and governance, firewall and compliance and config, tenant and branding and reporting, and digital assets. For the complete role model and the generated permission catalog, see Roles and Permissions.

Tenant scope

An API key carries a scope as well as roles. Every integrator credential is tenant scope: it acts within the single tenant the key is bound to, and that tenant is fixed by the key. A typical caller is an integrator backend acting for its own institution.

There is also an internal platform scope that sits above tenants. It is used only by XKOVA platform operations and is not a surface integrators call.

Platform-only permissions, such as approving production access, are reachable only by a platform principal. They are never granted to a tenant role.

Separation of duties and quorum

High-blast actions are gated by an approval quorum rather than a single permission. The request creator is recorded and cannot self-approve whenever the approval clause can be satisfied without them. Break-glass is the only bypass: two-of-two to arm, time-boxed, with every action under it tagged and audited at high severity. See Policies and Quorum Governance for the governance model and Audit Log for what each authorized action records.

Related

See Authentication for how a credential proves itself, Roles and Permissions for the full catalog, and the Errors page for the role_denied response.