Permissions Graph
Ce que RingSync demande
RingSync utilise des permissions application (et non déléguées) : le backend appelle Microsoft Graph côté serveur avec client_credentials, au nom de l'app et non d'un utilisateur connecté. Les trois nécessitent un consentement administrateur.
| Permission | Type | Utilisée pour |
|---|---|---|
User.Read.All | Application | Lire l'annuaire (/v1.0/users, /users/delta) pour mapper les champs de l'annuaire vers les contacts natifs. |
GroupMember.Read.All | Application | Résoudre l'appartenance transitive aux groupes Entra sélectionnés pour la sync (/groups/{id}/transitiveMembers). |
Application.Read.All | Application | Lire appRoleAssignedTo pour savoir quels utilisateurs sont autorisés à utiliser RingSync, et lire les métadonnées d'app pour valider l'audience de connexion. |
Ce sont des permissions application à l'échelle du tenant. Elles permettent à RingSync de lire l'annuaire sans utilisateur interactif. Le login mobile utilise une app d'identité distincte avec uniquement openid profile email et aucun accès Graph.
Pourquoi chaque permission
User.Read.All
Le cœur du produit : RingSync lit les objets utilisateur pour construire les contacts (prénom, nom, email, téléphones, titre, département, entreprise, photo). Sans elle, aucune donnée d'annuaire ne peut être lue.
GroupMember.Read.All
Quand la sync est restreinte à des groupes Entra spécifiques (une fonctionnalité Pro et supérieurs), RingSync résout les membres des groupes — y compris les groupes imbriqués — pour savoir quels utilisateurs synchroniser. Elle sert aussi à développer les groupes utilisés pour l'assignation à l'app.
Application.Read.All
RingSync provisionne les accès en récupérant appRoleAssignedTo sur son propre service principal : c'est la liste de référence des personnes autorisées à utiliser l'app. La même permission permet à RingSync de confirmer que l'audience de connexion de l'app est multi-tenant lors de l'onboarding.
Ce que RingSync ne demande pas
RingSync demande des scopes d'annuaire en lecture seule. Il ne demande aucune permission d'écriture, ni mail, calendrier, fichiers, ni aucun scope délégué d'usurpation d'utilisateur pour l'accès Graph. La sync est strictement unidirectionnelle et en lecture seule sur votre annuaire.
Auditer les permissions
Vous pouvez vérifier à tout moment ce qui a été consenti :
- Portail Azure → Enterprise applications → RingSync → Permissions.
- Examinez la liste des permissions application accordées — elle doit correspondre aux trois ci-dessus.
- Pour le mode Custom, vérifiez aussi App registrations → votre app → API permissions.
Réduire le périmètre
Les trois permissions sont le minimum dont RingSync a besoin pour fonctionner tel que conçu. Le filtrage par groupe repose sur GroupMember.Read.All ; le provisioning repose sur Application.Read.All. Retirer l'une d'elles casse la fonctionnalité correspondante. Il n'existe pas de combinaison plus réduite qui préserve l'ensemble des fonctionnalités.
Révoquer l'accès
Pour déconnecter RingSync de votre tenant :
- Portail Azure → Enterprise applications → RingSync → Properties → Delete, ou révoquez le consentement sous Permissions.
- En mode Custom, supprimez aussi l'enregistrement d'app et son secret client sous App registrations.
- Dans le back office RingSync, retirez le tenant afin que RingSync cesse de tenter des appels Graph.
Une fois le consentement révoqué, RingSync ne peut plus lire l'annuaire et les syncs échouent. Les contacts déjà présents sur les appareils y restent jusqu'au déclenchement d'un wipe ou à la suppression de l'app.