top of page
TrueLines_grandient_1_4x_edited.png
  • fabricefontenoy

Comment sécuriser les accès API à Salesforce ?


Vous avez réussi à connecter votre système avec Salesforce ? Vous avez créé votre App Connectée dans Salesforce, récupéré ses credentials et maintenant, vous arrivez à récupérer des infos de Salesforce et/ou à envoyer de la donnée dans Salesforce ?


Bravo ! C'est déjà une bonne étape de faite... Mais est-ce que vous avez pensé à la sécurité de votre org ?



Et oui ! Il arrive qu'on fasse un POC en utilisant un compte admin pour avant tout démontrer la faisabilité mais ensuite, on ne revient pas sur les aspects sécurité. Aïe 😕


Le problème c'est que si quelqu'un récupère votre id et secret client, il peut faire ce qu'il veut dans votre org, comme récupérer toutes vos données, les modifier ou les supprimer.


Alors, comment faire ???


La première chose à faire est de créer un utilisateur dédié à votre appel API. Cet utilisateur doit être rattaché à une licence Salesforce Integration (pour ne pas consommer une licence Salesforce standard) et au profil Salesforce API Only System Integration:



Si vous utilisez un autre profil, il faut s'assurer qu'il ait les permissions système API Enabled et API Only User :



Une fois l'utilisateur créé, vous devez le rattacher à l'application connectée pour que ce soit cet utilisateur qui soit appelé lors de l'appel API :



À ce stade, vous allez être capable de récupérer un token correspondant à cet utilisateur via l'appel à /services/oauth2/token :


Requête de login avec Postman

Cependant, si vous essayez de récupérer les contacts par exemple, vous allez obtenir une erreur :


Récupération des contacts en erreur

Et ça c'est plutôt une bonne nouvelle ! Ça veut dire que vous avez le contrôle sur ce dont à accès l'utilisateur que l'on vient de définir.





Maintenant, il ne nous reste plus qu'à autoriser l'utilisateur à accéder uniquement aux objets auxquels vous souhaitez lui donner accès.


On va donc créer une nouvelle Permission Set rien que pour lui :



Attention, c'est là qu'il y a une petite subtilité ! Il faut sélectionner une licence compatible avec la licence de l'utilisateur (Salesforce Integration) mais si vous sélectionner Salesforce Integration dans cet écran, vous n'aurez pas la possibilité de contrôler les accès sur tous les objets.

Notamment, si vous sélectionnez Salesforce Integration vous ne pourrez pas définir un accès sur l'objet Contact.


Il faut donc bien sélectionner la licence Salesforce API Integration !


Vous allez pouvoir définir les accès aux objets via les Object Settings :



En autorisant les accès uniquement en lecture sur l'objet Contact par exemple :




Il ne vous reste plus qu'à assigner ce permission set à votre utilisateur API...



Et le tour est joué ! Votre utilisateur API à accès uniquement aux contacts et uniquement en lecture seul :




C'était pas si compliqué ?!





Et si vous avez un doute sur le vol de vos credentials, n'hésitez pas à les regéner (via la vue des Customer Details de votre App Connectée) pour rendre les anciens obsolètes et éviter toute intrusion.



----

Vous vous demandez si vous pouvez vos logiciels d'entreprise en eux ? Ou vous avez besoin d'aide pour le faire ?


29 vues
bottom of page