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.
-
01
Create an Object Register
List customers, contacts, deals, tasks, documents, payments, reports, settings, integration keys, and other entities.
-
02
Separate the Actions
Do not combine reading, editing, approval, deletion, export, and administrative management into a single permission.
-
03
Specify the Organizational Boundary
For each action, define the permitted level: own records, team, business unit, organization, or the entire group.
-
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 Action | Manager | Business Unit Head | Financial Controller | CRM Administrator |
|---|---|---|---|---|
| Customers: read | Own and assigned | Own business unit | Only those connected to operations under review | Within the approved administrative scope |
| Deals: edit | Own deals, except protected fields | Business unit deals in permitted statuses | Financial stages only | No manual changes to business outcomes |
| Documents: view | Only those required for work | With separate permission | Within the scope of a review | Not automatically bundled with settings access |
| Reports: export | Denied by default | Business unit aggregates | Approved financial reports | Denied by default |
| Users: manage | No | Submit a change request | No | Assign 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.
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.
| Event | Required Action | Control |
|---|---|---|
| Onboarding | Assign a baseline role and organizational context | Approval by the process owner |
| Transfer | Revoke old incompatible permissions and grant new ones | Before-and-after comparison |
| Temporary cover | Grant temporary authority | Automatic expiration date |
| Offboarding | Block every account access path and transfer work objects | Completion 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.
-
01
Choose a Pilot Scope
Limit the first stage to a specific business unit, data set, and measurable work scenarios.
-
02
Approve the Matrix
Obtain confirmation from process owners and data owners before translating the rules into code.
-
03
Implement and Test
Add server-side restrictions, bypass tests, logging, and the denial procedure.
-
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
- NIST: Role-Based Access ControlChecked 30 July 2026
- NIST SP 800-53 Rev. 5: Security and Privacy Controls for Information Systems and OrganizationsChecked 30 July 2026
- OWASP Cheat Sheet Series: AuthorizationChecked 30 July 2026