Comment corriger INSUFFICIENT_ACCESS dans les déploiements Salesforce

L'utilisateur ou l'intégration qui effectue l'appel API ne dispose pas des permissions au niveau de l'objet ou du champ requises par l'opération.

Se produit pendant : les appels API à l'exécution, aussi bien les opérations de données REST/SOAP que les requêtes d'application connectée

Ce que cela signifie

INSUFFICIENT_ACCESS signifie que l'utilisateur appelant, souvent un compte de service d'intégration ou de CI plutôt qu'une personne, ne dispose pas de la permission sur l'objet ou de la sécurité au niveau du champ nécessaire pour compléter la requête. C'est un échec de permissions, pas un problème de données : l'enregistrement et l'opération sont tous deux valides, mais l'identifiant qui l'exécute n'y est pas autorisé.

Comme elle couvre à la fois la couche application connectée/OAuth et le CRUD au niveau objet, c'est la plus large des erreurs liées à l'accès ; INSUFFICIENT_ACCESS_OR_READONLY et INSUFFICIENT_ACCESS_ON_CROSS_REFERENCE_ENTITY sont deux variantes plus étroites et spécifiques au DML de la même idée sous-jacente.

Diagnostic

Causes courantes

Le profil de l'utilisateur d'intégration manque d'accès à l'objet
Le compte de service exécutant le pipeline n'a jamais reçu l'accès à l'objet dans lequel l'étape de données du déploiement écrit.
La sécurité au niveau du champ n'a pas été mise à jour pour un nouveau champ
Un permission set utilisé par le compte de service CI n'a pas été mis à jour lorsqu'un nouveau champ requis a été ajouté à l'objet.
La portée de l'application connectée ou une restriction IP a bloqué l'appel
La portée OAuth de l'application connectée ne couvre pas l'opération, ou une restriction de plage IP a rejeté le contexte d'appel.

La solution

  1. Auditez les permission sets de l'utilisateur d'intégration
    Vérifiez que le compte exécutant les déploiements dispose d'un accès explicite au niveau objet et champ pour tout ce que le pipeline touche.
  2. Accordez la FLS sur les nouveaux champs aux permission sets de CI
    Ajoutez la sécurité au niveau du champ pour les champs nouvellement créés au permission set utilisé par le compte de service du pipeline.
  3. Vérifiez les portées OAuth et les politiques IP de l'application connectée
    Vérifiez que les portées et les paramètres d'assouplissement IP de l'application connectée couvrent l'opération tentée.
En pratique

Comment Serpent évite cela

Serpent exécute les déploiements via une connexion à portée limitée vers chaque org, de sorte qu'un manque de permission apparaît comme un échec clair sur la tâche, plutôt que comme un déploiement partiel silencieux découvert plus tard. Consultez la bibliothèque des erreurs de déploiement Salesforce.

Traçabilité des approbations et des audits dans Serpent

Prévention

Limitez les permissions de l'application connectée à ce dont l'intégration a strictement besoin
Accordez les portées OAuth et l'accès objet minimaux que l'intégration utilise réellement, puis élargissez délibérément à mesure que de nouveaux champs ou objets sont ajoutés, plutôt que de partir large.
Ajoutez les nouveaux champs au permission set d'intégration dans le même déploiement
Mettez à jour la sécurité au niveau du champ du compte de service CI dans le cadre du même changement qui ajoute un champ requis, pas dans une tâche ultérieure.
Maintenez les restrictions IP de l'application connectée à jour avec votre fournisseur CI
Suivez les plages IP publiées par votre fournisseur CI/CD et mettez à jour les IP de confiance de l'application connectée avant qu'elles ne changent, pas après l'échec d'une exécution.
Questions fréquentes

INSUFFICIENT_ACCESS, expliqué

INSUFFICIENT_ACCESS est-il identique à une erreur de permission de déploiement de métadonnées ?
C'est lié mais distinct. Cette erreur concerne l'accès objet ou champ à l'exécution de l'utilisateur appelant sur une opération d'enregistrement, pas qui peut déployer des changements de métadonnées vers l'org.
Une restriction IP peut-elle causer cette erreur même avec des permissions d'objet correctes ?
Oui. Si l'application connectée ou le profil a des plages IP de connexion configurées et que le contexte d'appel se situe en dehors, Salesforce rejette la requête avant même que les permissions d'objet ne soient évaluées.
La portée OAuth compte-t-elle si le profil de l'utilisateur a déjà un accès complet ?
Oui. Les portées OAuth et les permissions de profil sont appliquées indépendamment ; une application connectée sans la portée api ou full peut bloquer un appel même pour un utilisateur System Administrator.

Démarrez gratuitement. Pas de carte bancaire, pas d'installation, pas d'engagement.

Configuration en moins de 15 minutes. Aucun recrutement DevOps nécessaire.

Curieux de livrer plus vite avant de vous lancer ? Parlons-en

Sans engagement.