Skip to content

Field & Object Security: Profiles, Permission Sets & FLS

Field and object security controls what users can do with data: which objects they can access, which fields they can see, and what CRUD operations they can perform. While the sharing model controls which records a user can see, field and object security controls what they can do with those records.

Two independent security layers shown side by side: sharing model controls which records are visible, while profiles and permission sets control what operations and fields are accessible on those records.
Figure 1. Record access and object/field access are evaluated independently and both must grant access for a user to see data. A user who can see a record via sharing can still be blocked from specific fields by FLS. These two layers do not overlap and must both be designed explicitly.

A Profile is the baseline permission assignment for a user. Every user must have exactly one.

CategoryPermissions
Object permissionsCreate, Read, Edit, Delete, View All, Modify All
Field-level securityVisible, Read Only, Hidden per field per object
Tab visibilityDefault On, Default Off, Hidden
App visibilityWhich Lightning apps are visible
Record typesWhich record types are available + default
Page layoutsWhich page layout to display per record type
Login hoursWhen the user can log in
Login IP rangesWhere the user can log in from
System permissionsAPI Enabled, Author Apex, Manage Users, etc.
Apex class accessWhich Apex classes are executable
Visualforce page accessWhich VF pages are accessible
Connected App accessWhich Connected Apps are available

Why minimum access profiles work better:

Traditional ApproachMinimum Access + Permission Sets
Multiple profiles (one per role)One or few base profiles
Hard to audit; permissions scattered across profilesEasy to audit; each Permission Set has a clear purpose
Profile cloning creates driftPermission Sets are reusable building blocks
Changing a profile affects all assigned usersPermission Sets can be assigned selectively
Cannot assign multiple profilesCan stack multiple Permission Sets
1,500 profile limit (Enterprise Edition); 2,000 (Unlimited Edition)1,000 Permission Sets + groups
FeatureStandard ProfilesCustom Profiles
Object permissionsCannot reduce below standardFully configurable
FLSCan restrict (since Spring ‘23)Fully configurable
System permissionsFixedConfigurable
DeletableNoYes (if no users assigned)
EditableLimitedFull
RecommendationAvoid for real implementationsAlways use custom profiles

Permission Sets add permissions on top of the Profile baseline. They are the primary mechanism for granting granular access in modern Salesforce.

  1. One concern per Permission Set. “Sales: Create Quotes” not “Sales User Everything.”
  2. Name descriptively. Include the functional area and the permission being granted.
  3. Never duplicate Profile permissions. Permission Sets are additive.
  4. Group logically. Use Permission Set Groups to bundle related sets.
  5. Document the purpose. Every Permission Set should have a clear description.
CategoryExampleGranularity
Function-based”Sales: Create Opportunities”Fine, one business function
Feature-based”Einstein Analytics User”Medium, access to a platform feature
Role-based”Regional Manager Permissions”Broad; use Permission Set Groups instead
Integration-based”API: Order Sync Service”Fine, specific integration needs
Temporary”Q4 Promotion Campaign Access”Time-limited (use session-based or assignment expiration)
MethodUse CaseAutomation
Manual assignmentAd hoc, small scaleNone; admin assigns via Setup
Assignment via groupRole-based bulk assignmentAssign Permission Set Group to users
Flow-based assignmentDynamic, event-drivenFlow assigns/removes based on criteria
Apex-based assignmentIntegration-drivenCode assigns during user provisioning
Permission Set Assignment ExpirationTemporary accessAuto-expires after specified date

Permission Set Groups bundle multiple Permission Sets into a single assignable unit. They represent a “role” in the permission model.

Permission Set Group bundling five atomic permission sets for a Sales Manager role, with a muting permission set blocking the Delete Opportunity permission within the group.
Figure 2. Permission Set Groups bundle atomic permission sets into a single assignable unit representing a business role. The muting permission set removes the Delete Opportunity permission within this group without modifying the underlying “Read/Write Opportunities” permission set, preserving its reusability in other groups.

