As your Salesforce org scales, managing user access becomes a key concern. The traditional method of assigning Profiles has limitations, and modern best practices now recommend leveraging Permission Sets and Permission Set Groups.
In this in-depth guide, you’ll learn the difference between Profiles vs Permission Sets, when to use each, and how to adopt least privilege access models for better security, compliance, and scalability.
Profiles are the original way Salesforce managed user permissions. Every user has exactly one profile, which defines:
Permission Sets are reusable, modular permission bundles that extend user access on top of a profile.
They can grant:
You can assign multiple permission sets to the same user, making them highly flexible and scalable.
Feature | Profiles | Permission Sets |
---|---|---|
One per user | ✅ | ❌ |
Assign multiple | ❌ | ✅ |
Modular | ❌ | ✅ |
Best for baseline access | ✅ | ❌ |
Best for additional access | ❌ | ✅ |
Deployment flexibility | ❌ | ✅ |
Permission Set Groups allow you to combine multiple permission sets into a single group that you can assign like a bundle.
A user in the Sales department might need:
Rather than assigning 3+ individual permission sets, you can group them into a Sales User Group
.
You have a Standard User
profile for most employees.
To give Marketing users access to Campaigns, Reports, and Pardot:
Create Permission Sets:
Campaign Access
Report Builder
Pardot Integration
Create a Permission Set Group:
Marketing Team Access
Assign the group to all Marketing users
This model is flexible and doesn’t require a custom profile.
Give users only the permissions they need—no more.
Use a generic profile as a baseline, then layer access with Permission Sets.
Name permission sets clearly (e.g., Edit_Accounts
, Access_Reports
, Marketing_Email_Admin
).
Use tools like Permission Set Assignment Reports and Field Accessibility Viewer.
Store access policy documentation or mappings using Custom Metadata Types to improve governance.
These tools help identify over-permissioned users and outdated assignments.
Salesforce recommends using Permission Sets as the future of user access control.
Steps to migrate:
You can automate permission set assignments via Apex:
Id psId = [SELECT Id FROM PermissionSet WHERE Name = 'Access_Reports'].Id;PermissionSetAssignment psa = new PermissionSetAssignment(AssigneeId = UserInfo.getUserId(),PermissionSetId = psId);insert psa;
This is useful during user onboarding, sandbox refreshes, or automation.
Understanding and leveraging Permission Sets and Profiles correctly is essential for every Salesforce Admin. It not only improves your org’s security posture but also prepares you for scalable user access management.
Ready to reduce your custom profiles? Start building permission sets today and future-proof your Salesforce access model.
Need a template or example set strategy? Drop a comment or check out our downloadable permission set architecture guide!
Quick Links
Legal Stuff