Roles and Permissions (RBAC)¶
MazeVault Role-Based Access Control — Roles, Permissions, and Domain Separation
Document Version: 2.2.0
Last Updated: 2026-05-30
1. Overview¶
MazeVault uses a Role-Based Access Control (RBAC) system to manage user permissions. Each user is assigned one or more roles that determine what they can see and do in the system.
Key principles:
- Least Privilege — Users receive only the permissions they need
- Domain Separation — Certificate Manager cannot access secrets; Secret Manager cannot access certificates
- Environment Scoping — A role can be assigned for one environment (dev, staging, prod), one project or one organization. Such an assignment applies there only, whichever way the user signs in (web interface, API token, JWT). The project of a request is the one its path names (
/projects/{id}) or the one the resource it names belongs to (a secret, also an archived one, a certificate, an approval request or policy, a project integration, a sync rule or conflict, a consistency group or warning). Aproject_idin the query or the JSON body is the request's project only on the routes that act on that project: reading a secret by project and key (GET /api/v1/secrets/,GET /api/v2/secrets), creating a secret (POST /api/v1/secrets/,POST /api/v2/secrets), comparing environments (POST /api/v2/secrets/compare), drift detection (POST /api/v1/secrets/drift/detect) and the consistency groups of a project (GET /api/v1/consistency-groups). On every other route it is no scope, and one that differs from the route's project is refused, whatever the body's Content-Type: the check reads the body as the route does (its first JSON value, keys in any case), treats aproject_idororganization_idthat is not a string as one where nobody holds a scoped role, and refuses a write body over 16 MiB with 413 (after checking that the caller holds the permission at all). OnPUT /api/v1/certificates/{id}andPUT /api/v1/rotation/templates/{id}the body'sproject_idmoves the resource: the permission must hold in its project and in the target project. Updating a sync rule, an approval policy or a configuration template never changes its project or organization, and a sync rule takes only an integration of its own project. A project-scoped assignment does not count for a request without a project, so managing users, roles, the organization and its settings, or creating projects, needs a role assigned without a project. A web interface session and an API token request belong to the default organization. A request that names another organization (its/organizations/{id}path, anorganization_idquery or body field) needs the permission there as well, so an assignment scoped to one organization applies to that organization only. The routes that act on several projects (the projects list, drift detection over every project, the migration of several secrets to zero-knowledge, the organization's secret naming check) accept a role on any project and then act per project: the projects list shows only the projects the user may read, and the others need the permission on every project they touch. On a project page the web interface shows the actions the user may take in that project. The role shown on a user is the highest role assigned without a scope; it is a label and grants nothing by itself. A user created at first sign-in (SSO, LDAP, SAML, SPNEGO) or by SCIM is assigned its default role everywhere: Viewer, or the default role configured for SPNEGO. - Two-Level Cloud Access — Access to Azure resources requires BOTH MazeVault role AND Azure RBAC permission
2. System Roles¶
MazeVault provides the following built-in roles:
| Role | Description | Domain |
|---|---|---|
| Viewer | Dashboard and system outputs only — no access to secrets, certificates, or projects | Read-only |
| User | Standard user — can create/edit secrets, request certificates, view projects | General |
| Certificate Manager | Full certificate lifecycle management — NO access to secrets | Certificates |
| Secret Manager | Full secret lifecycle management — NO access to certificates | Secrets |
| Project Admin | Full project management including create/delete projects, manage settings | Administration |
| Admin | Full system access — all permissions | System |
| Auditor | Read-only access to audit logs, user lists, and deployment status | Compliance |
| Finance | Read-only access to billing and usage data | Billing |
Domain Separation
Certificate Manager and Secret Manager are mutually exclusive domains. A Certificate Manager cannot view or manage secrets, and a Secret Manager cannot view or manage certificates. This ensures separation of duties in enterprise environments.
3. Permission Matrix — Navigation¶
What each role can see in the MazeVault UI:
| Section | Viewer | User | Cert Mgr | Secret Mgr | Project Admin | Admin | Auditor | Finance |
|---|---|---|---|---|---|---|---|---|
| Dashboard Overview | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | 📖 | ❌ |
| Dashboard Certificates | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ |
| Dashboard Entra | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ |
| Projects | ❌ | 📖 | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ |
| Discovered Certificates | ❌ | 📖 | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ |
| Deployment | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ |
| Access Control | ❌ | 📖 | 📖 | 📖 | ✅ | ✅ | 📖 | ❌ |
| Organization Settings | ❌ | ❌ | ❌ | ❌ | ✅ | ✅ | ❌ | ❌ |
| Environments | ❌ | 📖 | 📖 | 📖 | ✅ | ✅ | ❌ | ❌ |
| Usage and Billing | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ❌ | 📖 |
| Archived Items | ❌ | ❌ | 📖 | 📖 | ✅ | ✅ | ❌ | ❌ |
| Audit Logs | ❌ | ❌ | ❌ | ❌ | ✅ | ✅ | 📖 | ❌ |
| KeyTab Management | ❌ | 📖 | ❌ | ✅ | ✅ | ✅ | 📖 | ❌ |
| Reports / System Outputs | ❌ | 📖 | 📖 | 📖 | ✅ | ✅ | 📖 | ❌ |
📖 = Read-only access
4. Permission Matrix — Secrets¶
| Action | Viewer | User | Cert Mgr | Secret Mgr | Project Admin | Admin |
|---|---|---|---|---|---|---|
| Read secret value | ❌ | ✅ | ❌ | ✅ | ✅ | ✅ |
| Create secret | ❌ | ✅ | ❌ | ✅ | ✅ | ✅ |
| Edit secret | ❌ | ✅ | ❌ | ✅ | ✅ | ✅ |
| Rotate secret | ❌ | ✅ | ❌ | ✅ | ✅ | ✅ |
| Archive secret | ❌ | ✅ | ❌ | ✅ | ✅ | ✅ |
| Delete secret | ❌ | ❌ | ❌ | ✅ | ✅ | ✅ |
| Permanently delete | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ |
| Import/Export | ❌ | ✅ | ❌ | ✅ | ✅ | ✅ |
5. Permission Matrix — Certificates¶
| Action | Viewer | User | Cert Mgr | Secret Mgr | Project Admin | Admin |
|---|---|---|---|---|---|---|
| Read certificate | ❌ | ✅ | ✅ | ❌ | ✅ | ✅ |
| Request certificate | ❌ | ✅ | ✅ | ❌ | ✅ | ✅ |
| Import certificate | ❌ | ✅ | ✅ | ❌ | ✅ | ✅ |
| Approve CSR | ❌ | ❌ | ✅ | ❌ | ✅ | ✅ |
| Enroll certificate | ❌ | ❌ | ✅ | ❌ | ✅ | ✅ |
| Archive certificate | ❌ | ❌ | ✅ | ❌ | ✅ | ✅ |
| Revoke certificate | ❌ | ❌ | ✅ | ❌ | ✅ | ✅ |
| Permanently delete | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ |
6. Permission Matrix — Projects & Organization¶
| Action | Viewer | User | Cert Mgr | Secret Mgr | Project Admin | Admin |
|---|---|---|---|---|---|---|
| View projects | ❌ | 📖 | ✅ | ✅ | ✅ | ✅ |
| Create project | ❌ | ❌ | ❌ | ❌ | ✅ | ✅ |
| Edit project | ❌ | ❌ | ❌ | ❌ | ✅ | ✅ |
| Archive project | ❌ | ❌ | ❌ | ❌ | ✅ | ✅ |
| Delete project | ❌ | ❌ | ❌ | ❌ | ✅ | ✅ |
| Permanently delete | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ |
| View org settings | ❌ | ❌ | ❌ | ❌ | ✅ | ✅ |
| Edit org settings | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ |
| Manage users/roles | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ |
6.1 Resource Visibility Policy¶
resource_visibility_policy is a special organization-level governance template under Organization Settings → Config Templates.
- Only Admin users with organization-admin authority can create, preview, edit, delete, or see this template type.
- Project Admin can still access Organization Settings generally, but does not gain access to this admin-only template type.
- Preview uses live Azure / Microsoft Graph discovery data and requires
project_idcontext so MazeVault can resolve the correct organization policy. - Discovery filtering is enforced server-side for non-admin callers. Hidden app registrations and Key Vaults are removed from discovery results instead of being shown as placeholders.
- Key Vault matching uses Azure ARM resource tags. App registration matching uses Microsoft Graph
application.tags.
This keeps sensitive discovery governance with organization administrators while preserving the broader config template workflow for non-admin template types.
7. Role Incompatibilities¶
Certain roles have domain separation and redundancy rules:
| Role Combination | Allowed? | Reason |
|---|---|---|
| Certificate Manager + Secret Manager | ⚠️ Not recommended | Defeats domain separation purpose |
| Certificate Manager + User | ✅ Allowed | User adds general read access |
| Secret Manager + User | ✅ Allowed | User adds general read access |
| Any role + Admin | ⚠️ Not recommended | Admin already has all permissions — additional roles are redundant, unnecessary, and create complexity in audit trails |
| Auditor + any operational role | ⚠️ Not recommended | Auditor should be independent |
Admin Role Best Practice
The Admin role includes every permission in the system. Assigning additional roles alongside Admin provides no extra access and is not recommended. It complicates role auditing and may create confusion about the actual source of permissions. If a user needs Admin access, assign only the Admin role.
8. Azure Cloud Resource Access — Two-Level Control¶
When MazeVault is integrated with Azure Key Vault, access to cloud resources requires two simultaneous conditions:
- MazeVault RBAC — User must have the appropriate MazeVault role and permission
- Azure RBAC — User must have the corresponding Azure role assignment on the Key Vault
Managed Identity vs User Access
Managed Identity is used ONLY for automated operations (scheduled rotations, background sync). For ALL user-initiated operations (reading secrets, manual rotation, editing), the user's own Azure identity is used via On-Behalf-Of (OBO) token flow. MazeVault never uses Managed Identity to bypass Azure RBAC for user operations.
| Operation | Token Type | Azure RBAC Required |
|---|---|---|
| Scheduled secret rotation | Managed Identity | MI must have Key Vault access |
| User reads secret from KV | OBO (user token) | User must have Key Vault Secrets User |
| User edits secret in KV | OBO (user token) | User must have Key Vault Secrets Officer |
| Agent certificate discovery | Managed Identity | MI must have read access |
| Admin imports secrets from KV | OBO (user token) | User must have Key Vault Secrets Officer |
9. Group Mapping¶
MazeVault supports mapping external identity provider groups to system roles:
- Entra ID (Azure AD) — Map Entra security groups to MazeVault roles
- LDAP / Active Directory — Map LDAP groups to MazeVault roles
- SPNEGO / Kerberos — Map Kerberos groups via LDAP fallback
Group mappings are managed in Access Control → Groups tab. Each mapping specifies:
- External group identifier
- Target MazeVault role
- Optional scope (organization, project, environment): a scoped mapping grants its role in that scope only
10. Custom Roles¶
Administrators can create custom roles with specific permission sets. Custom roles can combine any available permissions to match your organization's needs.
Available permission categories:
secret:read,secret:write,secret:delete,secret:archive,secret:rotatecertificate:read,certificate:write,certificate:revoke,certificate:approve,certificate:archiveproject:read,project:write,project:delete,project:archiverotation:read,rotation:write,rotation:executeaudit:read,role:read,role:write,billing:readkeytab:read,keytab:write,keytab:delete,keytab:admintoken:read,token:write,token:delete,token:admin— Token Management (Enterprise Function)config:read,config:write— Configuration Management (Enterprise Function)report:read,report:writesync:read,consistency:read,consistency:writeintegration:read,integration:write- And many more...
Contact your MazeVault administrator for custom role creation.
11. Permission Matrix — KeyTab Management¶
Since v1.0.38
| Action | Viewer | User | Cert Mgr | Secret Mgr | Project Admin | Admin | Auditor |
|---|---|---|---|---|---|---|---|
| View keytabs | ❌ | ✅ | ❌ | ✅ | ✅ | ✅ | ✅ |
| Import keytab | ❌ | ❌ | ❌ | ✅ | ✅ | ✅ | ❌ |
| Update keytab | ❌ | ❌ | ❌ | ✅ | ✅ | ✅ | ❌ |
| Delete keytab | ❌ | ❌ | ❌ | ✅ | ✅ | ✅ | ❌ |
| Manage cipher policy | ❌ | ❌ | ❌ | ❌ | ✅ | ✅ | ❌ |
| View discovered keytabs | ❌ | ✅ | ❌ | ✅ | ✅ | ✅ | ✅ |
| Import discovered keytab | ❌ | ❌ | ❌ | ✅ | ✅ | ✅ | ❌ |
| View dashboard | ❌ | ✅ | ❌ | ✅ | ✅ | ✅ | ✅ |
12. Permission Matrix — Reports¶
Since v1.0.38
| Action | Viewer | User | Cert Mgr | Secret Mgr | Project Admin | Admin | Auditor |
|---|---|---|---|---|---|---|---|
| View report settings | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Preview report | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Trigger report | ❌ | ❌ | ❌ | ❌ | ✅ | ✅ | ❌ |
| Update report settings | ❌ | ❌ | ❌ | ❌ | ✅ | ✅ | ❌ |