Chaque arête de la carte d’accès porte deux faits indépendants : si l’accès est permis et s’il a été observé. La différence entre ces deux couches est le différenciateur — c’est ce qui transforme un graphe statique en découverte.
Deux couches sur une arête
La carte ne maintient pas un « graphe de politique » et un « graphe de télémétrie » séparés. Chaque arête est une relation unique (origine vers ressource, typée lecture ou lecture-écriture) qui porte les deux indicateurs :
- Permis — une autorisation ou une politique permet cet accès. La source du signal est la politique déclarée elle-même.
- Observé — l’accès a effectivement été vu en cours, dérivé de la télémétrie et de l’audit natif (OpenTelemetry des agents coopératifs, PostgreSQL pgAudit, journaux d’audit cloud, un backstop eBPF au niveau du noyau).
Une nuance qui compte pour la transparence : non permis signifie « pas connu comme permis », pas « interdit ». La carte enregistre ce qu’elle peut prouver à partir des autorisations déclarées ; l’absence d’une autorisation est une lacune à investiguer, pas un verdict d’application.
La différence : là où réside la valeur
La dérive de moindre privilège est simplement l’ensemble des arêtes où les deux indicateurs divergent. Elle se divise en deux découvertes opérationnellement distinctes :
- Accès inattendu — observé mais non permis. Un agent a touché une ressource qu’aucune autorisation ne couvre. C’est la moitié pertinente pour la sécurité, remontée comme la découverte principale.
- Autorisations inutilisées — permises mais jamais observées. Une autorisation que personne n’a jamais exercée. C’est votre liste concrète de nettoyage du moindre privilège, pas un vague rappel « révisez votre IAM ».
Les arêtes où les deux indicateurs concordent — permis et utilisé, ou ni l’un ni l’autre — sont l’état stable attendu et sans surprise. La différence est la tranche réduite et actionnable entre les deux.
Transparence dans la différence
Une différence naïve produit de fausses découvertes, la réconciliation est donc délibérément conservatrice.
Réconciliation en attente
L’audit attribue un accès à un identifiant ou un rôle ; une autorisation est écrite contre une identité ; un signal coopératif nomme un agent ou une session. Quand la carte d’accès ne peut pas encore fermement lier l’agent agissant à l’identité pour laquelle son autorisation a été écrite, elle ne peut pas prouver que l’accès est permis — mais elle ne doit pas non plus le titrer comme une violation. De telles arêtes sont marquées reconciliation_pending : une incertitude honnête, pas une découverte fabriquée. Elles se résolvent proprement une fois que l’identité par agent lie l’identifiant à l’agent.
Autorisations sur des ressources que personne ne surveille
Certaines autorisations vivent sur des types de ressources qui n’ont aucun collecteur côté observé — rien ne surveille qui a réellement utilisé un annuaire LDAP ou une affectation d’application IdP. Pour celles-ci, « jamais observé » est l’état stable attendu, pas la preuve d’un sur-provisionnement. Elles sont exclues de la liste principale des autorisations inutilisées plutôt que de la gonfler avec du bruit.
La couverture et l’attribution accompagnent toujours l’arête
La différence hérite de la fidélité graduée des arêtes sous-jacentes. Sur un store opaque (Redis, SQLite, D1), il n’y a aucun signal passif lecture/écriture, donc l’absence d’une arête observée n’est pas la preuve que l’accès n’a pas eu lieu — c’est du silence. De même, un compte de service partagé réduit l’attribution à approximate. La différence ne présente jamais une découverte à faible confiance comme si elle était ferme.
Quand la différence est calculée sur une fenêtre partielle (un très grand environnement dépassant la limite de page), le résultat est explicitement marqué comme partiel plutôt que présenté comme faisant autorité.
Détective, pas dans le chemin
Produire cette différence est une activité hors bande, détective. Le plan de contrôle fonctionne dans votre propre infrastructure (et peut être air-gappé) ; il observe à travers les logs, OpenTelemetry et l’audit natif, et il ne se place pas dans le chemin de requête entre un agent et ses ressources. Un collecteur qui échoue ne casse jamais le trafic de production.
Deux conséquences en découlent. Premièrement, la différence est un rapport, pas un contrôle : elle remonte ce qui s’est déjà passé. Là où le produit agit sur une découverte, il le fait fermé par défaut et à la demande — jamais en tant qu’exécuteur généraliste. Deuxièmement, lire la différence est elle-même une action privilégiée, scopée au tenant et entièrement auditée : l’acte d’inspecter qui-peut-atteindre-quoi est pertinent pour la reconnaissance, et la lecture est enregistrée dans le registre d’audit append-only avant que toute arête ne soit retournée.
C’est aussi pourquoi la différence est sûre à exécuter sur des environnements sensibles : la carte stocke la relation — origine, ressource, lecture/écriture, source, confiance, horodatages — jamais les charges utiles, corps SQL, secrets ou données personnelles qui ont traversé l’arête. Ce qui n’est pas stocké ne peut pas fuiter.
Voir aussi
- La carte d’accès lecture/écriture — le graphe sur lequel cette différence s’exécute.
- Fidélité — comment les niveaux de couverture et d’attribution sont dérivés.
- Gouverner et approuver — agir sur une découverte.
- Visite produit de la carte d’accès — la superposition permis-vs-observé sur une capture réelle.