Introduction
A l’heure de l’automatisation, de nombreux scripts utilisent l’API de SharePoint afin de déposer des fichiers régulièrement. L’utilisation de la permission expliquée ci-dessous a pour but de gérer finement la permission de l’app registration, au site près.
Prérequis
- Avoir PowerShell 7 sur son poste.
- Etre « Application Administrator » sur Entra ID.
Créer les app registrations
Application maître
Via le module utilisé PNP.Powershell, l’assignation des permissions est disponible uniquement depuis une connexion via app registration. Voici comment la créer :
Dans un terminal PowerShell, exécuter ce script afin de créer un certificat pour se connecter au tenant via l’app registration (n’oubliez pas de modifier les variables !)
$certname = "Astraworkplace"
$mypwd = ConvertTo-SecureString -String "Password" -Force -AsPlainText
$cert = New-SelfSignedCertificate -Subject "CN=$certname" -CertStoreLocation "Cert:\CurrentUser\My" -KeyExportPolicy Exportable -KeySpec Signature -KeyLength 2048 -KeyAlgorithm RSA -HashAlgorithm SHA256
Export-Certificate -Cert $cert -FilePath "C:\Users\Astraworkplace\Desktop\$certname.cer"
Ensuite, se connecter sur Entra , dans le menu de gauche, cliquer sur App Registrations. Cliquer ensuite sur New Registration.
Remplir le nom de l’application puis appuyer sur create.

Ensuite, se rendre dans l’onglet Certificates & Secrets puis importer le certificat au format .cer en cliquant sur Certificates, puis Upload certificate

Enregistrer l’empreinte du certificat ( thumbprint ), celle-ci vous sera utile pour la connexion à l’API Graph.
Il faut maintenant ajouter des droits à cette application, pour ce faire, cliquer sur API permissions, puis Add a permission.
Cliquer sur SharePoint, Application permissions, puis sélectionner le droit Sites.FullControl.All et cliquer sur Add Permissions.

Approuver ensuite cette permission en cliquant sur le bouton Grant admin consent.
L’application est créée et celle-ci permettra de gérer la 2ème ( celle utilisée en production).
Application cible
Créer un nouveau certificat via le script ci-dessus, attention à utiliser un nom différent.
Créer ensuite une autre App registration de la même manière que précédemment.
Ajouter la permission SharePoint Sites.Selected puis appuyer sur Grant admin consent.

Cette application cible sera celle utilisée par votre script pour contacter l’API SharePoint.
Attention à la date d’expiration du certificat, celui-ci sera à renouveler.
Gestion des droits de l’application cible
Bien qu’appliqué, le droit Sites.Selected est vide et donc inutile pour le moment. Il faut donc assigner des droits.
Il existe 3 types de droits :
- Read : Lecture seule des fichiers du site SharePoint.
- Write : Lecture + écriture des fichiers du site SharePoint.
- FullControl : Accès complet à toutes la gestion du site.
Assignement des droits via le module pnp.powershell
Le module pnp.powershell est un module développé par la communauté, il sert à contacter l’API SharePoint, la documentation de ce projet se trouve ici.
Télécharger le script Add-SharepointRightOnApp.ps1 sur le Repo GitHub Astraworkplace
Ouvrir le script dans un éditeur de code, puis remplacer les variables par vos valeurs. Voici un exemple :

Ces valeurs sont fictives et inutilisables.
Exécuter ensuite le code avec PowerShell 7 .
Vérification des droits appliqués
Il est possible de vérifier les droits appliqués sur un site avec cette commande :
Get-PnPAzureADAppSitePermission -Site $SharepointUrl
Suppression de l’application maître
Une fois l’assignement de permission réalisé, il est important de supprimer l’application Maître car celle-ci possède des droits élevés.
Pour cela, dans Entra sélectionner App registration, rechercher l’application Maître, puis la supprimer avec le bouton Delete

Exemple concret d’utilisation
- Un script automatisé dépose des fichiers sur un SharePoint régulièrement.
- Un script ou une application doit lire des fichiers disponibles sur un Sharepoint.
Mathéo Bourlet
