Security Testing

Salesforce Profile Permission Testing

Salesforce profile permission testing validates the baseline access a profile grants before any permission set or group is layered on. It proves that each profile's system permissions, object and field floor, login hours, login IP ranges, default record types, page layout assignments and app defaults match the intended baseline — so the foundation every user stands on is least privilege from the start.

Every user has exactly one profile, so a single profile change can move the access of hundreds of users at once.

What a profile still governs

Every Salesforce user is assigned exactly one profile. Historically the profile held nearly all access: object CRUD, field-level security, system permissions, tab and app visibility, Apex and Visualforce access. Salesforce now recommends a permission-set-led model in which profiles are kept minimal and permission sets carry most access, and it has signaled a long-term move away from profiles as the primary place for permissions.

Even in that model, the profile remains the home of settings that permission sets do not replace. Login hours and login IP ranges are defined per profile. Page layout assignments by record type, default record types, the default app and some session and password policies are profile-level. The profile also defines the floor: anything granted there is held by every user on it, and no permission set can take it away.

That combination makes the profile both a security control and a blast radius. Profile permission testing validates the floor in isolation, then confirms profile-only settings behave as intended. How sets and groups build on that floor is covered in permission set testing.

Profile settings and how they fail

Each profile-level setting has a characteristic failure mode and a test that exposes it.

Profile settingHow it failsWhat to test
System permissionsView All Data, Modify All Data, Manage Users or Customize Application left on a cloned profileA persona on the profile is denied each administrative action
Object permissions floorCreate, edit or delete granted on the profile to every user by defaultProfile-only persona has only the intended baseline CRUD
Login IP rangesNo ranges set, or ranges broader than the corporate networkLogin from outside the range is refused for the profile
Login hoursHours not set for profiles meant to work in fixed windowsSession is refused or ended outside permitted hours
Default record typeNew records created with the wrong record type and business processRecord creation defaults to the intended type per profile
Page layout assignmentsLayout by record type assigned incorrectly, hiding required fields or exposing actionsEach profile sees the intended layout for each record type
Tab and app visibilityApps and tabs default on for profiles that should not use themOnly intended apps appear, and hidden tabs do not replace object-level denial

Profile risks that stay invisible

Profile problems usually date from the org's early years and persist because the profile predates everyone who now administers it.

The cloned administrator

Custom profiles cloned from System Administrator for a power user or integration keep system permissions nobody meant to hand out.

Standard profile assumptions

Standard profiles have permissions that cannot be edited, so teams assume a standard profile is safe when it grants more than the job needs.

Hidden tab mistaken for denial

Setting a tab to hidden removes navigation, but object access still works through search, related lists, reports and the API.

Profile sprawl

Dozens of near-identical profiles drift apart one tweak at a time, so users with the same job end up with different access floors.

Missing network restrictions

Profiles without login IP ranges rely entirely on other controls, and nobody notices until a login from an unexpected location succeeds.

Export and API by default

API Enabled and Export Reports on a broad profile let every user extract data in bulk, even when their role never requires it.

Baseline-first profile testing

Testing the profile on its own before layering sets makes the source of any over-provisioning unambiguous.

1

Inventory active profiles

List profiles with active users, their user counts and the personas each represents, and flag profiles cloned from administrator or standard profiles.

2

Define the intended floor

For each profile, record the baseline object, field and system permissions and the profile-only settings it should carry.

3

Create profile-only personas

Build a test user on each profile with no permission sets or groups assigned, so results reflect the profile alone.

4

Assert the floor and deny beyond it

Confirm baseline actions work and that administrative permissions, bulk export and out-of-scope objects are denied.

5

Test profile-only settings

Validate login IP ranges, login hours, default record types, layout assignments and default apps with the profile-only persona.

6

Layer typical sets and re-check

Add each profile's usual permission set groups and confirm the combined result, handing overlap findings to permission set testing.

Administrative permissions to deny on non-admin profiles

