tatersecurity.com Open App

Permission Bundles (Granular RBAC)

Scope a member to just the TATER apps their job needs - "works the IT queue in Ops, no access to Security or Manage." Last updated 2026-07-22

What it is

Org roles (Viewer / Auditor / OrgAdmin / …) are coarse: whatever level a role grants, it grants across the entire platform. A permission bundle adds job-function scoping on top. A bundle is a named template that grants a per-module access level - for example, the built-in IT Task Queue Worker bundle grants ops: write and nothing else, so a member carrying only that bundle can work tickets in TATER Ops end to end but cannot open TATER Security, Audit, Manage, Insights, or Vault data at all.

A member can carry zero or more bundles. Their effective access is the union of their bundles - for each module, the highest level any of their bundles grants wins.

Safe by default - bundles narrow, never grant

Three rules make bundles safe to roll out gradually:

  • No bundles = nothing changes. A member with an empty bundle list keeps their legacy role-based access, exactly as before. Assigning the first bundle is what opts a member in to module scoping.
  • Bundles only narrow. The existing role checks still run on top of the bundle check. A bundle can restrict what a role would otherwise allow; it can never grant beyond the role. Giving a Viewer the Platform Admin bundle does not make them an admin - it just doesn't restrict them.
  • SuperAdmin is always unrestricted. Bundles never apply to SuperAdmins - the all-access escape hatch, so you cannot lock yourself out.

The six modules

Access is scoped per module, and the modules map 1:1 to the platform's apps:

ModuleAppWhat it covers
opsTATER OpsTickets/Tasker, service catalog, CAB / problems / releases, CMDB, on-call, expenses, travel, license rentals
securityTATER SecurityControls, scans, risks, vendors/TPRM, policies, monitoring, hardening, the GRC suite
auditTATER AuditAudit engagements, control tests, evidence, access reviews, RFIs, independence
manageTATER ManageUsers, API keys, SCIM, tenant credentials, the device fleet and remote operations, patching, software deploy, MSP admin - and permission bundles themselves
insightsTATER InsightsReports, report schedules, analytics
vaultTATER VaultPassword manager and restricted documents

My TATER is intentionally not a module. It is personal and always available - see Personal pages always work below.

Each module is granted at one of four levels: none (no access), read (view), write (act / create / edit), or admin (module administration). Reads (GET) require read; mutations require write.

Built-in bundles

Twelve built-in bundles ship with the platform, mapped to common job functions. They are read-only - clone one to customize it.

BundleGrantsIntended for
Platform Admin platform-adminadmin on all six modulesPower users and platform owners - the all-access bundle
Contributor contributorops: write · security: write · audit: write · insights: readMembers who do the day-to-day work but should not administer the org - excludes Manage (members/roles, bundles, settings, integrations, devices) and Vault entirely
Security Analyst security-analystsecurity: write · audit: read · insights: readWorks the Security / GRC surface; no Ops or Manage
Security Admin security-adminsecurity: admin · audit: read · insights: read · manage: readAdministers TATER Security (settings, integrations, controls)
Auditor auditoraudit: write · security: read · insights: readWorks the Audit engagement workbench; reads Security for evidence
IT Task Queue Worker it-opsops: writeWorks the Ops IT task queue end to end. Ops only
AP / Finance Ops finance-opsops: writeWorks Ops finance/AP queues (queue-level scoping within Ops is a planned refinement)
HR Ops hr-opsops: writeWorks Ops HR queues
Ops Manager ops-managerops: admin · insights: readAdministers TATER Ops (catalog, workflows, schedules, settings)
Ops + Devices ops-devicesops: write · manage: writeOperators who work Ops and also need the device-management primitives - Live Shell, remote control, BitLocker, wake / file push - which live in the Manage module (see the note below)
Vault User vault-uservault: writeAccess to the Vault password manager only
Read-Only (cross-module) read-onlyops: read · security: read · audit: read · insights: readLook, don't touch, across the working modules

Why is Live Shell not in the ops module?

