Skip to content

Security Boundaries

Four boundaries a tenant administrator should understand.


1. Tenant isolation

Every query in OrviQ is automatically tenant-scoped. Module code does not filter by tenant; the data layer enforces it.

The practical consequence: a defect in module code cannot leak another tenant's data, because the isolation does not depend on module code remembering to apply it.

Scoped by tenantIncludes
All governed recordsRequirements, controls, evidence, risks, findings, actions, policies, incidents, everything
Business reference sequencesTenant, entity type and year scoped
AI interactionsPrompts, responses and provenance
Audit trailTenant activity
Settings and configurationAll of it

See Tenant Isolation.


2. The platform console boundary

Platform permissions can never be represented in a tenant role

Platform-console permissions are deliberately outside the tenant permission catalogue. There is no tenant role that can be constructed to include them, and no configuration that grants a tenant administrator platform access.

The boundary is not a permission check — the permissions do not exist in the tenant namespace at all.

Tenant administrationPlatform administration
ScopeYour tenantThe service
WhoYour administratorsThe service operator
CoversUsers, roles, workflow, settings, integrationsTenants, provisioning, deployments, platform security
Documented in customer docsYesNo

3. Administration is not governance authority

Four permissions are never auto-granted, including to Tenant Administrators:

PermissionWhat it governs
tprm.assessThird-party risk assessment
tprm.classifyRegulatory classification
tprm.decideEngagement approval
assessment.review_self_overrideThe segregation-of-duties break-glass

A related pattern applies to control_source.override_trust, which is deliberately narrower than control_source.publish and cannot be consumed by the person who granted it.

The principle: whoever maintains the platform is not thereby qualified to make professional governance decisions inside it. See Segregation of Duties.


4. What secrets are never exposed

SecretHandling
API tokensShown once at creation, never again
AI provider keysOnly the last few characters displayed
Connection credentialsNever displayed after entry
Provider endpoint internalsNever exposed to tenants

Rotation is supported everywhere credentials are held, and preserves the identity and history of the thing being rotated.

See Secret Handling Principles.


The audit trail

Every governed mutation produces an audit record: the actor, the action, the object, and the before and after state.

Notable properties:

  • No parallel audit systems. Modules use the same audit path rather than maintaining their own.
  • Dedicated events for sensitive actions. The segregation break-glass raises its own distinct event rather than a generic one, so it can be found without knowing to look for it.
  • Workflow transitions are captured alongside domain state changes.

Reading the audit trail requires audit.read.


What a tenant administrator should review periodically

Role assignments against workflow chains. One person holding two consecutive stage roles collapses a chain's depth. This is the most common way a well-designed approval chain silently weakens. See Workflow Configuration.

Holders of never-auto-granted permissions. tprm.decide in a role held by two people is meaningful; in a role held by twenty it is not.

Break-glass usage. assessment.review_self_override raises a dedicated audit event. Any use should be explicable.

API key inventory and scopes. Unscoped or shared keys, and keys belonging to decommissioned integrations.

Organisational unit coverage. Users without a unit break the owner_department_head resolver and are absent from department reporting — silently, in both cases.

Movers. Someone who moves from operations to compliance and retains both role sets can approve their own prior work. Movers are a bigger segregation risk than joiners or leavers.


Permissions

ActionPermission
Read the audit trailaudit.read
Manage users and rolesusers.*, roles.*
Manage API keys and webhooksapi.manage, webhook.manage
Edit tenant settingssettings.manage
Configure workflowsworkflow.configure

Example

A tenant administrator's quarterly review.

CheckFindingAction
Role assignments against chainsThe Compliance Officer and Compliance Manager roles were both held by one individual, collapsing the six-eye policy chainReassigned; a second Compliance Officer appointed
Never-auto-granted permissionstprm.decide held by one person, with no deputyDeputy added, to avoid a single point of dependency
Break-glass usageNo uses in the periodNo action
API keysTwo keys belonging to a decommissioned integrationRevoked
Organisational unit coverage11 users without a unit, all recent joinersUnits assigned; onboarding step added
MoversThree movers in the period; one retained a prior operations role alongside a new compliance rolePrior role removed

The mover finding was the most consequential. The individual could, in principle, have approved control assessments they authored in their previous role. Nothing had happened — but the configuration permitted it, and only a review would have found it.


OrviQ Enterprise Governance, Risk & Compliance Platform