CBOM Documentation

CBOM Secure

  • Product Overview
    • Overview
    • Dashboard Interface
    • Dashboard Operations
    • Data Visualization
    • Overview
    • Host
    • Template
      • Networked Deployments
      • Cloud Deployments
      • Off-Grid Deployments
    • Discovery History
      • Tags
      • Tag Scope
      • Integrations
      • Cloud Servers
      • CycloneDX Export
    • Sensors Reference
    • Overview
    • Summary Report
    • PQC Report
    • AI Services
    • Source Code Visualizer
    • Key
    • Certificate
    • CipherSuites
    • Analysis
    • Policy Management
    • User Policy
    • Standard Policy
    • Overview
    • Cases
    • Criteria
    • Notification Format
    • Rules
      • Connections
      • Health
    • User Management
    • Roles & Permissions
    • Audit Trail
    • System Logs
    • Top Bar and User Menu
    • System Configuration
  • Login and Authentication
    • Introduction
      • Components
      • Data Flows
      • Execution Models
      • Incremental Scanning
      • Security Model
      • Topologies
      • Sizing Guide
      • HA and Scaling
      • Ports and Firewall
      • Prerequisites
      • Docker Compose
      • Native on Linux
      • Deployment Server
      • Install Troubleshooting
      • Validation Checklist
      • Managing Services
      • Logging
      • Certificates
      • Configuration
      • Backup and Recovery
      • Ops Troubleshooting
      • Methods
      • SAML 2.0 SSO
      • OIDC and Entra ID
      • Token Authentication
      • Password Policy
      • Sensor vs Connector
      • Sensor Guide Structure
      • Capability Matrix
      • GitHub Sensor
        • AWS
        • Azure
        • Google Cloud
        • Active Directory
        • LDAP Directories
        • AD CS
        • Thales Luna HSM
        • Entrust nShield HSM
        • HashiCorp Vault KMIP
        • Windows Cert Store
        • Linux Trust Store
        • MSSQL TDE
      • Roadmap
      • Integration Model
      • CrowdStrike
      • ServiceNow
      • ServiceNow and Jira Setup
      • Notification Engine
  • Administrative Guide
    • Glossary
    • Configuration Reference
    • Data Model Reference
    • API Reference
    • API Authentication
    • CycloneDX Export Specification
    • Risk and PQC Scoring
    • Built-in Standards
    • Widget Catalogue
    • AI Services Data Handling

Roles & Permissions

Roles & Permissions is where you decide what each role on the platform is allowed to do. Every gate described elsewhere in this guide — who can open User Management, who can see Standard Policy, which buttons appear on the Host page — resolves back to the grid on this page.

It is reached from Administration > Roles & Permissions in the left navigation menu, and needs the config:read permission. Changing anything additionally needs config:update.

The Permission Matrix

Permissions are listed down the page and roles across it, with a checkbox at each intersection. A tick means that role holds that permission.

Roles and Permissions matrix

Each permission row carries three things:

  • A tier badge: R for a read-only permission, CUD for one that creates, updates or deletes. It is a quick way to see which rows hand out the ability to change data.

  • A display name: What the permission does in plain words, such as Delete Host.

  • The permission scope: The identifier the platform actually checks, such as host:delete. This is the name used throughout this guide when a page explains what it is gated on.

The Roles

Five roles are configurable here: Admin, Manager, User, Auditor and Viewer. These are the same roles offered when you assign roles to an account in User Management, and a user may hold more than one — their effective permissions are the union of every role they hold.

Super Admin is deliberately absent. As the page itself notes, Super Admin always has full access and is not shown, so it cannot be locked out by an edit here.

None of the five roles is locked in the shipped configuration, so every checkbox is editable. A role that is locked shows an indicator in its column heading and its checkboxes are disabled.

Permission Groups

