Skip to main content
New: Forge AI docs + Loop PM assistant. 7-day free trial.
TemplateFREE⏱️ 120-180 minutes

Permissions and Role System Specification Template

A structured template for specifying role-based access control (RBAC) systems covering roles, permissions, resource scoping, inheritance, and audit logging for SaaS products.

By Tim Adair• Last updated 2026-03-05
Permissions and Role System Specification Template preview

Permissions and Role System Specification Template

Free Permissions and Role System Specification Template — open and start using immediately

or use email

Instant access. No spam.

What This Template Is For

Every multi-user product needs an authorization model. Who can see what? Who can edit what? Who can invite, remove, or manage other users? These questions seem straightforward until you encounter nested teams, project-level overrides, external collaborators, and API key scoping.

A permissions specification defines the roles, permissions, resource scoping rules, and inheritance logic that govern access throughout your product. Writing it down prevents the two most common failure modes: over-permissive defaults (everyone can see everything, violating least-privilege) and ad hoc permission checks scattered across the codebase (leading to inconsistent enforcement and security gaps).

This template covers role definitions, permission matrices, resource scoping, role hierarchy and inheritance, custom role support, and audit logging. It applies to any SaaS product with team or organizational accounts.

Use this alongside the PRD Template when permissions are part of a larger product initiative. For the technical implementation details (middleware, database schema, caching), pair with the Feature Specification Template. For guidance on how access control fits into product strategy for enterprise customers, see the Product Strategy Handbook.

Evaluate the priority of a permissions overhaul with the RICE Calculator.


How to Use This Template

  1. Start with your organizational hierarchy. Map the entities: organization, team, project, workspace. The hierarchy determines how permissions are scoped and inherited.
  2. Define roles before permissions. Roles represent job functions (Admin, Editor, Viewer). Permissions represent granular actions (create:project, delete:user). Roles bundle permissions into manageable groups.
  3. Build the permission matrix. List every resource type on one axis and every action on the other. Fill in which roles have access. This is the canonical reference for enforcement.
  4. Define inheritance rules. If a user is an Admin at the organization level, what permissions do they have at the project level? Explicit inheritance rules prevent confusion.
  5. Specify what gets logged. Every permission check failure, role change, and sensitive action should produce an audit log entry.
  6. Review with engineering (for enforcement feasibility), security (for threat model alignment), and customer success (for the enterprise customers who will configure these roles).

The Template

Permissions System Overview

FieldDetails
Project Name[Name]
Author[PM name]
Engineering Lead[Name]
Security Reviewer[Name]
Target Release[Date or milestone]
StatusDraft / In Review / Approved

Summary. [1-2 sentences: what the permissions system covers and the authorization model (RBAC, ABAC, or hybrid).]

Authorization Model. [RBAC (Role-Based Access Control) / ABAC (Attribute-Based Access Control) / Hybrid]

Design Principles.

  • Least privilege: users get the minimum permissions needed for their role
  • Deny by default: if no explicit permission is granted, access is denied
  • Consistent enforcement: permissions are checked at the API layer, not just the UI
  • Auditable: every permission change and access denial is logged
  • Manageable: admins can understand and configure permissions without a manual

Organizational Hierarchy

Organization (top-level account)
├── Team / Department
│   ├── Project / Workspace
│   │   ├── Resource (task, document, etc.)
│   │   └── Resource
│   └── Project / Workspace
└── Team / Department
EntityDescriptionWho CreatesPermissions Scope
OrganizationTop-level accountAccount signupOrg-wide settings, billing, user management
TeamGroup of usersOrg AdminTeam membership, team-level projects
ProjectWork containerTeam Admin or MemberProject resources, project members
ResourceIndividual objectProject MemberCRUD on the specific object

Role Definitions

RoleScopeDescriptionAssignable By
OwnerOrganizationFull access. Can delete the organization. One per org.System (at signup)
Org AdminOrganizationFull access except org deletion. Manages billing and users.Owner
Team AdminTeamManages team membership and team settings. Full access to team projects.Org Admin
MemberTeam/ProjectStandard access. Creates and edits resources in assigned projects.Team Admin or Org Admin
ViewerTeam/ProjectRead-only access. Cannot create or modify resources.Team Admin or Org Admin
GuestProjectLimited access to specific projects. External collaborators.Team Admin (with Org Admin approval)

Permission Matrix

Legend. C = Create, R = Read, U = Update, D = Delete, M = Manage (configure settings)

ResourceActionOwnerOrg AdminTeam AdminMemberViewerGuest
OrganizationM (settings)YesYesNoNoNoNo
OrganizationD (delete)YesNoNoNoNoNo
BillingRYesYesNoNoNoNo
BillingUYesYesNoNoNoNo
UsersC (invite)YesYesTeam scopeNoNoNo
UsersR (list)YesYesTeam scopeTeam scopeTeam scopeNo
UsersU (role change)YesYesTeam scopeNoNoNo
UsersD (remove)YesYesTeam scopeNoNoNo
TeamCYesYesNoNoNoNo
TeamRYesYesOwn teamOwn teamOwn teamNo
TeamUYesYesOwn teamNoNoNo
TeamDYesYesNoNoNoNo
ProjectCYesYesYesYesNoNo
ProjectRYesYesTeam scopeAssignedAssignedAssigned
ProjectUYesYesTeam scopeIf ownerNoNo
ProjectDYesYesIf ownerIf ownerNoNo
ResourceCYesYesYesYesNoNo
ResourceRYesYesTeam scopeProject scopeProject scopeProject scope
ResourceUYesYesTeam scopeProject scopeNoNo
ResourceDYesYesTeam scopeIf ownerNoNo

Inheritance Rules

