In brief

  • A role describes a work function, but access must also account for the business unit, the specific record, and the permitted action.
  • Permissions are checked on the server for every request; a hidden button or an interface filter does not provide protection.
  • An access matrix connects roles, data, and operations and becomes the basis for development, testing, and regular audits.
  • Granting, changing, and revoking permissions must form one managed process, including temporary access and offboarding.

Why a Few Roles Are Not Enough for Multiple Business Units

In a small team, a CRM often starts with two access levels: administrator and user. Once branches, sales departments, a finance function, and external contractors appear, this setup no longer reflects how the business actually works. A manager needs the customers in their area, a department head needs an overview of the team, an accountant needs payment information, and an owner needs a company-wide view. If every new requirement is handled by adding another role, the system quickly fills with similar names, overlapping permissions, and unclear exceptions.

It helps to separate three questions. First, what can the employee do: read, create, change, approve, delete, or export? Second, which data can they do it with: customers, deals, documents, payments, or reports? Third, within which organizational boundary: their own records, a team, an office, a legal entity, or the entire group? A role answers only part of this model and should not replace the other conditions.

Describe Data and Operations Before Naming Roles

It is better to begin the design process not with a list of job titles, but with an inventory of CRM objects. For each object, document its owner, sensitivity, relationships, and permitted operations. A manager may be allowed to access a customer record, while an attached document is restricted to the employee involved in its review. Many participants may read a deal, whereas changing its financial result should remain a server-side operation protected by a separate permission.

Next, group work responsibilities into stable roles. A role name should explain a function, not identify a specific person: “sales manager,” “business unit head,” or “financial controller.” Individual exceptions can be used as a temporary measure with an assigned owner and expiration date, but they should not become the permanent configuration method. Otherwise, it becomes impossible to understand why an employee received access and whether they still need it.

  1. 01

    Create an Object Register

    List customers, contacts, deals, tasks, documents, payments, reports, settings, integration keys, and other entities.

  2. 02

    Separate the Actions

    Do not combine reading, editing, approval, deletion, export, and administrative management into a single permission.

  3. 03

    Specify the Organizational Boundary

    For each action, define the permitted level: own records, team, business unit, organization, or the entire group.

  4. 04

    Group Responsibilities into Roles

    Combine only those permissions that one work function genuinely requires.

How to Build a Practical Access Matrix

An access matrix provides a common language for business stakeholders, analysts, and developers. Data types and critical actions can be placed in rows, with roles in columns. Each cell should contain more than a simple “yes” or “no”: it should also define the scope, additional conditions, and approval method. For example, a department head can read deals in their business unit, while changing a commission requires separate approval.

Object and ActionManagerBusiness Unit HeadFinancial ControllerCRM Administrator
Customers: readOwn and assignedOwn business unitOnly those connected to operations under reviewWithin the approved administrative scope
Deals: editOwn deals, except protected fieldsBusiness unit deals in permitted statusesFinancial stages onlyNo manual changes to business outcomes
Documents: viewOnly those required for workWith separate permissionWithin the scope of a reviewNot automatically bundled with settings access
Reports: exportDenied by defaultBusiness unit aggregatesApproved financial reportsDenied by default
Users: manageNoSubmit a change requestNoAssign approved roles only

This table is an example of a structure, not a ready-made policy for every company. The actual cells depend on business processes, contractual obligations, and the types of data involved. Process owners and data owners approve the matrix before it is translated into system rules and test scenarios. Every nonstandard permission must have a clear justification.

It is easier to justify every permission that has been granted than to list every dangerous combination after launch.

Principle of least privilege

Least Privilege Without Disrupting Work

The principle of least privilege means that an employee receives only the permissions required for their current task. It does not mean making the CRM inconvenient. On the contrary, a well-designed role removes unnecessary fields and actions, reduces the likelihood of errors, and makes the workspace easier to understand. Problems begin when broad permissions are granted “just in case” and remain in place after responsibilities change.

For infrequent operations, it is better to use a request for temporary elevation, approval by a second participant, or a dedicated workflow. Bulk export, changes to closed deals, and user management do not have to be part of a manager’s everyday role. The process for obtaining a required permission must be clear; otherwise, employees will start bypassing restrictions by sharing accounts or transferring files outside the CRM.

  • New roles start with the minimum set of permissions and expand only when a need is confirmed.
  • Critical actions are separated from routine work and, where necessary, require approval.
  • Temporary access has an expiration date and automatically returns to the baseline role.
  • Service and integration accounts do not use the permissions of a regular administrator.
  • Shared logins are not used: every action must be associated with a specific account.

The Business Unit Boundary Must Be Part of the Data

In a CRM used by multiple legal entities or independent business units, a role alone is not enough. Users with the same role may work in different organizations and must not be able to see one another’s records. Organization, office, or team membership must therefore be stored on key entities and included in every access decision. Before changing a related record, the system must also verify that the customer, deal, cash desk, and document all belong to an allowed boundary.

The Crypto Exchange CRM case demonstrates this approach. The platform supports a network owner, a super administrator, an administrator of an individual exchange office, and a cashier. The organization is determined from the employee’s active profile, while the server independently verifies the ownership of related records. A cashier works with customers and operational transactions within their context but does not receive access to protected financial data. A private file is provided only after the relationship between the file, the customer document, and the organization has been verified.

Why Authorization Must Be Enforced on the Server