Muting Permission Sets remove specific permissions from a Permission Set Group without modifying the underlying Permission Sets. This is what makes Permission Sets truly reusable.

Example: The “Write Opportunities” Permission Set grants Create, Read, Edit, Delete on Opportunities. The Sales Manager group needs everything except Delete. Rather than creating a separate Permission Set, a Muting Permission Set blocks Delete.

Without MutingWith Muting
Create “Write Opps No Delete” Permission SetReuse “Write Opps” Permission Set
Duplicate Permission Sets for slight variationsOne muting set per group removes specific permissions
Permission Set sprawlClean, composable architecture

How Record Access and Object/Field Access Combine

Section titled “How Record Access and Object/Field Access Combine”

A user must pass BOTH the record-level check AND the object/field-level check to access data. These two layers are evaluated independently, and both must grant access.

Three-gate access evaluation sequence: record-level sharing check, then object CRUD check, then field-level security check, with denial possible at any gate independently.
Figure 3. Data access requires passing three independent gates in sequence: the sharing model gate, the object CRUD gate, and the FLS gate. Passing two of three is not enough. Each gate can independently deny access or strip fields regardless of what the other gates allow.

Object permissions control Create, Read, Edit, Delete (CRUD) plus two elevated permissions: View All and Modify All.

PermissionWhat It DoesRequires
CreateInsert new recordsRead
ReadView records (subject to sharing)Nothing
EditUpdate existing recordsRead
DeleteDelete recordsRead + Edit
View AllSee ALL records regardless of sharing modelRead
Modify AllEdit/Delete ALL records + transfer ownership regardless of sharingRead + Edit + Delete
CapabilityView AllModify AllSystem Admin
See all records (bypass sharing)YesYesYes
Edit all recordsNoYesYes
Delete all recordsNoYesYes
Transfer record ownershipNoYesYes
Change sharing settingsNoNoYes
Manage object metadataNoNoYes

FLS controls which fields users can see and edit on an object, independent of object-level permissions.

SettingUser Can SeeUser Can Edit
Visible + EditableYesYes
Visible + Read OnlyYesNo
HiddenNoNo

This distinction is one the CTA board specifically tests:

AspectField-Level SecurityPage Layout
What it controlsData access (API + UI)UI presentation only
Security enforcementYes, enforced at API levelNo, only affects page display
Can user see via API?Only if FLS grants accessAlways (if FLS allows)
Can user see in reports?Only if FLS grants accessYes (if FLS allows)
Assigned viaProfile or Permission SetProfile + Record Type combination
True security boundary?YESNO
  1. Default to hidden. Only make fields visible when there is a business need.
  2. Use Permission Sets for FLS. Do not manage FLS on profiles (minimum access pattern).
  3. Audit FLS regularly. Field visibility creeps over time.
  4. Remember API access. FLS applies to API calls too; integrations need field access.
  5. Test with different users. Verify FLS enforcement in reports, list views, and API.

Tab visibility controls whether an object’s tab appears in the app navigation.

SettingBehavior
Default OnTab is visible by default
Default OffTab is available but hidden by default; user can add it
Tab HiddenTab is not available to the user at all

The recommended architecture for enterprise Salesforce combines all these elements:

Enterprise permission architecture with a single Minimum Access Profile as the foundation, four Permission Set Groups representing business roles, reusable atomic permission sets, and muting permission sets for exceptions.
Figure 4. The Minimum Access Profile plus Permission Set Group model enables permission reuse across roles: “PS: Read Accounts” and “PS: Run Reports” are shared by Sales Rep, Sales Manager, and Service Agent without duplication. Muting permission sets handle exceptions without creating role-specific permission set variants.

Personal study notes for the Salesforce CTA exam. Content compiled from VJ's study notes, official Salesforce documentation, community sources, and online publicly available content, then organized and presented with AI assistance. Not affiliated with Salesforce. © 2025–2026 VJ Srivastava.