Permissions are grouped by the area of the platform they govern, which is also the order they appear in:

  • User Management: read, create, update and delete users.

  • Config Management: read and update the platform configuration.

  • Discovery — Host: read, create, update and delete hosts, plus Import Hosts for the CSV import.

  • Discovery — Template: read, create, update and delete templates.

  • Discovery — Task: read, create and delete tasks, plus Run Discovery for deploying them.

  • Discovery — Integrations: read, create, update and delete integrations.

  • Discovery — Cloud Servers: read, create, update and delete cloud servers.

  • Discovery — Export: Export Report, which governs CycloneDX Export.

  • Policy Management — User Policy: read, create, update and delete user policies.

  • Policy Management — Standard Policy: the same four for standard policies.

  • Dashboard — Default Template: create and update the default dashboard layouts.

  • AI Services: Access AI Services.

  • Source Code Visualizer: Access Source Code Visualizer.

Note that User Policy and Standard Policy are separate groups with separate permissions. Granting one does not grant the other, which is why a role can see one of the two Governance entries and not the other.

The last permission groups and the Save Changes button

Changing a Role

Tick or clear a checkbox to grant or withdraw that permission for that role. Nothing is written until you click Save Changes, which appears at both the top and the bottom of the page and stays disabled until there is an edit to save — so a greyed-out button means no unsaved changes rather than a lack of permission to save.

Leaving the page without saving discards the edits.

  • Withdrawing a read permission hides the corresponding navigation entry outright. A role without user:read, for example, does not see Administration at all, and a role with none of policy:read or std-policy:read does not see Governance.

  • Withdrawing a create, update or delete permission leaves the page reachable but removes the action — the button or context-menu entry simply is not rendered.

  • Take care when editing Admin: removing config:read or config:update from it removes access to this page for anyone holding only that role. Super Admin remains able to restore it.

The Shipped Configuration

As delivered, the roles are graded from full access down to none:

  • Admin: every permission in the matrix.

  • Manager: user management, configuration, and host read, create and update — but not host:delete or host:import, and none of the template, task, policy or standard-policy permissions.

  • User: only Run Discovery and the CSV import.

  • Auditor: only Read Policy, matching a review-only remit.

  • Viewer: no permissions at all. It exists as a starting point for a role you intend to build up.

Because ai-services:access and source-code-visualizer:access are granted to Admin only, the Insights menu is invisible to the other four roles until you grant them here.

The permission catalogue

Permissions are grouped by the area of the product they govern. Each group holds the individual permissions for that area, and most follow a read / create / update / delete shape.

GroupGoverns
User ManagementListing, creating, editing and deleting user accounts
Roles and PermissionsViewing and changing this page itself
UI PreferencesA user's own theme, font, text size and table page size
System ConfigurationReading, saving, activating and diffing configuration versions; triggering a reload
Discovery — HostsHosts and off-grid hosts, including bulk CSV import
Discovery — Cloud ServersCloud discovery targets and their drafts
Discovery — Task TemplatesTemplates and the sensor schemas behind them
Discovery — TasksTasks, and running discovery
Discovery — Off-gridBundle generation and result import
Discovery — IntegrationsIntegration credentials, synchronisation and deduplication
Discovery — TagsTag definitions
Discovery — Tag ScopesNamed tag expressions and their cache
Cryptographic MaterialsReading the inventory, its history, and exporting it
Policy — User PoliciesPolicies your organisation writes
Policy — Standard PoliciesThe built-in baselines
Dashboards and LayoutsManaging and exporting dashboards; setting the default layout
NotificationsRules, templates, scopes, destinations, delivery and case handling
DeploymentReading deployment history
Audit TrailReading and exporting the audit trail
System HealthThe system logs and health views
AI ServicesAccess to the AI features
Source Code VisualizerAccess to the source-code visualisation

The catalogue is served by the platform and this page renders what it is given, so what you see here is always what the deployment actually enforces. It is not a second list maintained alongside the first — a permission that appears here is carried by a real route.

What a permission actually controls

This page governs the API, not just the console. Unticking a permission does not merely hide a button: the request is refused server-side as well. A user who loses the delete permission for policies cannot delete a policy from the console, from a script, or with a direct API call.

That is worth stating plainly because the opposite arrangement is common and is a trap. Where a permission model only drives the interface, the button disappears and the endpoint stays open — so the control is cosmetic, and anyone who can open a terminal still has it.

Every route in the product is either mapped to exactly one permission or explicitly exempt, and that mapping is verified rather than assumed, so a new endpoint cannot ship without one.

Reference reads

