Roles & permissions
Taranac’s RBAC (role-based access control) governs who may do what inside the admin console — view the dashboard, edit a RADIUS profile, delete a network device, export logs, and so on. It is the control plane for your own operators, not for the endpoints and users that authenticate through Taranac.
- view
- create
- edit
- delete
- export
- view
- create
- edit
- delete
- export
How it fits together
Section titled “How it fits together”Permissions in Taranac flow through three objects:
- Permission model (also called an RBAC model or role) — a named set of allowed actions, e.g. auditor.
- Group — users are organised into groups; a group is linked to one permission model.
- User — an administrator inherits the permissions of every group they belong to.
A user is never assigned a role directly. You assign a permission model to a group, then put users in that group. This is the same group object used for TACACS+/RADIUS authorisation, so one group can carry both an admin role and network-access settings.
Permission model ──assigned to──▶ Group ──contains──▶ User (administrator)When a user logs in, Taranac computes their effective permissions by merging the models of all their groups (see Permission resolution).
The permission model
Section titled “The permission model”A permission model is a matrix of sections and actions:
- A section is a feature area —
users,devices,tacacs_profiles,nac_endpoints,audit_logs, and so on. - An action is something you can do within that section — typically
view,create,edit,delete, plus section-specific ones such asexport,manage_members,lock_unlock,revoke, orrotate_key.
Each action is simply on or off. A model that grants devices.view and devices.edit but not devices.delete lets its members open and modify network devices but not remove them.
Sections are grouped into categories for display:
| Category | Sections it covers |
|---|---|
| General | dashboard |
| Identity | users, groups, ldap, domain (the Active Directory machine account used for MS-CHAPv2) |
| Network | devices, device_groups, network_objects |
| AAA | tacacs_profiles, tacacs_templates, tacacs_settings, radius_profiles, radius_templates, radius_settings, command_sets, aaa_policy, aaa_logs_view, log_exclusions |
| NAC | nac_endpoints, nac_endpoint_groups, nac_auth_profiles, nac_policy, nac_pki, nac_sessions, nac_settings, captive_portals, captive_portal_sessions, nac_logs_view |
| NCM | Config Tracker: ncm_devices, ncm_sources, ncm_recipes, ncm_scrub_sets, ncm_tracked_configs, ncm_credentials, ncm_jobs |
| Security | rbac, mfa, audit_logs, backup, crypto |
| System | settings, email, monitoring, syslog, alerts, collectors, reports, update_feed, license (licensing), cluster (HA cluster) |
Administrators bypass RBAC
Section titled “Administrators bypass RBAC”A group can be flagged as an admin group (is_admins). Members of an admin group have full, unconditional access to everything; their permission model, if any, is ignored. The initial admin account created on first boot belongs to such a group.
Built-in roles
Section titled “Built-in roles”Taranac seeds three ready-made permission models on first start. They are convenience templates — fully editable and deletable like any model you create yourself.
| Role | What it grants |
|---|---|
| operator | Day-to-day management across all operational sections: view, create, edit and most actions. Denied: delete, key rotation, and certificate revocation everywhere. Security/system sections (RBAC, settings, crypto, backup, email) are view-only. |
| auditor | Full read-only access to every section, plus every export action. No create/edit/delete. |
| demo | Full read-only access to the entire system — every view, plus reports.run so a report can be previewed on screen. Nothing else, and no exports. Useful for read-only demos and screen-shares. |
All three are generated from the live permission registry at seed time rather than written out by hand, so they cover every module’s sections — including modules added after the installation was built.
Managing roles in the console
Section titled “Managing roles in the console”Open Infrastructure → Identity → RBAC.

