Dashboard Permissions
Purpose
Plan the dashboard's permission model in depth: how admin roles are sliced, which permission each admin action requires, how every action is enforced server-side and audit-logged, and how dangerous capabilities (impersonation, destructive bulk ops) are safeguarded. The admin-surface extension of web-authorization.
When to Use
- After
dashboard-architecture fixes placement and web-authorization defines the base model.
- When an existing dashboard has a single all-powerful "admin" role or unlogged admin actions.
- Not for customer-facing access levels (
web-authorization).
Inputs
- Base authorization model (
web-authorization) and dashboard placement (dashboard-architecture).
- The dashboard's action inventory (views, edits, deletes, bulk ops, reports, exports).
- Compliance/audit requirements.
Discovery Questions
- Which distinct admin jobs exist (support, ops, finance, super-admin) — and what does each actually need?
- Which actions are read-only vs mutating vs destructive vs data-exporting?
- Is user impersonation needed for support — under what constraints and logging?
- What must the audit trail answer (who did what to whom, when, from where) and who reads it?
Responsibilities
- Define admin roles by job, each a bundle of granular permissions — no monolithic "admin can do everything" unless the team is genuinely that small (record it if so).
- Build the permission matrix: every dashboard action × required permission, deny by default; exports and bulk operations are their own permissions.
- Plan server-side enforcement for each action — the dashboard UI is a client like any other; its API calls carry no inherent trust.
- Plan audit logging: every mutating/exporting admin action recorded (actor, action, target, timestamp, context), tamper-resistant, PII-conscious.
- Design impersonation safeguards if impersonation exists: explicit permission, visible banner, logged start/end, no access to the target's credentials, time-boxed.
- Apply least privilege: new admins start minimal; elevation is deliberate and reviewable.
Required Workflow
- Inventory dashboard actions (with
dashboard-tables/dashboard-bulk-operations/dashboard-reporting scopes).
- Define roles by job; map the permission matrix, deny by default.
- Specify enforcement per action at the API/server layer.
- Specify audit-log events, content, and retention.
- Record the plan; route review to
../../security-review.
Decision Rules
- Granularity follows risk: destructive/bulk/exporting actions get their own permissions even when roles are few.
- Deny by default; an unmapped action fails closed and is a finding.
- Impersonation is a last-resort capability — prefer read-only "view as" where it satisfies support needs.
- Audit logs are append-only from the app's perspective; admins being audited can't edit them.
Rules
- Every enforcement decision happens server-side; hidden buttons are UX only.
- Bulk operations check permission per item, not just per request (
dashboard-bulk-operations).
- No secrets/credentials in audit-log payloads; log references, not sensitive contents.
Anti-Patterns
- One "admin" boolean guarding support, finance, and destructive ops alike.
- Admin mutations with no audit trail — invisible incidents.
- Impersonation without visible indication or logging.
- Permission checks in the dashboard UI only, with a wide-open API behind it.
Validation Checklist
Definition of Done
A recorded admin-permission plan — roles, full action matrix, server enforcement, audit trail, and impersonation safeguards — under which any admin action can be traced and no capability exists without a named permission.
Related Skills
web-authorization, dashboard-architecture, dashboard-bulk-operations, dashboard-reporting, dashboard-tables, web-authentication, ../../security-review.
Related Knowledge
../../../knowledge/ (admin org structure, compliance requirements).
Related References
../../../references/web/dashboard/ (permission matrices — when populated).
Context Loading Guidance
- Requires: base authorization model, dashboard action inventory, audit requirements.
- Does not require: customer-app feature detail, UI styling.
- May load:
dashboard-bulk-operations for per-item enforcement; ../../security-review for verification.
- Stop when: the matrix, enforcement, and audit plan are recorded.
Token Efficiency Guidance
The permission matrix (action × permission × audited?) is the deliverable — keep prose to safeguards and exceptions.
1---2name: dashboard-permissions3description: Use to plan admin-dashboard permissions — admin role granularity, a permission matrix per admin action, server-side enforcement, audit logging of admin actions, impersonation safeguards, and least-privilege defaults. Builds on web-authorization for the admin surface.4---56# Dashboard Permissions78## Purpose910Plan the dashboard's permission model in depth: how admin roles are sliced, which permission each admin action requires, how every action is enforced server-side and audit-logged, and how dangerous capabilities (impersonation, destructive bulk ops) are safeguarded. The admin-surface extension of `web-authorization`.1112## When to Use1314- After `dashboard-architecture` fixes placement and `web-authorization` defines the base model.15- When an existing dashboard has a single all-powerful "admin" role or unlogged admin actions.16- **Not** for customer-facing access levels (`web-authorization`).1718## Inputs1920- Base authorization model (`web-authorization`) and dashboard placement (`dashboard-architecture`).21- The dashboard's action inventory (views, edits, deletes, bulk ops, reports, exports).22- Compliance/audit requirements.2324## Discovery Questions2526- Which distinct admin jobs exist (support, ops, finance, super-admin) — and what does each actually need?27- Which actions are read-only vs mutating vs destructive vs data-exporting?28- Is user impersonation needed for support — under what constraints and logging?29- What must the audit trail answer (who did what to whom, when, from where) and who reads it?3031## Responsibilities3233- Define **admin roles by job**, each a bundle of granular permissions — no monolithic "admin can do everything" unless the team is genuinely that small (record it if so).34- Build the **permission matrix**: every dashboard action × required permission, deny by default; exports and bulk operations are their own permissions.35- Plan **server-side enforcement** for each action — the dashboard UI is a client like any other; its API calls carry no inherent trust.36- Plan **audit logging**: every mutating/exporting admin action recorded (actor, action, target, timestamp, context), tamper-resistant, PII-conscious.37- Design **impersonation safeguards** if impersonation exists: explicit permission, visible banner, logged start/end, no access to the target's credentials, time-boxed.38- Apply **least privilege**: new admins start minimal; elevation is deliberate and reviewable.3940## Required Workflow41421. Inventory dashboard actions (with `dashboard-tables`/`dashboard-bulk-operations`/`dashboard-reporting` scopes).432. Define roles by job; map the permission matrix, deny by default.443. Specify enforcement per action at the API/server layer.454. Specify audit-log events, content, and retention.465. Record the plan; route review to `../../security-review`.4748## Decision Rules4950- Granularity follows risk: destructive/bulk/exporting actions get their own permissions even when roles are few.51- Deny by default; an unmapped action fails closed and is a finding.52- Impersonation is a last-resort capability — prefer read-only "view as" where it satisfies support needs.53- Audit logs are append-only from the app's perspective; admins being audited can't edit them.5455## Rules5657- Every enforcement decision happens server-side; hidden buttons are UX only.58- Bulk operations check permission **per item**, not just per request (`dashboard-bulk-operations`).59- No secrets/credentials in audit-log payloads; log references, not sensitive contents.6061## Anti-Patterns6263- One "admin" boolean guarding support, finance, and destructive ops alike.64- Admin mutations with no audit trail — invisible incidents.65- Impersonation without visible indication or logging.66- Permission checks in the dashboard UI only, with a wide-open API behind it.6768## Validation Checklist6970- [ ] Admin roles defined by job with granular permissions.71- [ ] Permission matrix covers every dashboard action, deny by default.72- [ ] Server-side enforcement specified per action.73- [ ] Audit logging specified (events, content, retention, tamper-resistance).74- [ ] Impersonation (if any) safeguarded: permission, banner, logging, time-box.75- [ ] Least-privilege defaults recorded.7677## Definition of Done7879A recorded admin-permission plan — roles, full action matrix, server enforcement, audit trail, and impersonation safeguards — under which any admin action can be traced and no capability exists without a named permission.8081## Related Skills8283`web-authorization`, `dashboard-architecture`, `dashboard-bulk-operations`, `dashboard-reporting`, `dashboard-tables`, `web-authentication`, `../../security-review`.8485## Related Knowledge8687`../../../knowledge/` (admin org structure, compliance requirements).8889## Related References9091`../../../references/web/dashboard/` (permission matrices — when populated).9293## Context Loading Guidance9495- **Requires:** base authorization model, dashboard action inventory, audit requirements.96- **Does not require:** customer-app feature detail, UI styling.97- **May load:** `dashboard-bulk-operations` for per-item enforcement; `../../security-review` for verification.98- **Stop when:** the matrix, enforcement, and audit plan are recorded.99100## Token Efficiency Guidance101102The permission matrix (action × permission × audited?) is the deliverable — keep prose to safeguards and exceptions.