A few things every signed-in user can read regardless of role, because the console cannot render without them: the role list, the branding and display settings, and a handful of similar reference lookups. These carry no inventory data and no configuration secrets. They are deliberately not gated — making them permission-dependent would produce a blank page rather than a secure one.

The administrator floor

Three permissions cannot be removed from the administrator role:

PermissionWhy it is protected
View permissionsOpening this page
Manage permissionsChanging what is on this page
View usersFinding the account to fix

Saving the permission map replaces it wholesale. Without this floor an administrator could untick manage permissions for their own role and lock every administrator out of the only page that would undo it — with no way back short of editing the database by hand. The floor is reapplied on every save, so the three stay granted whatever the form submits.

This protects the role, not any individual account. An administrator can still remove the administrator role from a user, including themselves.

Enforcement modes

Authorisation runs in one of three modes, set in the platform's configuration file.

ModeBehaviour
EnforceA request without the required permission is refused. The normal setting.
Report onlyNothing is refused; what would have been refused is recorded. For validating a role change before committing to it.
OffNo check. For diagnosis only.

The mode is deliberately not editable from System Configuration. An administrator must not be able to switch authorisation off from a page that authorisation protects. Changing it means editing the configuration and restarting, which is a deliberate act with a record.

Report-only mode is how to change roles safely on a live deployment. Switch to report only, make the change, leave it for a working week, then read what would have been denied. A permission someone genuinely needs shows up as a denial from a real user doing real work, rather than as a support call after you have already enforced it.

When the permission map cannot be read

If the permission map cannot be read — a database blip, for instance — the request is allowed, and the decision is recorded as degraded.

This is deliberate, and it is worth understanding rather than discovering. "This caller lacks the permission" and "we could not find out what this caller has" are different statements, and only the first is an authorisation decision. Denying on the second turns three seconds of database trouble into a total lockout, including for the administrator who would fix it. The degraded marker is what makes the condition visible; watch for it rather than treating it as noise.

Designing a role set

Start from what the roles can do today, then narrow. The shipped map grants each role exactly what the API already permitted before permissions were enforced, so turning enforcement on changes nothing for anyone. That is the point: the first enforcement is a non-event, and every subsequent restriction is a deliberate decision you can attribute.

Give reads generously and writes narrowly. Most of the value of this product is in people looking at the inventory. Restricting reads produces workarounds — exported spreadsheets, shared accounts — that are worse for security than the read would have been.

Watch the permissions that cross a boundary:

PermissionWhy it is worth attention
Manage permissionsHolding it means being able to grant yourself anything else
Edit hostsHost records carry target credentials
Manage integrationsIntegration records carry third-party credentials
Run discoveryStarts activity against production systems
Export the audit trailThe whole organisation's activity record, in one file
Edit configurationChanges platform behaviour globally

Keep a break-glass administrator. At least one local administrative account that does not depend on the corporate identity provider, with a strong password in a credential store. A misconfigured federation should not be able to lock everyone out.

Changing a role safely

  1. Switch to report-only mode.

  2. Make the change here.

  3. Leave it for a full business cycle — a week, or a month if monthly reporting matters.

  4. Review what would have been denied.

  5. Grant back anything a legitimate user needed.

  6. Switch back to enforce.

A role change takes effect without a restart; the decision cache is short-lived, so allow up to a minute for it to propagate.

Recovering from a bad permission map

Keep a dump of the permission map before changing it. Restoring it is a single operation and does not require restoring the database — which matters, because the state you are recovering from is one where nobody can open this page.

If nobody can sign in at all and no dump exists, the map can be rebuilt from the API's own route definitions, which produces exactly what the product permitted before anyone edited it. Both operations are administrative tools run against the database; see Upgrade and Migration for how the tools in that family work.

Auditing

Every change on this page is recorded in the audit trail: who changed it, when, and the outcome. The record carries the roles the actor held at the time, not the roles they hold now — so a permission change made by someone who has since been demoted still reads correctly a year later.

Denials are recorded too, which makes an over-restrictive role visible as a pattern rather than as a series of individually puzzling complaints.

On this Page:
Support Privacy Policy Terms of Service

Copyright 2026 Encryption Consulting LLC. All rights reserved.