Hiding buttons can improve the interface, but it does not protect data. A request can be sent directly, a record identifier can be replaced, and a saved document link can be opened outside the intended screen. On every read and write path, the server must therefore identify the user, their work context, the requested object, and the permitted action. When no applicable rule exists, access is denied by default.

A centralized authorization layer reduces the risk that a permission check will be omitted from a report, export, or integration method. However, a universal function does not eliminate domain rules. The ability to modify a deal depends not only on the role, but also on the organization, the current status, ownership of related data, and the type of operation. The check must take place before the change and must not trust fields supplied by the browser.

  1. 01

    Identify the Subject

    Obtain the user and active profile from a verified server session, not from a request parameter.

  2. 02

    Determine the Object and Boundary

    Load the record on the server and verify its organization, owner, and related entities.

  3. 03

    Check the Action

    Match the operation against the role, attributes, and current process state.

  4. 04

    Handle Denial Safely

    Do not partially change state, do not expose protected data in the error, and record significant events.

Onboarding, Transfers, and Offboarding as One Lifecycle

Even an accurate matrix is ineffective without an account management process. During onboarding, the responsible party confirms the business unit, work function, and start date. When an employee transfers, their old permissions should not automatically accumulate alongside the new ones: first define the future baseline role, then revoke incompatible permissions. Temporary assignments and cover arrangements receive an end date.

Offboarding does not begin by removing a name from an employee list; it requires closing every access path. The organization must block sign-in, terminate active sessions, revoke tokens and keys, remove assignments, transfer ownership of work records, and review external integrations. The activity history is retained according to internal policy rather than deleted together with the account.

EventRequired ActionControl
OnboardingAssign a baseline role and organizational contextApproval by the process owner
TransferRevoke old incompatible permissions and grant new onesBefore-and-after comparison
Temporary coverGrant temporary authorityAutomatic expiration date
OffboardingBlock every account access path and transfer work objectsCompletion checklist

What to Review in a Roles and Access Audit

An access audit answers two different questions: whether the current configuration matches the approved matrix, and whether the system technically enforces the rules. For the first question, export active accounts, roles, business units, temporary exceptions, and unused access. For the second, run negative tests: an employee from another branch substitutes someone else’s identifier, a cashier opens a financial report directly, or a blocked user repeats an old request.

Logging helps investigate violations, but does not prevent them on its own. Useful log fields include the subject, action, object, time, authorization result, and work context. Sensitive data and secrets should not be recorded. The review frequency depends on the risk and the pace of staffing changes; assigning an audit owner and addressing identified deviations matters more than formally running a report on a calendar.

  • Are any accounts still active for employees who have left or transferred?
  • Have individual permissions accumulated beyond the approved role?
  • Does every temporary permission have an owner and an expiration date?
  • Are permissions enforced in APIs, reports, exports, files, and background jobs?
  • Does the system deny access to an object from another business unit even when its identifier is known?
  • Are role changes and critical administrative actions recorded?

How to Implement the Role Model in Stages

If the CRM is already in use, do not replace every permission with a new model at once. Start with the most sensitive objects and a business unit with a well-understood process. Document actual responsibilities, prepare the matrix, implement server-side rules, and run positive and negative scenarios in a test environment. After launch, collect user requests: they will reveal where the matrix does not reflect actual work, but they should not automatically become permanent exceptions.

For a new CRM, include access requirements in the specification before designing the screens. Organizational ownership then becomes part of the data model, while auditing and revocation during offboarding become part of the product rather than a late configuration step. The Agentix Labs team designs these rules together with operational workflows and integrations so that restrictions work consistently in the interface, API, reports, and file environment.

  1. 01

    Choose a Pilot Scope

    Limit the first stage to a specific business unit, data set, and measurable work scenarios.

  2. 02

    Approve the Matrix

    Obtain confirmation from process owners and data owners before translating the rules into code.

  3. 03

    Implement and Test

    Add server-side restrictions, bypass tests, logging, and the denial procedure.

  4. 04

    Expand Using the Template

    Apply the validated model to additional business units while preserving consistent definitions of roles and actions.

Frequently asked questions

How is a role different from an access permission in a CRM?

A role groups permissions for a particular work function. A permission describes a specific action on data, while actual access may also depend on the business unit, record owner, process status, and other attributes.

Are “user” and “administrator” roles sufficient?

They may sometimes be sufficient for a small system, but this model is usually too coarse for multiple business units. It does not separate work functions, visibility scopes, and critical operations, so users receive either excessive or insufficient access.

Can data be protected with filters and hidden buttons?

No. Filters and hidden elements improve the interface, but a request can be sent directly. The server must check the user, object, action, and organizational boundary for every read or change.

How should temporary access be handled while a manager is on leave?

Create a separate temporary assignment with an owner, justification, a limited set of actions, and an automatic expiration date. Do not share a password or expand the substitute employee’s baseline role indefinitely.

Which checks are essential when an employee leaves?

Block sign-in, terminate active sessions, revoke tokens and integration keys, remove roles and assignments, transfer work records, and review external systems. Retain the employee’s activity history according to internal policy.

Sources

  1. NIST: Role-Based Access ControlChecked 30 July 2026
  2. NIST SP 800-53 Rev. 5: Security and Privacy Controls for Information Systems and OrganizationsChecked 30 July 2026
  3. OWASP Cheat Sheet Series: AuthorizationChecked 30 July 2026
This article was prepared by the Agentix Labs editorial team with AI used for research, structure and drafting. Vladislav reviews the final text, facts and recommendations.