Remote shell (Live Shell), remote control, BitLocker key access, and wake / file push are device-management primitives: they act on the device fleet itself, so their API routes are gated to the manage module by design - regardless of which app surfaces them. An ops-only bundle therefore cannot reach them. To grant them to an operator, assign the built-in Ops + Devices bundle (one assignment covers both), or a custom bundle that grants manage: write.

Assigning bundles in TATER Manage

Open TATER Manage → Tenant Admin → Access Control. The page has two parts:

  • Permission bundles - the catalog. Your custom bundles are listed on top; expand Built-in bundles to see the twelve read-only templates with their module-grant pills. Each built-in has a Clone button; custom bundles have Edit and Delete.
  • Members - every member of the active organization with their role and current bundles. Members with no bundles show role default (unrestricted). Click Edit bundles to open the assignment modal, tick the bundles you want, and save - the selection replaces the member's bundle set, and clearing every checkbox returns them to legacy role-based access. The User → button jumps to the same member's user record (name, global role, org memberships) so both halves of member management are one click apart; the Users edit modal links back to Access Control the same way.

Roles themselves are still set in Tenant Admin → Users - the role sets the baseline, bundles narrow within it.

Custom bundles

When no built-in matches a job function, create your own (Admin only). Click + New bundle (or Clone on any bundle to pre-fill from it), give it a name and description, and pick a level per module - modules left at none grant nothing. Custom bundles behave identically to built-ins in resolution and enforcement, and are org-scoped: each organization maintains its own set.

  • Built-in ids are reserved - a custom bundle can clone a built-in but never overrides one.
  • Deleting a custom bundle removes it from any members it was assigned to.
  • Bundle changes propagate to enforcement within about 30 seconds (the auth layer caches an org's custom bundles briefly).

How bundles interact with org roles

Think of it as two gates in series - a request must pass both:

  1. Role gate (unchanged): can this role do this action at all? A Viewer still cannot delete a risk, bundled or not.
  2. Bundle gate (only for bundled members): does the member's bundle union grant this module at the required level? Reads need read, mutations need write.

So an OrgAdmin carrying only the Contributor bundle keeps full working access to Ops, Security, and Audit but is blocked from org-administration writes (org settings, members, feature flags) and from the Manage module - the bundle narrowed what the role would have allowed. Enforcement is server-side across the whole API surface, and the MCP/AI tool surface is gated in parallel: each MCP tool maps to its module, so a bundled member's AI assistant is scoped exactly like their browser session.

Personal pages always work

Bundle scoping never cuts a member off from things directed at them personally:

  • My TATER is not a gated module. Every member keeps their personal dashboard, to-dos, reviews, approvals, requests, surveys, notifications, and preferences regardless of bundles.
  • Personal API routes are exempt. The mine-style routes that back those pages (my tasks, my tickets, my action requests, assignments/mine, expenses/mine, rfi/mine, …) bypass the module gate. They are safe to exempt because each is fenced server-side to the caller's own identity - they only ever return or act on the caller's own items, so the exemption cannot leak anyone else's data.
  • The app shell still loads. Startup reads (organizations, settings, feature flags) stay ungated for everyone so a scoped member can always sign in and land somewhere; the corresponding writes are org-admin actions gated to the Manage module.

Example: a member bundled to ops: none cannot browse the Ops queues - but an Ops ticket assigned to them still shows in My TATER → My Tasks, and an action request on their ticket still reaches them.

MCP tool reference

The same operations are available to AI assistants (Admin only), which makes bundle assignment automatable - e.g. an onboarding workflow that scopes each new HR hire to hr-ops:

ToolPurpose
list_permission_bundlesList the bundle catalog - built-ins plus this org's custom bundles, with their per-module grants
create_permission_bundleCreate or update a custom bundle: pass name, description, and a grants map (e.g. {"ops":"write","insights":"read"}), or clone_from to pre-fill from an existing bundle
list_member_permissionsList org members with their assigned bundles and membership id - see who is scoped to what
set_member_permission_bundlesAssign a member's bundles: pass the membership id and the full desired set of bundle ids (replaces the existing set; an empty list restores legacy role-based access)

Was this page helpful?