
Tekunda Team

Tekunda Team

Een Salesforce security review checklist heeft alleen waarde als hij een volgorde heeft. De meeste inzendingen sneuvelen op een korte, voorspelbare lijst, en toegangscontrole staat bovenaan. Werk in deze volgorde: dwing toegang af in user mode, triageer de drie scannerrapporten, en stel dan het inzendmateriaal en een testomgeving samen die de reviewer echt kan gebruiken. Salesforce houdt 4 tot 5 weken aan voor een review, dus een afwijzing kost je een release-cyclus en niet een middag.
Tekunda heeft managed packages door de review geloodst in de zorg, logistiek en maakindustrie. Wat hieronder staat is de volgorde waarin wij werken, geen beschrijving van het proces. Voor het volledige inzendtraject, zie How ISVs Pass the Salesforce AppExchange Security Review.
Drie dingen zijn dit jaar verschoven, en oudere checklists kennen ze alle drie niet.
with sharing, en is
WITH SECURITY_ENFORCED verwijderd, dus een klasse die het op v67.0
nog gebruikt compileert niet. Triggers vormen de uitzondering: die draaien altijd in
system mode.
Salesforce is er duidelijk over dat alle onderdelen en diensten van je oplossing, waar ze ook draaien, meetellen. Dat zijn het package, elke webservice die het aanroept, elke site waar Salesforce-data wordt opgeslagen en elke mobiele of desktopclient. Leg je pakkettype vast voordat je code gaat repareren, want het bepaalt wat je uploadt. Het artikel Salesforce Packaging Models for ISVs: 1GP vs 2GP vs Unmanaged behandelt die keuze.
Werk van boven naar beneden. De bovenste punten zijn tegelijk de meest voorkomende bevindingen en het duurst om achteraf in te bouwen, en juist daarom schuift een inzending een cyclus op als je ze tot het laatst bewaart.
WITH USER_MODE bij SOQL en AccessLevel.USER_MODE bij
Database-aanroepen, en vervang resterende
WITH SECURITY_ENFORCED voordat je de API-versie ophoogt.
@AuraEnabled-methode wordt aangeroepen kan er ongemerkt zonder draaien.
Zet with sharing, without sharing of
inherited sharing expliciet op elke klasse, ook op inner classes en
utility classes, zodat de reviewer nooit hoeft uit te zoeken welke default geldt.
escape="false",
lwc:dom="manual" of innerHTML op de pagina komt, moet
daarvoor al gesaneerd zijn, niet erna.
System.debug gaat. Named Credentials en protected custom metadata
zijn wat reviewers in plaats daarvan verwachten.
Secure en HttpOnly zijn. Reviewers kijken naar de site die
je aanlevert, niet naar de site die je beschrijft.
Je moet een Salesforce Code Analyzer-rapport, een rapport van de source scanner in het Partner Security Portal en een DAST-rapport meesturen. De lat ligt niet op nul bevindingen, en hij ligt per scanner anders:
Genereer het Code Analyzer v5-rapport met de AppExchange-regelselectie, zodat het aansluit op wat de reviewer verwacht. Bij een complexe codebase kan de run uren duren:
sf code-analyzer run --rule-selector AppExchange --rule-selector
Recommended:Security --output-file CodeAnalyzerReport.html
Welke scans verplicht zijn is meer dan eens veranderd, dus controleer de huidige scannervereisten voordat je iets genereert.
In onze inzendingen komen vier categorieen vaak genoeg terug als echte false positive om er rekening mee te houden: toegangscontrolebevindingen op code die user mode al afdwingt, sharing-bevindingen op klassen die alleen worden binnengekomen via een context waarin sharing al is toegepast, retired-library bevindingen die matchen op een versienummer in een meegeleverde static resource, en reflected cross-site scripting op parameters die de DOM nooit bereiken.
Gelijk hebben is alleen niet genoeg. Het document is wat je erdoor helpt. Salesforce vraagt om een document dat uitlegt waarom elk gemarkeerd item geen beveiligingsrisico vormt, en zegt erbij dat je specifiek moet zijn over hoe je je beschermt tegen de aangegeven kwetsbaarheid. Geef elke bevinding een eigen regel: scanner en regel-id, bestand en regelnummer, een zin over het datapad, de precieze maatregel die het afdekt, en waar die maatregel in het package staat. Afdoen in een halve zin komt terug als een vraag, en vragen kosten weken. Voor het onderbouwingsformat en de fouten die het laten afkeuren, zie False positives documenteren voor de Salesforce security review.
Daarna start je de review vanuit de Publishing Partner Console: open het tabblad Technologies, kies Start Review bij je oplossing en vul de secties contactpersonen, technische details, documentatie en testomgeving in voordat je betaalt.
Salesforce geeft aan dat een oplossing doorgaans 4 tot 5 weken door de review doet, en dat voor elke betaalde oplossing een fee van $999 geldt voor de eerste inzending en voor elke volgende poging. Vindt het team kwetsbaarheden, dan los je ze op en dien je opnieuw in, wat als nieuwe poging telt. Salesforce merkt ook op dat de meeste inzendingen bij de tweede poging slagen. Beide feiten wijzen dezelfde kant op: doe het werk aan toegangscontrole vooraan, want de goedkoopste inzending is de inzending die je maar een keer hoeft te doen.
Laat je de review liever over aan mensen die er al doorheen zijn gekomen? Tekunda verzorgt als Salesforce-partner voorbereiding op de AppExchange security review. Twijfel je nog of je externe hulp inschakelt, lees dan Wat een Salesforce PDO doet, en wanneer je er een inhuurt.
Moeten gratis apps ook door de security review?
Ja. Een oplossing moet de review doorstaan voordat hij op de marketplace wordt gepubliceerd. De fee van $999 die Salesforce documenteert geldt voor betaalde oplossingen.
Betekent API-versie 67.0 dat ik CRUD-, FLS- en sharingwerk kan overslaan?
Nee. De nieuwe defaults gelden alleen voor klassen die op v67.0 of hoger zijn gecompileerd, en triggers draaien nog steeds in system mode. Declareer toegangsmodi en sharing expliciet, zodat de reviewer ze regel voor regel kan controleren.
Is Salesforce Code Analyzer op zichzelf genoeg?
Nee. Je hebt ook het rapport van de source scanner in het Partner Security Portal nodig, en elk extern endpoint dat je app aanroept heeft een eigen DAST-rapport nodig.
Verandert een Agentforce- of agent-app de checklist?
Dezelfde review geldt, maar elke externe dienst die je agent kan aanroepen moet beschreven en gescand zijn. Zie AppExchange security review voor agentic apps: wat er anders is.
Is de security review een eenmalige gebeurtenis?
Nee. Gepubliceerde oplossingen worden doorgaans een keer per jaar opnieuw beoordeeld, en Salesforce kan op elk moment om een review vragen. Nieuwe packageversies gebruiken een attestation in de Partner Console in plaats van een nieuwe review, dus houd de checklist aan als vaste releasegate.