by HelloMavens
Salesforce Security Review
A security assessment of your Salesforce environment against the Security Benchmark for Salesforce (SBS).
Section 1
Executive summary
A one-page read on where you stand.
See the Appendix for what the passes mean and why some controls weren't applicable →
Risk tier breakdown
Top critical findings
- SBS-ACS-003 — Respondent attests the `Approve Uninstalled Connected Apps` permission is NOT properly restricted with documented justification per holder. End-users with this permission can self-approve OAuth grants.
- SBS-CPORTAL-001 — Respondent attests they cannot confirm portal Apex methods are free of parameter-based record access. This is the canonical IDOR (insecure direct object reference) vector for portals.
- SBS-CPORTAL-002 — Respondent attests guest users are NOT properly restricted to login/signup-only access. Guest user breaches are the most public class of Salesforce data leaks.
Risk by business impact
- Data breach exposure: 4 access / authentication / data-protection controls failed.
- Compliance gap: 2 categories scored below 65 / 100 — likely weak spots in audit conversations.
- Operational risk: 7.1% of controls couldn't be evaluated from your responses. A consultant scan would resolve them with evidence-based scoring.
Section 2
Category scorecards
One card per SBS category. Each shows the 0–100 score plus the OWASP and regulation citations relevant to that category.
Section 3
Remediation detail
Every failed control with what to fix, why it matters, how to fix it, and how to verify the fix worked.
Respondent attests the `Approve Uninstalled Connected Apps` permission is NOT properly restricted with documented justification per holder. End-users with this permission can self-approve OAuth grants.
The Approve Uninstalled Connected Apps permission allows users to bypass Connected App usage restrictions and self-authorize any OAuth application without administrator approval. This establishes an uncontrolled security boundary: users with this permission can grant external applications access to Salesforce data without oversight, enabling data exfiltration, unauthorized integrations, and potential account compromise. Unlike other permissions that require additional failures to exploit, this permission directly enables unauthorized third-party access the moment it is misassigned—making it a primary security boundary that must be tightly controlled.
- Remove the
Approve Uninstalled Connected Appspermission from any profile, permission set, or permission set group that lacks a documented justification or is assigned to end-users. - For any authorization that legitimately requires this permission (e.g., administrators or developers testing connected apps), add or update the rationale in the system of record to clearly justify the need and identify the specific role or use case.
- Ensure that connected apps required for business operations are properly installed and allowlisted rather than relying on this permission for end-user access.
- Reconcile and update the system of record to ensure complete and accurate inventory of all assignments of this permission.
- Enumerate all profiles, permission sets, and permission set groups that include the
Approve Uninstalled Connected Appspermission using Salesforce Setup, Metadata API, Tooling API, or an automated scanner. - Compare the enumerated list against the organization's designated system of record for this permission.
- Verify that every profile, permission set, and permission set group granting "Approve Uninstalled Connected Apps" has a corresponding entry in the system of record.
- Confirm that each entry includes:
- A clear business or technical justification for requiring this permission,
- Identification of the user role or persona (e.g., administrator, developer, integration manager),
- Any applicable exception or approval documentation, and
- Confirmation that the use case is limited to testing or managing connected app integrations.
- Verify that the permission is not assigned to end-user profiles or permission sets intended for general business users.
- Flag as noncompliant any authorizations lacking documentation, justification, or assigned to unauthorized user populations.
Respondent attests they cannot confirm portal Apex methods are free of parameter-based record access. This is the canonical IDOR (insecure direct object reference) vector for portals.
When portal-exposed methods accept user-controlled parameters to determine record access, external users can manipulate these inputs to bypass intended access controls and exfiltrate unauthorized data. By iterating record IDs, modifying query filters, or injecting field names, attackers gain direct access to records beyond their sharing-based permissions—even when proper sharing keywords are declared. This vulnerability is especially severe in customer portal contexts where thousands of external users with adversarial intent can systematically enumerate organizational data. A single method accepting a record ID parameter from the frontend creates a SQL injection-equivalent vulnerability in the Salesforce trust model—allowing attackers to read, modify, or delete data without authentication or authorization checks, independent of any other security control failures. This constitutes a Critical boundary violation: unauthorized users access data they should never see, with no compensating controls required to fail.
- Refactor portal-exposed methods to eliminate all parameters that control record access, query scope, or field selection.
- Implement server-side logic that determines accessible records based on the running user's context:
@AuraEnabled public static Account getMyAccount() { Id userId = UserInfo.getUserId(); User currentUser = [SELECT ContactId FROM User WHERE Id = :userId]; Contact portalContact = [SELECT AccountId FROM Contact WHERE Id = :currentUser.ContactId]; return [SELECT Id, Name FROM Account WHERE Id = :portalContact.AccountId]; } - For methods that must operate on specific records, validate ownership using
UserRecordAccessbefore returning data:List<UserRecordAccess> access = [SELECT RecordId, HasReadAccess FROM UserRecordAccess WHERE UserId = :UserInfo.getUserId() AND RecordId = :recordId]; if (access.isEmpty() || !access[0].HasReadAccess) { throw new AuraHandledException('Access denied'); } - Establish code review requirements that specifically check for parameter-based access control in portal-exposed methods.
- Identify all Apex classes containing
@AuraEnabledmethods or other methods exposed to customer portal sites. - For each method, examine the parameter list to identify parameters of type
Id,String,List<Id>,List<String>,Set<Id>, orMap<String, Object>that could control record access. - Review the method implementation to determine if parameters influence SOQL query construction (WHERE clauses, record IDs, field selection, relationship traversal).
- Verify that methods derive record access from
UserInfo.getUserId()or related user context rather than accepting frontend-supplied identifiers. - Conduct penetration testing by attempting to pass unauthorized record IDs or manipulated parameters from portal user sessions.
- Flag any method that accepts user-supplied parameters controlling record access as noncompliant.
Respondent attests guest users are NOT properly restricted to login/signup-only access. Guest user breaches are the most public class of Salesforce data leaks.
Guest users represent the highest-risk trust boundary in Salesforce portals—they are unauthenticated, have zero accountability, generate minimal audit trail, and operate with potential adversarial intent. When guest users are granted object permissions or can invoke custom Apex methods, attackers can systematically enumerate organizational data without even creating an account. Historical Salesforce security updates have repeatedly addressed guest user permission defaults because vendors consistently misconfigure this boundary. A single guest-accessible method that queries user records, cases, accounts, or custom objects creates a public API for data exfiltration accessible to anyone on the internet. This constitutes a Critical boundary violation: unauthenticated attackers access organizational data with no authentication required.
- Remove all object-level permissions from guest user profiles except those explicitly required for authentication flows.
- Audit and remove guest user access to any custom Apex methods that query or return organizational data.
- For public data requirements (knowledge articles, case submission), implement service layer pattern:
@AuraEnabled public static List<Knowledge__kav> getPublicArticles() { if (UserInfo.getUserType() == 'Guest') { // Allowlist-based, no parameters accepted return [SELECT Id, Title, Summary FROM Knowledge__kav WHERE PublicationStatus = 'Online' AND IsVisibleInPkb = true LIMIT 10]; } throw new AuraHandledException('Access denied'); } - Implement network-level rate limiting and CAPTCHA for guest-accessible endpoints.
- Review Salesforce security updates and apply guest user permission restrictions from recent releases.
- Identify all guest user profiles used by customer portal sites (typically named "Site Guest User" or similar).
- Review object-level permissions for guest user profiles and verify that all business-related standard and custom objects have Read, Create, Edit, Delete permissions set to disabled.
- Enumerate all custom Apex classes containing
@AuraEnabledmethods and verify that none are accessible to guest users (either by checking profile permissions or testing invocation from guest context). - For any guest-accessible functionality beyond authentication flows, verify implementation of service layer architecture with explicit access controls.
- Test by accessing the portal without authentication and attempting to invoke Apex methods or query objects via built-in Lightning controllers.
- Flag any guest user object permissions or method access as noncompliant.
Respondent attests they do NOT have documented justification for super-admin-equivalent users.
Without documented justification for Super Admin–equivalent users, organizations lose visibility into who possesses unrestricted access to the entire Salesforce environment. These users can read and modify all data, manage user accounts, and alter the security posture of the org without oversight. Undocumented Super Admin access prevents security teams from assessing breach impact, investigating administrative actions, or maintaining accountability for the most sensitive operations. The inability to identify and justify these users also prevents effective access reviews and creates persistent exposure from forgotten or orphaned administrative accounts.
- Remove one or more of the Super Admin–equivalent permissions from any user who does not have a documented business or technical justification.
- For users who legitimately require this level of access, add or update rationale within the system of record.
- Reassess user access to ensure alignment with least privilege, reducing broad permissions where narrower privileges are sufficient.
- Enumerate all users who simultaneously possess the following permissions through any profile, permission set, or permission set group:
View All DataModify All DataManage Users
- Compile a list of all users meeting the criteria for Super Admin–equivalent access.
- Compare the list against the organization’s system of record.
- Verify that each Super Admin–equivalent user has corresponding documentation that includes:
- A clear business or technical justification for requiring this level of access, and
- Any relevant exception or approval records.
- Flag as noncompliant any users with Super Admin–equivalent access lacking documentation or justification.
Respondent attests they retain less than 30 days of `ApiTotalUsage` event logs. Without sufficient retention, anomalous API behavior is invisible after the fact.
Without retained API Total Usage logs, organizations lose visibility into REST, SOAP, and Bulk API activity—including user identity, connected app, client IP, resource accessed, and status codes. This materially degrades the ability to detect anomalous API behavior, investigate security incidents, attribute unauthorized access, and determine the scope of potential breaches. The absence of this visibility creates a significant gap in incident detection and response capabilities.
- If the organization has only 1-day ApiTotalUsage EventLogFile availability in Salesforce, implement an automated daily export that downloads newly available ApiTotalUsage log files and stores them externally for at least 30 days.
- If the organization uses Salesforce-native retention, ensure the configured retention period for Event Log Files is not less than 30 days.
- Restrict access to the retained logs (Salesforce-native or external) to authorized personnel and designated service identities.
- Determine whether the organization relies on Salesforce-native retention (Event Monitoring/Shield/Event Monitoring add-on) or an external log store as the system of record for ApiTotalUsage EventLogFile data.
- If the organization relies on Salesforce-native retention, verify that EventLogFile data is retained for at least 30 days (for example, confirm the org is entitled to and configured for Event Log File retention that is at least 30 days and can retrieve ApiTotalUsage EventLogFile data within the preceding 30-day window).
- If the organization relies on an external log store (including all orgs with only 1-day ApiTotalUsage availability in Salesforce):
- Verify an automated process exists that retrieves EventLogFile entries where EventType='ApiTotalUsage' and downloads the associated log files at least once every 24 hours.
- Inspect job schedules/run history and confirm successful executions covering at least the last 30 days (no missed days).
- From the external log store, retrieve ApiTotalUsage logs for (a) the oldest day in the preceding 30-day window and (b) the most recent day, and confirm both are accessible and attributable to the organization.
- Verify access to the external log store is restricted to authorized roles and service identities responsible for monitoring and investigations.
Respondent attests at least one profile has an unrestricted login IP range (e.g., `0.0.0.0/0`) that defeats the purpose of IP allow-listing.
Overly broad login IP ranges effectively disable network-based access controls, allowing authentication from any location on the internet. However, exploitation requires credentials to be compromised first—this control provides defense-in-depth rather than establishing a primary security boundary. When authentication controls (SBS-AUTH-001) are enforced, IP restrictions serve as an additional layer that limits the blast radius of credential compromise.
- Remove any profile login IP ranges that effectively grant unrestricted global access.
- Replace them with IP ranges that correspond to approved corporate networks, office locations, VPN ingress points, or other authorized infrastructure.
- Validate that updated network restrictions do not block legitimate access paths and that users can authenticate through sanctioned networks.
- Establish an internal governance process to review and approve all future additions of profile login IP ranges.
- Retrieve all profile login IP ranges via Setup → Profiles → Login IP Ranges or by querying the Profile metadata (
loginIpRangesfield) using the Metadata API. - For each profile, enumerate all configured login IP ranges.
- Identify any ranges that:
- Cover the entire IPv4 space, or
- Represent effectively unrestricted access (e.g.,
0.0.0.0–255.255.255.255,1.1.1.1–255.255.255.255, or similar patterns).
- Confirm that all IP ranges align with organizational security policy and defined network boundaries.
- Flag any profile with an impermissible or overly broad range.
- Download API Total Usage logs (EventLogFile - ApiTotalUsage, available in free tier of Event Monitoring) to validate IP restrictions are effective:
- Extract unique
CLIENT_IPvalues from recent API activity. - Compare against documented approved organizational network ranges.
- Identify any new or unexpected IP addresses making API calls.
- Cross-reference unusual IPs with profile assignments to identify potential policy gaps.
- Extract unique
Respondent attests they do NOT maintain an inventory of Long Text Area fields containing regulated data. Without it, controls cannot be applied to the right fields.
Without a current inventory of fields containing regulated data, organizations cannot systematically apply appropriate protection, retention, or access controls to sensitive data locations—and may be unable to fulfill privacy obligations such as GDPR's Right to Erasure or CCPA deletion requests that require knowing all locations where personal data is stored. During audits or breach investigations, the absence of a maintained inventory delays response times and may result in incomplete remediation or missed data locations.
- Generate an inventory using scan results, administrative review, and metadata analysis.
- Document all LTA fields containing regulated data and classify the associated data types.
- Establish a recurring review cycle to update the inventory.
- Integrate the inventory into governance functions such as retention, DLP, access reviews, and breach response planning.
- Obtain the organization's documented inventory of Long Text Area fields containing regulated data.
- Compare the inventory against Salesforce metadata to confirm all relevant fields are included.
- Review scan results or administrative evidence demonstrating how fields were identified.
- Verify that the inventory includes object name, field API name, data classification, and last review date.
- Determine whether the inventory is maintained and current; missing, outdated, or incomplete inventories indicate noncompliance.
Respondent attests they do NOT maintain an inventory + justification list for Named Credentials. Forgotten Named Credentials with valid stored secrets are a hidden third-party access surface.
Without a documented inventory and justification for Named Credentials, undocumented or unjustified configurations may expose the organization to data leakage, unauthorized integrations, or reliance on insecure or untrusted endpoints. However, this control provides governance documentation rather than detection or prevention capability: it supports audit readiness and informed decision-making about authenticated external connections, but other controls are required to detect or prevent actual misuse of approved credentials.
- Add any undocumented Named Credentials to the system of record.
- Document a valid business justification for each Named Credential.
- Remove, disable, or reconfigure any Named Credentials that cannot be justified or that reference untrusted endpoints.
- Establish a recurring reconciliation process to ensure Named Credentials remain fully inventoried and justified.
- Enumerate all Named Credentials using Salesforce Setup, Metadata API, Tooling API, or Connect REST API.
- Retrieve the organization’s system of record for approved external endpoints and integration credentials.
- Compare the Salesforce list to the system of record to confirm all Named Credentials are documented.
- Verify that each documented Named Credential includes:
- The external endpoint URL
- The authentication type (named principal or per-user)
- The business justification for the integration
- Flag any Named Credentials missing from the inventory or lacking justification as noncompliant.
Your roadmap is clear. Implementation is where most security efforts stall.
Our cofounders led product and engineering teams at GrubHub and Rocket, and led all of product and engineering at National Debt Relief — and have built and audited Salesforce environments at every scale, from Series A startups to Fortune 500 scale enterprises.
- Walk through your top remediation priorities together.
- Get a fixed-scope plan to close the highest-impact gaps first.
- Optional: bring us in to ship the fixes and keep them from regressing.
No obligation. We'll review your top three findings with you and tell you whether HelloMavens is the right fit.
Appendix
Methodology, disclaimer, and glossary
Each control was evaluated against the Security Benchmark for Salesforce v0.4.1. Controls scored as pass / fail / inconclusive / not applicable. Category scores are weighted by risk tier (Critical 5, High 3, Moderate 2). Overall score is a weighted average across categories proportional to each category's share of Critical-tier and High-tier controls. Inconclusive and not-applicable controls are excluded from denominators. If any Critical-tier control failed, the overall grade is capped at C regardless of other scores.
Engine version 0.0.0-alpha.3. SBS v0.4.1. Disclaimer version 2026-05-02-placeholder-1.
The HelloMavens Salesforce Security Audit produces a directional security assessment based on questionnaire responses you provide.
This report is not a substitute for a formal security audit, penetration test, or compliance certification.
HelloMavens LLC makes no warranty, express or implied, regarding the completeness, accuracy, or fitness for any particular purpose of this report.
You confirm that you are authorized to submit this information about your organization.
HelloMavens LLC will process your responses solely to generate this report and will not retain raw scan data after report generation. Aggregate, anonymized scoring data may be retained for benchmarking.
Any remediation actions you take based on this report are at your own risk and discretion.
- SBS
- Security Benchmark for Salesforce — an open standard of audit-ready controls maintained at github.com/Salesforce-Security-Benchmark.
- OWASP Top 10
- A standard awareness document for developers and web application security maintained by the Open Web Application Security Project. The 2021 edition is referenced throughout this report.
- HIPAA Security Rule
- U.S. federal regulation governing security standards for protected health information.
- SOC 2
- Service Organization Control 2 — an audit framework focused on the AICPA Trust Services Criteria (security, availability, processing integrity, confidentiality, privacy).
- Inconclusive
- A control that could not be evaluated from the evidence provided (e.g. you answered "I don't know"). Inconclusive controls are excluded from scoring denominators per spec §8.
- Critical-fail cap
- If any Critical-tier control fails, the overall risk grade is capped at C regardless of other scores. Highlights catastrophic risk areas.
- Consultant scan
- An evidence-based audit run by a security consultant against your Salesforce org via the upcoming sbs-scan CLI. Resolves inconclusive controls with high-confidence findings.
What these passing controls protect against, in plain language.
Access controls
SBS-ACS-006 — Documented Justification for `Use Any API Client` Permission
This permission, which bypasses API Access Control entirely, is granted only to justified users, so external apps can't get data access without your vetting and allowlisting first.
SBS-ACS-001 — Enforce a Documented Permission Set Model
Your permission set model is documented and enforced, so privilege sprawl can't accumulate quietly — every authorization construct conforms to the standard, and access reviews actually have something to compare against.
SBS-ACS-002 — Documented Justification for All `API-Enabled` Authorizations
Your API-enabled authorizations are tracked with documented justification, so you can see who has programmatic data access at a glance and prove every permission is intentional during audit reviews.
SBS-ACS-005 — Only Use Custom Profiles for Active Users
Regular users sit on custom profiles, not Salesforce-managed standard ones, so platform updates can't enable new permissions without your approval and least privilege is actually enforceable.
SBS-ACS-007 — Maintain Inventory of Non-Human Identities
You have a current inventory of non-human identities, so automated access can be reviewed, orphaned credentials can be retired, and security incidents involving integrations are actually investigable.
SBS-ACS-008 — Restrict Broad Privileges for Non-Human Identities
Non-human identities aren't carrying broad privileges by default, so a compromised API key or OAuth token can't bypass sharing rules or trigger administrative operations org-wide.
SBS-ACS-011 — Enforce Governance of Access and Authorization Changes
Access changes go through governed approval and audit, so excessive permissions can't slip in unnoticed and incident investigations have a paper trail to follow.
SBS-ACS-009 — Implement Compensating Controls for Privileged Non-Human Identities
Privileged non-human identities have compensating controls layered on top of credentials, so secret leakage isn't a single point of failure for your most sensitive integrations.
SBS-ACS-010 — Enforce Periodic Access Review and Recertification
Access is reviewed and recertified on a cadence, so privilege creep can't quietly accumulate from old roles, temporary projects, and forgotten grants — least privilege stays current over time.
SBS-ACS-012 — Classify Users for Login Hours Restrictions
Privileged accounts are classified for login-hours restrictions, adding a defense-in-depth layer — so even a compromised credential can't be exploited freely during off-hours when detection is thin.
Authentication
SBS-AUTH-001 — Enable Organization-Wide SSO Enforcement Setting
SSO enforcement is on org-wide, so users can't quietly authenticate around centralized identity management — credential-based attacks lose their direct path into your org.
SBS-AUTH-004 — Enforce Strong Multi-Factor Authentication for External Users with Substantial Access to Sensitive Data
MFA is enforced for external users with substantial data access, so a stolen password alone can't sign someone in — phishing and credential-stuffing lose their main path to your sensitive data.
SBS-AUTH-002 — Govern and Document All Users Permitted to Bypass Single Sign-On
SSO bypass exceptions are documented and approved, so off-SSO accounts can't proliferate unnoticed and audit reviews have clean visibility into every authentication exception.
Code security
SBS-CODE-004 — Prevent Sensitive Data in Application Logs
Sensitive data is kept out of application logs, so a low-privilege account with log access can't extract credentials or PII without tripping the access controls on the source objects.
Data protection
SBS-DATA-001 — Implement Mechanisms to Detect Regulated Data in Long Text Area Fields
You can detect regulated data in long-text fields, so PII can't accumulate in unknown locations — GDPR Right-to-Erasure and CCPA deletion requests are actually executable when they arrive.
SBS-DATA-003 — Maintain Tested Backup and Recovery for Salesforce Data and Metadata
Backups are tested, not just configured, so accidental deletion, malicious destruction, or configuration corruption can be recovered from with confidence rather than hope.
SBS-DATA-004 — Require Field History Tracking for Sensitive Fields
Field history tracking is on for sensitive fields, so unauthorized or accidental changes are detectable, investigatable, and accountable rather than silent.
Deployments
SBS-DEP-005 — Implement Secret Scanning for Salesforce Source Repositories
Secret scanning runs on your repos, so hardcoded credentials get caught before they're committed — and the supply-chain path through repository access stays closed to outsiders.
SBS-DEP-001 — Require a Designated Deployment Identity for Metadata Changes
Metadata changes go through a designated deployment identity, so production changes are attributable and unauthorized direct edits stand out instead of blending into routine admin activity.
SBS-DEP-002 — Establish and Maintain a List of High-Risk Metadata Types Prohibited from Direct Production Editing
You've defined which metadata types are high-risk, so deployment governance has clear boundaries — Apex, auth settings, and outbound connectivity can't be edited directly in production.
SBS-DEP-003 — Monitor and Alert on Unauthorized Modifications to High-Risk Metadata
Unauthorized changes to high-risk metadata trigger alerts, so malicious or accidental drift gets surfaced quickly instead of persisting for weeks before being noticed.
SBS-DEP-004 — Establish Source-Driven Development Process
Production configuration ties back to a source-controlled approval trail, so 'what changed, when, by whom' is answerable — incident investigation has a real starting point instead of guesswork.
SBS-DEP-006 — Configure Salesforce CLI Connected App with Token Expiration Policies
Your CLI Connected App has token expiration policies, so a stolen laptop's token files don't grant indefinite access to production — the credential exposure window is bounded.
Integrations
SBS-INT-001 — Enforce Governance of Browser Extensions Accessing Salesforce
Browser extensions accessing Salesforce go through governance, so cloned or malicious extensions can't quietly harvest session tokens or exfiltrate data from authenticated users.
SBS-INT-002 — Inventory and Justification of Remote Site Settings
Your Remote Site Settings inventory is documented with justification, so unvetted endpoints can't be authorized for Apex callouts and you know exactly which external services your code talks to.
Connected apps & OAuth
SBS-OAUTH-001 — Require Formal Installation of Connected Apps
Connected Apps go through formal installation, so security configuration — refresh token lifetimes, session policies, IP restrictions — is enforced by you, not inherited from the external developer.
SBS-OAUTH-002 — Require Profile or Permission Set Access Control for Connected Apps
Connected Apps require explicit profile or permission set access, so a Connected App can't quietly authenticate any user — least-privilege actually applies to OAuth sessions.
SBS-OAUTH-003 — Add Criticality Classification of OAuth-Enabled Connected Apps
OAuth-enabled Connected Apps are classified by criticality, so risk assessment is anchored — you know which integrations touch sensitive data and where to focus governance and monitoring.
SBS-OAUTH-004 — Due Diligence Documentation for High-Risk Connected App Vendors
High-risk Connected App vendors have documented due diligence on file, so onboarding decisions are informed and contractual obligations match the access being granted.
Security configuration
SBS-SECCONF-001 — Establish a Salesforce Health Check Baseline
You have a Health Check baseline, so configuration drift is actually detectable — you can tell when settings diverge from intentional decisions versus accumulated neglect.
SBS-SECCONF-002 — Review and Remediate Salesforce Health Check Deviations
Health Check deviations get reviewed and remediated, so configuration drift doesn't quietly weaken your security posture between audits — your baseline stays meaningful over time.
For these controls we don't have enough evidence to call a pass or a fail. Each one has a path to a definitive answer below.
SBS-CODE-001 — Mandatory Peer Review for Salesforce Code Changes
You answered "I don't know" to: "Does every Apex or Lightning code change get peer-reviewed and approved before it goes to production?". A consultant scan would resolve this with evidence-based scoring.
SBS-CODE-002 — Pre-Merge Static Code Analysis for Apex and LWC
You answered "I don't know" to: "Is there an automated security scanner (e.g., Salesforce Code Analyzer, PMD) that checks every code change BEFORE it gets merged?". A consultant scan would resolve this with evidence-based scoring.
SBS-CODE-003 — Implement Persistent Apex Application Logging
You answered "I don't know" to: "Do you have an Apex logging framework that writes events to a permanent place (not just the temporary "debug log")?". A consultant scan would resolve this with evidence-based scoring.