Zo los je INSUFFICIENT_ACCESS op bij Salesforce-deployments

De gebruiker of integratie die de API-aanroep doet, heeft niet de object- of veldniveaumachtigingen die de bewerking vereist.

Treedt op tijdens: runtime API-aanroepen, zowel REST/SOAP-databewerkingen als connected-app-verzoeken

Wat het betekent

INSUFFICIENT_ACCESS betekent dat de aanroepende gebruiker, vaak een integratie of CI-serviceaccount in plaats van een persoon, niet de objectmachtiging of veldniveaubeveiliging heeft die nodig is om het verzoek te voltooien. Het is een machtigingsfout, geen dataprobleem: het record en de bewerking zijn beide geldig, maar de referentie die de bewerking uitvoert, is er niet voor geautoriseerd.

Omdat het zowel de connected app- en OAuth-laag als objectgerichte CRUD dekt, is dit de breedste van de toegangsgerelateerde foutcodes; INSUFFICIENT_ACCESS_OR_READONLY en INSUFFICIENT_ACCESS_ON_CROSS_REFERENCE_ENTITY zijn beide smallere, DML-specifieke varianten van hetzelfde onderliggende idee.

Diagnose

Veelvoorkomende oorzaken

Profiel van de integratiegebruiker mist objecttoegang
Het serviceaccount dat de pipeline uitvoert, heeft nooit toegang gekregen tot het object waar de datastap van de deployment naar schrijft.
Veldniveaubeveiliging is niet bijgewerkt voor een nieuw veld
Een permission set die door het CI-serviceaccount wordt gebruikt, is niet bijgewerkt toen een nieuw verplicht veld aan het object werd toegevoegd.
Scope van connected app of IP-beperking blokkeerde de aanroep
De OAuth-scope op de connected app dekt de bewerking niet, of een IP-bereikbeperking heeft de aanroepende context afgewezen.

De oplossing

  1. Controleer de permission sets van de integratiegebruiker
    Bevestig dat het account dat deployments uitvoert expliciete object- en veldniveautoegang heeft tot alles wat de pipeline aanraakt.
  2. Verleen FLS voor nieuwe velden aan CI-permission sets
    Voeg veldniveaubeveiliging voor nieuw aangemaakte velden toe aan de permission set die het serviceaccount van de pipeline gebruikt.
  3. Controleer OAuth-scopes en IP-beleid van de connected app
    Controleer of de scopes en IP-versoepelingsinstellingen van de connected app de gepoogde bewerking dekken.
In de praktijk

Hoe Serpent dit voorkomt

Serpent voert deployments uit via een scoped verbinding met elke organisatie, zodat een machtigingsprobleem als een duidelijke fout op de taak verschijnt, in plaats van als een stille, gedeeltelijke deploy die pas later wordt ontdekt. Zie de bibliotheek met Salesforce-deploymentfouten.

Goedkeurings- en audittraceerbaarheid in Serpent

Preventie

Beperk connected app-machtigingen tot precies wat de integratie nodig heeft
Verleen de minimale OAuth-scopes en objecttoegang die de integratie daadwerkelijk gebruikt, en breid dit bewust uit naarmate nieuwe velden of objecten worden toegevoegd, in plaats van breed te beginnen.
Voeg nieuwe velden toe aan de integratie-permission set in dezelfde deployment
Werk de veldniveaubeveiliging van het CI-serviceaccount bij als onderdeel van dezelfde wijziging die een verplicht veld toevoegt, niet als vervolgtaak.
Houd IP-beperkingen van de connected app actueel met je CI-provider
Houd de gepubliceerde IP-bereiken van je CI/CD-provider bij en werk de vertrouwde IP's van de connected app bij voordat ze wijzigen, niet nadat een run is mislukt.
Veelgestelde vragen

INSUFFICIENT_ACCESS, uitgelegd

Is INSUFFICIENT_ACCESS hetzelfde als een metadata-deploymachtigingsfout?
Het is verwant maar niet hetzelfde. Deze fout gaat over de runtime object- of veldtoegang van de aanroepende gebruiker bij een recordbewerking, niet over wie metadatawijzigingen naar de organisatie mag deployen.
Kan een IP-beperking deze fout veroorzaken, zelfs met correcte objectmachtigingen?
Ja. Als de connected app of het profiel inlog-IP-bereiken heeft geconfigureerd en de aanroepende context daarbuiten valt, wijst Salesforce het verzoek af nog voordat objectmachtigingen worden geëvalueerd.
Doet OAuth-scope ertoe als het profiel van de gebruiker al volledige toegang heeft?
Ja. OAuth-scopes en profielmachtigingen worden onafhankelijk gehandhaafd; een connected app zonder de api- of full-scope kan een aanroep blokkeren, zelfs voor een System Administrator-gebruiker.

Start gratis. Geen creditcard, geen installatie, geen verplichting.

Ingericht in minder dan 15 minuten. Geen DevOps-engineer nodig.

Benieuwd naar sneller releasen voordat je instapt? Laten we praten

Vrijblijvend.