Salesforce Permission Model Review Skill
Purpose
This skill reviews the Salesforce permission model — profiles, permission sets,
permission set groups, permission set licenses, muting permission sets, sharing
rules, OWD, role hierarchy, IP restrictions, and session policies — for
over-privilege, toxic combinations, and sharing design risk. It flags
combinations that create security or compliance exposure and produces a
structured findings report. It does not access live orgs or authorize changes.
When to use
- A permission audit is required before a compliance review or certification.
- A new permission set or profile is being designed and needs adversarial review.
- Guest-user access patterns or sharing rule changes need security review.
- A toxic-permission alert has been raised and must be investigated.
When not to use
- Full org posture assessment — use
salesforce-org-assessment-skill.
- Metadata quality review (fields, layouts) — use
salesforce-metadata-review-skill.
- Live permission change proposal — use
salesforce-live-change-approval-protocol.
- Data exposure event response — use
salesforce-data-exposure-escalation-protocol.
Minimum payload (required inputs)
- Sanitized permission exports: profile XML, permission set XML, permission set
group definitions, sharing rule definitions, OWD settings, role hierarchy
summary, IP restriction settings, session policy settings.
- Context: approximate user population, key regulated-data objects, industry vertical.
Workflow
1. Profile review
- List all profiles and their base permissions.
- Flag:
ModifyAllData assigned to any non-system-admin profile.
- Flag:
ViewAllData on profiles with access to PII-classified objects.
- Flag:
API Enabled on profiles without corresponding IP restriction.
- Flag:
Customize Application on profiles outside the designated admin group.
- Flag:
Manage Users outside HR/IT admin profiles.
- Flag: profiles with direct object-level Create/Edit/Delete on financial or
regulated-data objects without documented business justification.
2. Permission set review
- List all permission sets and their grants.
- Flag: permission sets granting
ModifyAllData or ViewAllData that are
assigned broadly (> configurable user threshold).
- Flag: permission sets duplicating profile permissions (redundant, adds attack surface).
- Flag: permission sets with no current assignees (orphaned — attack surface if reassigned).
- Flag:
Field Service
or
Experience Cloud
permission sets
granting object access beyond their intended scope.
3. Permission set groups and muting
- Review permission set group composition.
- Flag: muting permission sets that silently narrow permissions without clear documentation.
- Flag: permission set groups that combine permissions creating toxic combinations.
4. Sharing model review
- Review OWD (Organization-Wide Defaults) per object.
- Flag: OWD = Public Read/Write on objects containing PII or financial data.
- Flag: OWD = Public Read Only on regulated-data objects where stricter control is expected.
- Review role hierarchy: flag roles that grant data access beyond job function.
- Review sharing rules:
- Flag: criteria-based rules that are effectively always-true.
- Flag: sharing rules on objects classified as regulated data.
- Flag: sharing rules granting Edit access where Read is sufficient.
5. Guest user review
- Review guest-user profile permissions (Experience Cloud
).
- Flag: guest-user profile with any object-level Read access to records containing PII.
- Flag: sharing sets that grant guest users access to records via lookup relationships
that could expose unintended records.
- Flag: public-site access (Sites
) with
Apex REST endpoints lacking CSRF protection.
6. IP restrictions and session policies
- Flag: named credentials or connected apps without IP allowlisting in production.
- Flag: session timeout > configurable threshold for privileged user groups.
- Flag:
Lock sessions to the IP address from which they originated disabled
for profiles with sensitive permissions.
Toxic combination registry
These specific combinations always produce a Critical or High finding:
| Combination |
Risk |
Rating |
ModifyAllData + broad assignment (> threshold users) |
Mass data destruction or exfiltration |
Critical |
ViewAllData + PII object access + no IP restriction |
PII exposure |
Critical |
API Enabled + no IP restriction + sensitive object access |
API-based data exfiltration |
High |
Customize Application + non-admin profile |
Privilege escalation via metadata change |
High |
Manage Users + no IP restriction |
Account takeover / privilege escalation |
High |
| Guest user + sharing set + PII object |
Unauthenticated PII exposure |
Critical |
ModifyAllData + Manage Users on same profile |
Full org compromise posture |
Critical |
Evidence requirements
- Sanitized permission exports; no credentials, session tokens, or customer data.
- OWD settings and role hierarchy summary are required for sharing model review.
- User assignment counts (not names) are required for broad-assignment checks.
Output format
permission_model_findings:
profile_findings:
- finding: [description]
severity: Critical | High | Medium | Low
combination: [which toxic combination, if applicable]
evidence: [what in the export supports this]
recommendation: [brief]
permission_set_findings: [same structure]
sharing_model_findings: [same structure]
guest_user_findings: [same structure]
ip_session_findings: [same structure]
toxic_combinations_detected: [list from registry]
escalation_gates_fired: [from salesforce-risk-taxonomy, or "none"]
summary:
critical_count: [count]
high_count: [count]
assumptions: [list]
missing_evidence: [what would improve the review]
Redaction rules
- Never request secrets, credentials, OAuth tokens, refresh tokens, session IDs, MFA seeds, customer PII.
- Sanitize org IDs, user IDs (replace with placeholders) before sharing in outputs.
- Do not include actual user names; use role and count references only.
Privilege / data handling rules
- Permission review findings involving regulated data must be flagged for compliance specialist review.
- Guest-user findings involving PII must trigger salesforce-data-exposure-escalation-protocol.
Handoff rules
- Hands off to: salesforce-org-assessment-skill (full posture context),
salesforce-data-exposure-escalation-protocol (if guest-user PII exposure confirmed),
salesforce-case-capsule (structured handoff for any Critical finding).
- Required handoff fields: matter_id, toxic_combinations_detected, escalation_gates_fired,
critical_count, assumptions.
Audit log fields
- matter_id, skill_id, skill_version, invoked_by, input_hash, evidence_quality, output_verdict, escalation_fired, timestamp
Stop conditions
- Export contains live credentials or session tokens — stop and ask for sanitized version.
- Guest-user PII exposure is confirmed — stop, output ESCALATE, invoke salesforce-data-exposure-escalation-protocol.
- Critical toxic combination detected in a production org — stop and require human review before continuing.
Security notes
- Read-only static review; never requests live org access or runs SOQL queries.
- Sanitized inputs only; any input containing credentials must be refused.
- Toxic combinations are objective findings; remediation requires human-authorized change management.
- Guest-user exposure is always escalation-grade regardless of record count.
1---2name: salesforce-permission-model-review-skill3description: Salesforce Permission Model Review Skill4---56# Salesforce Permission Model Review Skill78## Purpose9This skill reviews the Salesforce permission model — profiles, permission sets,10permission set groups, permission set licenses, muting permission sets, sharing11rules, OWD, role hierarchy, IP restrictions, and session policies — for12over-privilege, toxic combinations, and sharing design risk. It flags13combinations that create security or compliance exposure and produces a14structured findings report. It does not access live orgs or authorize changes.1516## When to use17- A permission audit is required before a compliance review or certification.18- A new permission set or profile is being designed and needs adversarial review.19- Guest-user access patterns or sharing rule changes need security review.20- A toxic-permission alert has been raised and must be investigated.2122## When not to use23- Full org posture assessment — use `salesforce-org-assessment-skill`.24- Metadata quality review (fields, layouts) — use `salesforce-metadata-review-skill`.25- Live permission change proposal — use `salesforce-live-change-approval-protocol`.26- Data exposure event response — use `salesforce-data-exposure-escalation-protocol`.2728## Minimum payload (required inputs)29- Sanitized permission exports: profile XML, permission set XML, permission set30 group definitions, sharing rule definitions, OWD settings, role hierarchy31 summary, IP restriction settings, session policy settings.32- Context: approximate user population, key regulated-data objects, industry vertical.3334## Workflow3536### 1. Profile review37- List all profiles and their base permissions.38- Flag: `ModifyAllData` assigned to any non-system-admin profile.39- Flag: `ViewAllData` on profiles with access to PII-classified objects.40- Flag: `API Enabled` on profiles without corresponding IP restriction.41- Flag: `Customize Application` on profiles outside the designated admin group.42- Flag: `Manage Users` outside HR/IT admin profiles.43- Flag: profiles with direct object-level Create/Edit/Delete on financial or44 regulated-data objects without documented business justification.4546### 2. Permission set review47- List all permission sets and their grants.48- Flag: permission sets granting `ModifyAllData` or `ViewAllData` that are49 assigned broadly (> configurable user threshold).50- Flag: permission sets duplicating profile permissions (redundant, adds attack surface).51- Flag: permission sets with no current assignees (orphaned — attack surface if reassigned).52- Flag: `Field Service`53or54 `Experience Cloud`55permission sets56 granting object access beyond their intended scope.5758### 3. Permission set groups and muting59- Review permission set group composition.60- Flag: muting permission sets that silently narrow permissions without clear documentation.61- Flag: permission set groups that combine permissions creating toxic combinations.6263### 4. Sharing model review64- Review OWD (Organization-Wide Defaults) per object.65- Flag: OWD = Public Read/Write on objects containing PII or financial data.66- Flag: OWD = Public Read Only on regulated-data objects where stricter control is expected.67- Review role hierarchy: flag roles that grant data access beyond job function.68- Review sharing rules:69 - Flag: criteria-based rules that are effectively always-true.70 - Flag: sharing rules on objects classified as regulated data.71 - Flag: sharing rules granting Edit access where Read is sufficient.7273### 5. Guest user review74- Review guest-user profile permissions (Experience Cloud75).76- Flag: guest-user profile with any object-level Read access to records containing PII.77- Flag: sharing sets that grant guest users access to records via lookup relationships78 that could expose unintended records.79- Flag: public-site access (Sites80) with81 Apex REST endpoints lacking CSRF protection.8283### 6. IP restrictions and session policies84- Flag: named credentials or connected apps without IP allowlisting in production.85- Flag: session timeout > configurable threshold for privileged user groups.86- Flag: `Lock sessions to the IP address from which they originated` disabled87 for profiles with sensitive permissions.8889## Toxic combination registry90These specific combinations always produce a Critical or High finding:9192| Combination | Risk | Rating |93|---|---|---|94| `ModifyAllData` + broad assignment (> threshold users) | Mass data destruction or exfiltration | Critical |95| `ViewAllData` + PII object access + no IP restriction | PII exposure | Critical |96| `API Enabled` + no IP restriction + sensitive object access | API-based data exfiltration | High |97| `Customize Application` + non-admin profile | Privilege escalation via metadata change | High |98| `Manage Users` + no IP restriction | Account takeover / privilege escalation | High |99| Guest user + sharing set + PII object | Unauthenticated PII exposure | Critical |100| `ModifyAllData` + `Manage Users` on same profile | Full org compromise posture | Critical |101102## Evidence requirements103- Sanitized permission exports; no credentials, session tokens, or customer data.104- OWD settings and role hierarchy summary are required for sharing model review.105- User assignment counts (not names) are required for broad-assignment checks.106107## Output format108```109permission_model_findings:110 profile_findings:111 - finding: [description]112 severity: Critical | High | Medium | Low113 combination: [which toxic combination, if applicable]114 evidence: [what in the export supports this]115 recommendation: [brief]116 permission_set_findings: [same structure]117 sharing_model_findings: [same structure]118 guest_user_findings: [same structure]119 ip_session_findings: [same structure]120121toxic_combinations_detected: [list from registry]122escalation_gates_fired: [from salesforce-risk-taxonomy, or "none"]123summary:124 critical_count: [count]125 high_count: [count]126assumptions: [list]127missing_evidence: [what would improve the review]128```129130## Redaction rules131- Never request secrets, credentials, OAuth tokens, refresh tokens, session IDs, MFA seeds, customer PII.132- Sanitize org IDs, user IDs (replace with placeholders) before sharing in outputs.133- Do not include actual user names; use role and count references only.134135## Privilege / data handling rules136- Permission review findings involving regulated data must be flagged for compliance specialist review.137- Guest-user findings involving PII must trigger salesforce-data-exposure-escalation-protocol.138139## Handoff rules140- Hands off to: salesforce-org-assessment-skill (full posture context),141 salesforce-data-exposure-escalation-protocol (if guest-user PII exposure confirmed),142 salesforce-case-capsule (structured handoff for any Critical finding).143- Required handoff fields: matter_id, toxic_combinations_detected, escalation_gates_fired,144 critical_count, assumptions.145146## Audit log fields147- matter_id, skill_id, skill_version, invoked_by, input_hash, evidence_quality, output_verdict, escalation_fired, timestamp148149## Stop conditions150- Export contains live credentials or session tokens — stop and ask for sanitized version.151- Guest-user PII exposure is confirmed — stop, output ESCALATE, invoke salesforce-data-exposure-escalation-protocol.152- Critical toxic combination detected in a production org — stop and require human review before continuing.153154## Security notes155- Read-only static review; never requests live org access or runs SOQL queries.156- Sanitized inputs only; any input containing credentials must be refused.157- Toxic combinations are objective findings; remediation requires human-authorized change management.158- Guest-user exposure is always escalation-grade regardless of record count.