User roles should describe responsibility and access inside the application, not merely reproduce an organisation chart. A sound role model allows people to complete their work while limiting access to records and actions they do not need. A poor model creates either constant permission requests or broad accounts that expose unnecessary data and control.

The practical method is to start with tasks, records and decisions, then group permissions into roles. Do not begin by creating an “admin”, “manager” and “user” role and hoping they cover the process.

First separate identity from permission

Authentication confirms who a person is. Authorisation determines what that person may do. A strong login process does not compensate for weak permissions after login.

A role is normally a reusable collection of permissions. The exact implementation may use roles, attributes, ownership rules or a combination, but the business requirement should be expressed in plain operational terms:

  • which records the person can see;
  • which actions they can perform;
  • which conditions limit those actions;
  • which high-impact actions require approval or additional evidence.

A step-by-step method for defining roles

Step 1: list every type of user

Include people who use the system regularly and those who appear only during exceptions. A typical list may contain:

  • customers or members;
  • staff who process everyday work;
  • team leaders and approvers;
  • finance, compliance or support staff;
  • system administrators;
  • external partners, suppliers or contractors;
  • temporary users;
  • service accounts used by integrations.

Do not assume that a job title maps neatly to one role. Ask what the person does in this process and which information is required to do it.

Step 2: inventory actions and records

For each user type, record the actions it may need to perform. Use specific verbs such as view, create, edit, submit, assign, approve, cancel, export, delete, restore, configure and impersonate.

Then identify the records affected: customer, application, order, document, invoice, user account, system setting or report. “Can manage customers” is too broad. It may conceal very different permissions to view contact details, change status, export all records or delete an account.

Step 3: define the scope of access

A permission is rarely global. The same action may be allowed only for:

  • the user's own record;
  • records assigned to the user;
  • records belonging to the user's team, branch or customer organisation;
  • records at a particular workflow stage;
  • records below a financial or risk threshold;
  • records created within a defined period.

These conditions should be visible in the requirements. They often create more complexity than the action itself.

Step 4: distinguish routine work from privileged actions

High-impact capabilities deserve separate treatment. Examples include:

  • changing another user's permissions;
  • exporting large datasets;
  • deleting or restoring records;
  • altering financial values;
  • overriding an approval or validation rule;
  • viewing sensitive information;
  • changing integration, security or billing settings;
  • acting as another user.

Do not include these in a broad everyday role merely because the user occasionally needs them. Consider separate approval, time-limited access, a recorded reason or a specialist administrator role.

Step 5: build a permission matrix

A matrix makes hidden assumptions visible and gives the development and testing teams a concrete reference.

Action Customer Caseworker Team manager System administrator
View a case Own cases only Assigned cases Cases in own team Only when required for support
Edit case details Selected fields before submission Assigned cases at permitted stages Team cases with recorded reason for override No routine business edits
Approve a case No No Within agreed authority No
Export records Own data in the supported format No bulk export Approved team reports Technical export only under controlled procedure
Manage user access Own password and profile No Request changes for own team Apply approved access changes

The example is illustrative. A real matrix should use the organisation's actual records, conditions and approval rules.

Step 6: design for joiners, movers and leavers

Permissions change over time. The role model should cover:

  • how a new user receives access;
  • who approves the role;
  • what happens when the person changes team or responsibility;
  • how temporary access expires;
  • how access is removed when the relationship ends;
  • which records remain assigned to the departing user;
  • how dormant and shared accounts are handled.

An application can implement permissions correctly and still be unsafe if old access is never reviewed or removed.

Step 7: define administration without creating a universal superuser

“Administrator” often combines unrelated responsibilities: user access, business configuration, content, data correction and technical support. Splitting these responsibilities can reduce risk and make the interface clearer.

Ask whether each administrative action is required routinely, how it is approved and whether the administrator needs to see the underlying business data. Technical support does not automatically require unrestricted access to every customer record.

Step 8: write permission scenarios for testing

For every important rule, include a positive and negative test. Examples:

  • A caseworker can update a case assigned to them while it is in Review.
  • The same caseworker cannot update a case assigned to another team.
  • A manager can approve a case within their authority limit.
  • The manager cannot approve a case they submitted where separation is required.
  • A customer cannot discover another customer's record through search, export or a direct URL.
  • An expired contractor account cannot sign in or continue an existing session.

Negative tests are essential. Checking only that an authorised user can complete an action does not demonstrate that unauthorised users are blocked.

Step 9: agree review and audit responsibilities

Define who reviews access, how often the review is triggered and which evidence is retained. The appropriate process depends on the sensitivity and impact of the system, but the ownership should never be implied.

Important permission changes and privileged actions may need an audit record. The requirement should state which events matter and who is allowed to inspect that history.

Common role-design mistakes

Copying job titles directly

Job titles change and vary between teams. Roles should express stable responsibilities in the application.

Giving managers unrestricted access

Managerial responsibility does not necessarily require access to all customer data, system settings or exports. Define the actual authority and scope.

Using one role for everyday and exceptional actions

If a rare override is included in a routine role, it becomes available every day. Separate the capability or require an additional control.

Creating dozens of almost identical roles

Excessive role variation becomes difficult to understand and test. Where possible, use a small set of roles combined with clear scope rules such as team, organisation or record ownership.

Ignoring service and integration accounts

Automated accounts also have access. They need named ownership, limited permissions, secure credential handling and a process for rotation and removal.

Acceptance checklist

  • Every role has a clear business purpose and owner.
  • Permissions are defined by action, record and scope.
  • High-impact actions are separated from routine work.
  • External organisations cannot access one another's data.
  • Joiner, mover, leaver and temporary-access processes are defined.
  • Positive and negative permission tests are included.
  • Administrative access is no broader than necessary.
  • Review and audit responsibilities are assigned.

Next step

Take one representative workflow and complete a permission matrix for it before designing screens. Review the matrix with the people who perform, approve and support the process. Disagreements at this stage are valuable: resolving them in a document is safer and cheaper than discovering them after launch.