Organizations, users & roles¶
Tenant and child organizations¶
Your tenant (workspace) is your whole CertIntel account. Inside it, child organizations are the unit almost everything else is scoped to: monitored targets, certificates, API keys, install tokens, and DNS delegations each belong to one child organization, or - for select resources, at a tenant administrator's discretion - are left tenant-wide (visible/usable across every organization in the tenant).
A small account might run everything in a single default organization. A larger one splits by team, business unit, region, or customer, so that e.g. an organization administrator in one team can't see or touch another team's certificates and keys. A managed service provider runs one workspace with an organization per client; see MSP mode.
The organization selected in the dashboard's top bar is pre-selected in every "create" form (targets, keys, install tokens, delegations, trusted CAs), so check it before saving. Credential creation shows the affected scope before saving. An administrator confined to a child organization cannot create a workspace-wide credential or manage another organization's inventory. Tenant suspension blocks user access, machine reporting, delegated DNS updates/answers, scheduled probes, and notifications until the workspace is resumed.
Deleting an organization¶
Organizations → Edit → Delete removes an empty child organization. An
organization that still owns anything - monitored targets, API keys, members,
DNS delegations, internal endpoints, CT-watched domains, identity providers,
AD CS templates, agents, alert destinations, trusted or ignored CAs, or ACME
accounts - is refused with a message naming what blocks it, for example
'Team A' still owns resources (2 targets and 1 DNS delegation). Type PURGE
Team A to force. Move or delete those resources first, or type PURGE <name>
in the confirmation box to delete the organization together with everything it
owns. The API returns 409 with the same list.
Tenant appearance¶
On supported plans, tenant administrators can choose Brutal, Classic Blue, Liquid or Phosphor, customize dashboard colors, choose a comfortable or compact layout density, and upload a logo and favicon from Tenant appearance. That is the default for everyone in the tenant; each user can pick their own theme, light/dark mode and density under My appearance, and enrolled Windows Agents follow the tenant theme unless a server administrator enables Tenant override in Agent settings. See Branding & themes. With MSP mode, a client organization can also carry its own name and logo (co-branding) next to the tenant's branding.
MSP mode¶
On plans that include MSP (the Enterprise plan; entitlement msp), a
managed service provider runs its clients from one workspace: the workspace
(tenant) is the MSP and each child organization is a client. There is no
model that spans several tenants. MSP mode adds client co-branding, an
audited switch into client and the Clients page; an organization's
limit override can turn it off for one client.
Client co-branding¶
A user with workspace-wide branding.update (a tenant administrator, or a
custom role granted workspace-wide) opens Organizations, then
Co-branding on a client's row:
| Field | Meaning |
|---|---|
| Co-brand this client | Turns co-branding on or off for the organization. |
| Client display name | Up to 120 characters; the organization's name when empty. |
| Client logo | PNG, JPEG or WebP, at most 256 KB, 64-1600 × 32-400 pixels at 2:1 to 8:1; stored as PNG. Animated images are refused (Use a still image, not an animation.). |
| Remove the logo | Shown when a logo is stored. |
Save co-branding confirms Co-branding for 'organization.branding_updated to the activity log. While the
dashboard shows only that organization (selected in the top bar, or after
switching into it), its users see the client's name and logo beside the
workspace branding. The logo is served only to signed-in users of the
workspace who can reach that organization. Emails and scheduled reports for
that organization read
Switch into a client¶
On the Clients page, Switch into shows the dashboard as that client only. It is for workspace-wide accounts (tenant administrators and workspace-wide roles); others get Switching into a client is for workspace-wide accounts.
- A banner reads Viewing
as with Return to all clients**, which also replaces the organization switcher in the top bar. - While switched, every other organization is out of reach, also by its direct address: pages and API calls made with the dashboard session answer not found for another organization's resources.
- The switch belongs to the signed-in session and ends at sign-out.
- Both directions are audited:
organization.switch_into(switched into the client organization ) and. organization.switch_out(returned from the client organization ).to all clients.
The ordinary organization switcher in the top bar is unchanged: it narrows lists and forms but is not audited and does not block a direct address to another organization. Switching into a client is not acting as a tenant: a platform operator's time-boxed act-as session (see Delegation is bounded) is a platform-side support session, while switching into a client is a workspace user narrowing their own view.
The Clients page¶
Clients (/msp, in the Monitor section of the navigation) lists every
client organization by what needs attention: Every client organization in
this workspace, by what needs attention. Tiles show Clients needing
attention, Expired certificates, Expiring certificates and
Renewal failures (7 days). Client priorities has one row per
organization:
| Column | Counts |
|---|---|
| Expired / Expiring | Certificates expired, or within the expiry warning threshold. |
| Renewal failures (7 d) | Renewal failures in the last 7 days that were not acknowledged and not followed by a success. |
| Served mismatches | Monitored endpoints serving a certificate other than the one issued. |
| Offline agents | Approved Agents silent for more than 2 days, or that never reported. |
| New CT name sets | Certificate Transparency name sets first seen in the last 7 days, outside the baseline. |
A co-branded pill marks co-branded clients, and each row has Switch
into (or Current client). The page needs workspace-wide reach and
organizations.read; every count covers only organizations you can read. The
API is GET /api/v1/msp/organizations, returning organization_id, name,
co_brand_enabled, expiring, expired, renewal_failures_7d,
served_mismatches, offline_agents and ct_new_name_sets per organization.
Expiry severity settings¶
On Organizations, open a child organization's Edit form. Administrators can set these Expiry severity overrides:
| Field | Meaning |
|---|---|
| Warn at (days) | Warning cutoff for longer-lived certificates; platform default 21. |
| Critical at (days) | Critical cutoff for longer-lived certificates; platform default 7. Must not exceed warning days. |
| Critical at (% lifetime remaining) | Scales the cutoffs down for short-lived certificates; platform default 20%. Enter 0–100 in the form. |
Blank fields inherit the platform's defaults. Clearing all three removes the organization override. Days must be nonnegative whole numbers. Expiry severity overrides can only be set from the dashboard; the REST API's organization update accepts the name, slug and identity-provider flag only.
These settings affect certificate severity and expiry notification evaluation. They do not choose when an Agent renews a certificate. See how lifetime scaling works and Agent renewal windows.
Built-in roles¶
Roles are assigned per-user, either within one organization or, for a tenant administrator, across the whole tenant. The built-in roles below grant access within their assigned organization scope.
| Role | What it grants |
|---|---|
| Viewer | Read-only monitoring plus organization/key metadata. |
| Observer | Viewer access plus observability endpoints; changes nothing. |
| Auditor | Read everything in scope - monitoring data, users, roles, keys, identity providers, notification channels, reports, settings, and the activity log. Changes nothing. |
| Operator | Day-to-day monitoring: add and edit endpoints, templates, and CRL monitors, acknowledge certificates, approve newly enrolled agents. No deletes, and no API key management. |
| Administrator | Full management of monitoring data, keys, users, alerts, reports, CAs, and identity providers within scope. The only preset that creates, rotates, revokes and deletes API keys. Not tenant administration unless separately granted. |
| Alert Manager | Create and configure notification channels, choose the events they receive, manage alert contacts and scheduled reports within scope. Sees the certificate inventory; no access to endpoints, users, keys, or other settings. |
| Certificate Issuer | Request certificates from the organization's private CAs and download the key material CertIntel generated for them. Sees the certificate inventory; cannot create, configure or delete a CA or revoke anything. |
| DNS Delegation Manager | Manage Delegated DNS-01 records and their update credentials within scope only - no access to monitoring data, users, or other settings. |
Open Access → Roles to see exactly which permissions each built-in role holds.
A user can hold tenant administrator authority in addition to (or instead of) an organization role - that's what lets someone manage every organization, create tenant-wide resources, and grant roles to other users.
Who can manage whom¶
Creating users needs users.create - Administrators (within their organization),
tenant administrators, or a custom role that holds it - and opening the Users
page needs users.read; other roles get Your role does not have access to this
page. A new local user must change their password at first
sign-in and cannot submit anything else in the dashboard until they do. Email
addresses are unique within the tenant (A user with that email already
exists in this tenant.), and only a tenant administrator can grant tenant-wide authority
(Only a tenant administrator can grant tenant-wide authority.).
Users with tenant-wide authority - tenant administrators, holders of a tenant-wide (global) role, and platform administrators - can only be managed by a tenant administrator. An organization Administrator cannot see, reset the password of, disable, or change the roles of such a user, even if that user also has a membership in the administrator's organization; those users simply do not appear in that administrator's user list.
A tenant always keeps at least one active tenant administrator. You cannot disable or demote your own account, and no surface (API, dashboard, or platform console) will disable, demote, or delete the last active tenant administrator; promote a successor first. The error reads The last active tenant administrator cannot be disabled. (or demoted / deleted). A disabled or still-invited administrator does not count as active.
Demo accounts are always treated as read-only Viewers with redacted data, whatever roles they hold.
The same rules decide who may Reset two-factor for a user (Users →
Manage, users.update): an administrator who can reset a user's password can
also remove their two-factor sign-in, never their
own and never while acting as another user. The workspace's two-factor policy
is a Security setting (security.update).
Demo accounts¶
An administrator can mark an existing, active local account as a demo account (Users → Manage → Edit profile → Demo account: Yes — cannot change own password). A demo pill appears next to the account. Demo users cannot change their password (This is a demo account, changing password is not supported.), the forgot-password form silently does nothing for them, and an administrator's password reset does not force them to change it afterwards. You cannot change the demo setting on your own account.
Permissions¶
Every permission is resource.action. Viewing, creating, editing and deleting
are separate actions on every resource, so a role can allow exactly what a team
needs - for example see notification channels but change nothing, or add and
edit public endpoints but never delete one. A few resources have an extra verb
for an action that is more sensitive than an ordinary edit.
| Resource | Key | Actions |
|---|---|---|
| Certificates | certificates |
read, delete, acknowledge |
| Agents | agents |
read, create (approve a newly enrolled agent), update (pause alerts, re-register), delete |
| Agent updates | agent_updates |
read, create (Update now, Update all outdated), delete (cancel a request the Agent has not received). See agent updates. Viewer, Observer, Auditor, Operator and Administrator hold read; Operator and Administrator also create and delete. |
| Public endpoints | targets |
read, create, update, delete |
| Internal endpoints | internal_endpoints |
read, create, update, delete |
| AD CS templates | adcs_templates |
read, create, update, delete |
| CRL distribution points | crl_monitors |
read, create, update, delete |
| ACME renewals | renewals |
read |
| Internal certificate scans | internal_certs |
read |
| Certificate Transparency | ct |
read, create, update, delete |
| Delegated DNS-01 | dns_delegations |
read, create, update, delete |
| Organizations | organizations |
read, create, update, delete |
| Users | users |
read, create, update, delete |
| Roles (workspace-level) | roles |
read, create, update, delete |
| Identity providers | identity_providers |
read, create, update, delete |
| API keys | api_keys |
read, create, update, delete, admin |
| Install tokens | install_tokens |
read, create, update, delete, reveal (show the organization token, or mint a one-time token) |
| Trusted & ignored CAs | trusted_cas |
read, create, update, delete |
| Private CA | private_ca |
read, create, update, delete, issue, revoke |
| Dashboard-assigned workflows | workflow_assignments |
read, create (propose a workflow to an Agent; also needs agents.read there), update (re-send, cancel), delete (remove a finished assignment). An Agent's assignments page needs read together with agents.read, both in that Agent's organization. Platform builds that offer dashboard-assigned workflows: the built-in Administrator preset holds all four, Operator holds read, create and update, Auditor holds read, the other presets none; tenant administrators hold everything. Custom roles can grant Workflow assignments action by action. |
| Platform credentials | platform_credentials |
read, create, update (also approves an Agent's new sealing key), delete - appliance credentials delivered sealed to assigned Agents. Operator and Auditor hold read; Administrator holds all four. Naming one in an assignment needs read in that organization. |
| Notification channels | notifications |
read, create, update, delete, test |
| Alert contacts | alert_contacts |
read, update (add, edit and delete alert contacts). The built-in Alert Manager and Administrator presets hold both, Auditor holds read. |
| Scheduled reports | scheduled_reports |
read, create, update, delete, run |
| Security (workspace-level) | security |
read, update (includes the two-factor sign-in policy) |
| Tenant appearance (workspace-level) | branding |
read, update (also client co-branding in MSP mode) |
| Activity log | activity |
read |
| Observability | observability |
read |
Workspace-level resources (roles, security, tenant appearance) belong to the whole tenant - your workspace - not to one organization. Their permissions only take effect when the role is assigned across the whole workspace (or the user is a tenant administrator); granting them inside a single organization does nothing. The built-in Administrator preset deliberately leaves them out, so an organization administrator can never change settings that belong to the whole workspace: a tenant administrator reaches them through that status, and anyone else needs a custom role that includes them, granted workspace-wide. The same rule applies to workspace-wide notification channels, scheduled reports and trusted CAs: an organization-scoped role can manage the ones in its organization, a workspace-wide role or a tenant administrator can manage the shared ones.
Database backups and component release manifests are platform-wide concerns handled by the platform operator; they never appear in a tenant's permission matrix and cannot be put in a custom role.
Custom roles¶
Access → Roles lists every built-in role and lets a tenant administrator
(or anyone holding roles.create workspace-wide) define custom roles: give the
role a name and description, tick the permissions in the matrix, and save. The
box under each column heading (read, create, …) ticks or clears every
permission in that column you are allowed to grant, so a read-only role is one
click.
The role is then offered on the Users page in both pickers - per
organization and workspace-wide - exactly like a built-in role, and through the
API as GET /api/v1/roles / POST /api/v1/users.
Rules the editor enforces:
- You can only grant permissions you hold yourself, everywhere the role applies. A tenant administrator can grant anything. Anyone else building a role that applies to all organizations must hold each permission workspace-wide; a role confined to particular organizations only needs them held in each of those organizations. The greyed-out boxes in the matrix are the ones outside your own reach. Lifting a role's organization restriction, or adding an organization to it, is checked the same way.
- Permissions marked with a small ▲ in the matrix (
users.create,users.update,roles.*,api_keys.create/update/admin,identity_providers.create/update) let their holder delegate authority: assign roles, mint API keys, define roles, or map identity-provider claims. See Delegation is bounded for what a holder can and cannot hand out. Pairing one of these with a narrow permission set is safe; pairing it with Administrator-level permissions makes its holders able to appoint further administrators. - Platform permissions and the reserved role names (
administrator,platform_*, …) are never available. - A role's key (
alert_desk, derived from the name you typed) is fixed once created, because identity-provider mappings and API clients refer to it. Rename or re-permission the role freely; the key stays. - Deleting a role removes it from every user who held it and from every identity-provider mapping that named it. The users themselves are untouched; a user whose only role was deleted simply has no access until another is granted.
- Every create, edit and delete is written to the activity log (
role.create,role.update,role.delete) with the full permission list and the organizations the role applies to.
Delegation is bounded¶
Granting someone the ability to manage users, keys or identity providers never lets them make anyone - themselves included - more powerful than they are. CertIntel applies the same guardrail most platforms do (GitLab will not let you grant a role above your own, Discord only lets you assign roles below your highest one, Keycloak and Azure RBAC bound which roles a delegate may hand out):
- Hold it yourself. A role you assign to a user in an organization may only
carry permissions you hold in that organization; a workspace-wide grant needs
workspace-wide holdings. The same applies to identity-provider claim mappings
and fallback roles, which are standing grants to whoever signs in. The API
answers
403naming the missing permissions. - Not on your own account. Only a tenant administrator may change their own
roles, whatever
users.updatethey hold. - API keys carry only what you have. A
dashboardkey acts as an Operator plus activity reads and anadminkey as an Administrator, so creating, rotating or re-enabling one requires holding every permission of that scope in the key's organization - the person who learns the secret inherits the key's authority. A key that is allowed to request private-CA certificates can only be rotated by someone holdingprivate_ca.update(orapi_keys.admin) there. - Not while acting as a tenant. A platform operator inside a time-boxed act-as session cannot create API keys or users, reset passwords, grant tenant-wide authority, or map a claim to it; those would outlive the session. Act-as keys cannot be rotated or re-enabled by anyone.
Tenant administrators are exempt from the first three rules: they can already do anything in the tenant.
Confining a role to particular organizations¶
Below the permission matrix, Applies to decides which organizations the role can ever reach:
- All organizations (the default) makes the role behave like a built-in one: granted in an organization it covers that organization; granted workspace-wide it covers every organization.
- Only these organizations confines the role to the organizations you
tick. Granted workspace-wide, it covers exactly those organizations and no
other - so a role that "lets the team work in A and B but not C and D" is one
role, scoped to A and B, assigned once from the Users page. Granted per
organization, it can only be granted inside the organizations it names; the
Users page offers it only there, and the API answers
409elsewhere.
The custom roles table shows what each role applies to. Narrowing a role later
takes effect for every holder at their next request; if every organization a
scoped role named is deleted the role reaches nothing until you edit it (it never
silently widens to the whole workspace). Only someone with workspace-wide
roles.update authority can change the restriction - the same rule as for the
permissions themselves.
The REST API mirrors the page: GET /api/v1/permissions returns the catalogue
grouped as the matrix shows it, POST /api/v1/roles creates a role from
{"name", "description", "permissions": ["targets.read", …], "organizations": ["ops-a", "ops-b"]}
(organization slugs or ids; omit or send null for all organizations), and
PATCH / DELETE /api/v1/roles/{id} edit or remove it. In a PATCH, leaving
organizations out keeps the current restriction, a list replaces it and an
explicit null lifts it. Every role answers with organization_scoped and the
organizations it is confined to. Built-in roles are read-only and answer
404 to edits.
SSO and roles¶
If your organization signs in through an identity provider, role assignment is
driven by claims in the provider's token instead of - or alongside - roles
assigned directly in CertIntel, and is fully resynced on every login. See
OIDC / SSO overview for the full model, including the
CertIntel.* claim convention that maps directly to the roles above.
Plans and limits¶
Each tenant has an entitlement plan controlling limits on the number of public endpoints, internal certificates, Delegated DNS-01 records, users and organizations, and features such as alert destinations, Certificate Transparency monitoring, SSO, activity-log retention, Appearance and MSP (client co-branding, switch into client, client dashboard; see MSP mode). The dashboard Overview shows a Plan usage & limits table with the number allowed and used for each limit type and an At limit marker. If an action is blocked by a plan limit, the error explains which limit was hit; contact your CertIntel administrator or provider to adjust it.