RuleBehavior
Downward inheritanceOrg Admin permissions apply to all teams and projects within the org
Team scopeTeam Admin permissions apply to all projects owned by that team
Project overrideA user can be given a higher role on a specific project than their team role
No upward inheritanceProject-level permissions do not grant team or org permissions
Guest containmentGuest permissions never inherit beyond the specific project(s) they are invited to

Conflict resolution. When a user has multiple roles (e.g., Member at team level, Viewer on a specific project), the higher permission wins. If an explicit deny is set at any level, it overrides all grants (deny takes precedence).


Custom Roles (if supported)

FeatureDetails
Available on[Enterprise plan only / All plans]
Max custom roles per org[Limit]
Base templateCustom roles clone an existing role and modify permissions
RestrictionsCustom roles cannot exceed Owner or Org Admin permissions

Custom Role Creation Flow.

  1. Org Admin navigates to Settings > Roles
  2. Clicks "Create Custom Role"
  3. Selects a base role to clone
  4. Toggles individual permissions on/off
  5. Names the role and adds a description
  6. Assigns the role to users

API Authorization

MechanismDescription
API key scopingAPI keys inherit the permissions of the user who created them
OAuth scopes[List scopes: e.g., read:projects, write:tasks, admin:users]
Service accountsNon-human accounts with specific roles for automation and integrations
Token permissionsTokens can be restricted to a subset of the creating user's permissions

Authorization check flow.

  1. Request arrives with authentication token
  2. Identify the user and their roles (cached, refreshed every [X] minutes)
  3. Determine the target resource and action
  4. Check the permission matrix: does any of the user's roles grant this action on this resource?
  5. If no grant found, return 403 Forbidden with error code INSUFFICIENT_PERMISSIONS
  6. Log the check (success or failure) to the audit trail

Audit Logging

EventLogged FieldsRetention
Role assignedactor, target_user, role, scope, timestamp[X] months
Role removedactor, target_user, role, scope, timestamp[X] months
Permission denieduser, resource, action, timestamp, IP[X] months
User invitedactor, email, role, timestamp[X] months
User removedactor, target_user, timestamp[X] months
Custom role created/modifiedactor, role_name, permissions_changed, timestamp[X] months
Sensitive actionactor, action, resource, timestamp, IP[X] months

Sensitive actions (always logged regardless of success/failure):

  • Billing changes
  • Organization settings changes
  • Bulk user operations
  • Data export requests
  • API key creation or revocation

Open Questions

#QuestionOwnerStatusDecision
1[Question][Name]Open
2[Question][Name]Open

Filled Example: TaskFlow RBAC System

Role Definitions

RoleScopeUsers (current)Key Permissions
OwnerOrganization1 per orgAll permissions. Transfer ownership. Delete org.
AdminOrganization~2 per orgUser management, billing, all team/project access
Team LeadTeam~1 per teamTeam membership, project creation, team settings
MemberTeam~8 per teamCreate/edit tasks and projects within assigned teams
ViewerProject~3 per projectRead-only. Can comment but not edit tasks
ClientProject~1 per projectRead-only on specific project. No team visibility

Inheritance. Admin permissions cascade to all teams and projects. Team Lead permissions cascade to all projects in their team. A Member promoted to Viewer on another team's project gets read-only access to that project without gaining any other team permissions.

Key Takeaways

  • Define your organizational hierarchy before designing roles and permissions
  • Build the full permission matrix covering every resource type and action
  • Enforce permissions at the API layer, not just the UI
  • Log every permission change and access denial for audit compliance
  • Start with RBAC and add ABAC-like rules only when enterprise customers require them

About This Template

Created by: Tim Adair

Last Updated: 3/5/2026

Version: 1.0.0

License: Free for personal and commercial use

Frequently Asked Questions

When should I use RBAC versus ABAC?+
RBAC (Role-Based Access Control) works when your permission model maps cleanly to job functions. Most B2B SaaS products with under 10 roles should use RBAC. ABAC (Attribute-Based Access Control) adds conditions based on resource attributes (e.g., "can edit tasks where status is 'draft' and department is 'engineering'"). Use ABAC when you need fine-grained, dynamic rules that vary by resource properties. Many products start with RBAC and add ABAC-like rules later for specific enterprise requirements. See the [glossary entry on authorization](/glossary/prioritization) for more background.
How do I handle permissions for features that do not exist yet?+
Define a permission naming convention (e.g., `resource:action`) and reserve namespace for future features. When a new feature ships, add new permissions to existing roles with sensible defaults. For example, if you add a "Reports" feature, add `reports:read` to all roles and `reports:create` to Admin and Member roles. Communicate the new permissions in your changelog so admins can adjust.
Should I enforce permissions in the UI, the API, or both?+
Both, but the API is the authoritative enforcement point. The UI should hide or disable elements the user cannot access (better UX), but never rely on the UI alone because API endpoints can be called directly. Every API endpoint must check permissions independently. This is non-negotiable for security. The [Feature Specification Template](/templates/feature-spec-template) includes a section for documenting API-level authorization requirements.
How do I migrate from a simple admin/member model to a full RBAC system?+
Map your existing admin users to the Org Admin role and existing members to the Member role. Ship the new role system with these defaults so no user's access changes on day one. Then gradually introduce new roles (Viewer, Guest, Team Lead) as optional upgrades. Avoid breaking existing workflows by ensuring that the Member role retains all permissions that members had before the migration. ---

Explore More Templates

Browse our full library of AI-enhanced product management templates

Free PDF

Like This Template?

Subscribe to get new templates, frameworks, and PM strategies delivered to your inbox.

or use email

Instant PDF download. One email per week after that.

Want full SaaS idea playbooks with market research?

Explore Ideas Pro →