These system permissions carry the widest reach and should be explicit deny assertions for every profile that is not an administrator.

  • View All Data and Modify All Data, which bypass sharing for every object.
  • Manage Users and Assign Permission Sets, which let a user change their own or others' access.
  • Customize Application and Modify Metadata, which allow configuration changes outside the release process.
  • Author Apex, which permits code that can run in system mode.
  • View Setup and Configuration, which exposes org configuration details useful for further access attempts.
  • Export Reports and Weekly Data Export, which allow bulk data extraction.
  • API Enabled for profiles whose users never need programmatic access.
  • Password Never Expires on human user profiles.

Proving equivalence when moving off profiles

Many teams are migrating permissions from profiles into permission sets and groups, consolidating dozens of profiles into a few minimal ones. The goal is a cleaner model with identical or tighter access. The risk is that a user quietly loses a permission they rely on, or quietly keeps one through a leftover profile grant nobody removed.

Profile permission testing makes the migration verifiable. Capture each persona's effective behavior before the change with positive and deny assertions, perform the migration in a sandbox, and run the same suite against the new profile-plus-group combination. Every positive test should still pass, every deny test should still pass, and any new deny assertions reflecting tightened access should pass too. Permission set comparison helps map where permissions moved; the tests prove users still experience the intended access.

Profile permission test scenarios

Scenarios that validate profile baselines and profile-only settings.

ScenarioWhat it proves
Profile-only sales persona attempts Modify All Data actionsThe cloned profile carries no administrative permissions
Support profile user logs in from an IP outside the rangeLogin IP ranges are enforced for the profile
Contractor profile user logs in outside login hoursLogin hours restrict access as configured
New case created by a partner-support profile userDefault record type and business process are correct
Hidden Opportunity tab, user opens an opportunity URLTab visibility is not relied on as object denial
Profile consolidated into a minimal profile plus groupPositive and deny results are unchanged after migration
Seasonal release changes a default on standard profilesBaseline behavior still matches the intended floor

Evidence, currency and what SyntraFlow is designed to do

These capabilities are available for demonstration and proof-of-concept validation.

Profile-only personas

SyntraFlow is designed to run tests as users holding only a profile, isolating the baseline from permission set grants.

Before-and-after migration runs

The same suite can run before and after a profile consolidation, showing behavioral equivalence rather than asserting it.

Baseline evidence for reviews

Runs can retain profile, persona, expected floor and results, giving access reviewers proof of each profile's effective baseline.

Release re-validation

Profile tests can re-run after deployments and seasonal releases within security regression testing.

Related pages

Salesforce security testing

The hub for persona-based validation of every Salesforce access layer.

Permission set testing

Tests the sets and groups that build on each profile's baseline.

Permission set comparison

Maps where permissions sit and move during profile consolidation.

Negative access testing

The deny method used for administrative permissions on non-admin profiles.

Role hierarchy testing

Covers record visibility, which profiles do not control on their own.

Configuration drift

Detects profile changes made outside the release process.

Profile Permission Testing testing FAQs

What is Salesforce profile permission testing?

It is the validation of the baseline access a profile grants on its own, before permission sets and groups are added. Tests run as profile-only personas to confirm the intended object, field and system permission floor, and to verify profile-level settings such as login IP ranges, login hours, default record types and layout assignments.

Why test profiles if most access now comes from permission sets?

The profile defines a floor that no permission set can remove, and it still controls settings permission sets do not, such as login IP ranges and layout assignments. A single over-provisioned profile affects every user on it, so its baseline has to be proven independently.

Does hiding a tab on a profile block access to the object?

No. Tab visibility only affects navigation. If the profile or a permission set grants object access, users can still reach records through search, related lists, reports, direct URLs and the API. Object permissions, not tab settings, should be the subject of deny assertions.

How do you test a migration from profiles to permission sets?

Run a positive and deny suite for each persona before the change, migrate in a sandbox, then run the identical suite against the new minimal profile and permission set groups. Matching results show users kept the access they need and lost nothing else unexpectedly.

Which profile permissions carry the most risk?

View All Data, Modify All Data, Manage Users, Customize Application, Modify Metadata, Author Apex and bulk export permissions carry the widest reach. They should be explicit deny assertions on every profile not intended for administrators.

Start least privilege at the profile

See how profile permission testing proves every user's baseline before a single permission set is added.