The RBAC Models screen — the three seeded roles on a fresh installation.
The list carries Name, Description, Used by and Created, is searchable across name and description, sorts on name and creation date, and lets you hide columns from the ⚙ toggle. Click a row to open the model; Add Model creates a new one. Opening a model gives you the editor directly if you hold rbac.manage — with only rbac.view the same page opens read-only.
Where a model is used, and deleting one
Section titled “Where a model is used, and deleting one”Since 1.1.0 every model carries a Used by count, and clicking it opens the where-used drawer listing exactly what points at the model:
- Groups that have the model assigned. Since migration 0023 this is a
RESTRICTforeign key: a model assigned to any group cannot be deleted out from under it. The earlier behaviour silently blanked the group’s permission model. - LDAP configurations that name the model as their default role or in a per-group override (since 1.2.1). These live in settings rather than in a foreign key, so before 1.2.1 they were invisible to the where-used view and the model could be deleted, leaving the configuration pointing at nothing.
Both are blocking references. The delete is refused with the holders itemised by name — unassign or repoint them first, then delete.
The permissions editor
Section titled “The permissions editor”A model has a Name (required, unique, up to 100 characters) and an optional Description, followed by the permissions matrix. The matrix is organised by category; each section is a collapsible card — all collapsed to start with — badged with how many of its actions are granted out of how many exist (grey for none, yellow for some, green for all), with:
- an All toggle that grants or revokes every action in the section at once, and
- a switch per action, labelled and described by the backend rather than by the UI.
Tick exactly the actions the role should allow, then Save.
Assigning a role to administrators
Section titled “Assigning a role to administrators”Roles take effect only once attached to a group:
- Create or edit the permission model under Infrastructure → Identity → RBAC.
- Go to Infrastructure → Identity → Groups, open the relevant group, and set its RBAC model.
- Add the administrators to that group under Groups → members.
Changes apply at the user’s next login, because effective permissions are computed during authentication.
Since 1.2.8, opening a group whose own Web console access is set to Deny shows the RBAC model picker read-only, hinting “Kept, but not applied while this group denies the console.” A role granted to people who cannot reach the console grants nothing, but the assignment stays visible — nothing was deleted, and that has to be something you can see. Switch the access back and the role applies again. This follows the group’s own mode, not the resolved one: a group left on System default has decided nothing yet, so its picker stays editable — you may well be preparing a role before opening the console to it. The mode itself is documented under Web console access.
Permission resolution
Section titled “Permission resolution”When a non-admin administrator logs in, Taranac:
- Loads every group the user belongs to.
- If any group is an admin group → grants full access (RBAC bypassed).
- Otherwise merges the permission models of all their groups using a logical OR: an action is allowed if any group grants it.
- If the user is in no groups — or in groups that have no permission model — they have no permissions and cannot use the console.
You can inspect any user’s merged result; the console exposes their effective permissions, which is the quickest way to answer “why can this person do X?”.
Common scenarios
Section titled “Common scenarios”Read-only auditor. Compliance staff who must see everything but change nothing. Assign the auditor role (read-only everywhere, plus log/audit export) to their group. They can review configuration, sessions and logs and pull exports for evidence, but every create/edit/delete button is rejected.
NAC operator. A team that runs day-to-day network access — onboarding endpoints, adjusting endpoint groups, watching sessions — but should not touch AAA policy or system settings. Create a custom model granting view/create/edit on nac_endpoints and nac_auth_profiles, the same plus manage_members on nac_endpoint_groups, view/manage on nac_sessions, and view on the AAA and Network sections — leaving Security and System off.
Full administrator. Platform owners. Put them in the admin group (is_admins) — they bypass RBAC and hold every permission implicitly. Keep this group small.
Help-desk / limited operator. Front-line staff who reset and unlock accounts but never delete them. Start from operator (which already excludes deletion) or build a model granting users.view, users.edit, users.lock_unlock and little else.
When to use what
Section titled “When to use what”| You want someone to… | Use |
|---|---|
| Do everything, no restrictions | Admin group (is_admins) — not a model |
| See everything, change nothing | auditor role |
| See everything for a demo, no exports | demo role |
| Run daily operations without deleting or touching system config | operator role |
| Operate one area only (e.g. NAC, or users) | Custom model scoped to that category |
| Be blocked entirely | Remove from all groups, or use a group with no model |
Reference: common actions
Section titled “Reference: common actions”The four CRUD verbs carry most of the matrix; the rest are section-specific.
| Action key | Meaning | Where |
|---|---|---|
view | Read/list the section’s records | Almost every section |
create / edit / delete | Add, modify and remove records | Most record-holding sections |
manage | Manage a configuration area as a whole | mfa, rbac, aaa_policy, nac_policy, alerts, backup, license, cluster, update_feed, domain, nac_sessions, captive_portal_sessions |
export | Export data to XLSX/CSV | nac_logs_view, reports, and — declared but not enforced — aaa_logs_view, audit_logs (see below) |
test / reload | Validate a configuration, or reload a live policy | aaa_policy, nac_policy, syslog (test) |
manage_members | Add/remove members | groups, device_groups, nac_endpoint_groups |
lock_unlock | Lock or unlock user accounts | users |
acknowledge | Acknowledge an alert | alerts |
manage_configs / run_sync / test_connection / browse_directory | Edit an LDAP configuration, run a sync, test the connection, browse the directory tree | ldap |
join | Join this node to the Active Directory domain — split from manage because a join needs a privileged AD credential and writes an object into AD | domain |
manage_templates / send_test | Edit email templates, send a test message | email |
download | Download a backup archive | backup |
revoke | Revoke an issued certificate | nac_pki |
run / build / schedule | Run a report, author datasets and templates, manage scheduled deliveries | reports |
reveal / reveal_raw | Reveal a stored credential secret, or a snapshot’s raw unmasked configuration — high-privilege and separately audited, deliberately not implied by view | ncm_credentials, ncm_tracked_configs |
rotate_key | Master-key rotation. The permission and its endpoint still exist, but the endpoint always answers 501: rotation rewrites encrypted columns across ~20 tables plus the key material on every node, so it is a console/CLI operation, not an API call. The Crypto page was removed from the UI in 1.2.2 for the same reason. | crypto |
Available actions vary per section; the permissions editor always shows the exact set each section supports, with the label and description the owning module declared.
Related
Section titled “Related”- Users & groups — create groups, manage membership, and attach a permission model
- LDAP directories — map directory groups, where only the admin flag, MFA requirement and permission model are editable on synced groups
- Multi-factor authentication — enforce MFA per group at login
- AAA policy and NAC overview — network-access policy, which is distinct from console RBAC
- Config Tracker credentials — where the separately-audited
revealpermission applies - Reports — the
run/build/schedule/exportsplit on thereportssection - Licensing — the License section (
view/manage) gates who can see and replace the Pro license - High availability — the Cluster section (
view/manage) gates cluster status, join tokens and node decommission - Taranac on GitHub