clement13.net
Photo d’origine : Vue à travers un trou de serrure : on n'aperçoit que ce que l'ouverture laisse voir, ici un dôme au loin.
Description
Vue à travers un trou de serrure : on n'aperçoit que ce que l'ouverture laisse voir, ici un dôme au loin.
Source
Galen Crout · page d’origine
Licence
CC0 Domaine public
Photo d’origine, non retouchée. L’arrière-plan en est une version stylisée par le site.

Sécurité RLS et accès

Ce thème mesure la maîtrise de qui voit quoi : sécurité au niveau des lignes (RLS, statique et dynamique), au niveau des objets (OLS), droits sur les espaces de travail, partage, accès aux…

Guide≈ 7 min de lectureVérifiéContrôle effectuéLes faits, chiffres et références ont été contrôlés au regard des sources citées dans la fiche.Rédaction assistée par IA ; sources citées en bas de page. Une erreur ? Signalez-la via le site clement13.net.Lecture
En bref

Ce thème mesure la maîtrise de qui voit quoi : sécurité au niveau des lignes (RLS, statique et dynamique), au niveau des objets (OLS), droits sur les espaces de travail, partage, accès aux sources, et surtout la preuve que la sécurité fonctionne (tests de rôles, journaux). La conformité (RGPD, classification) est traitée côté matrice PD.

Sur cette page

Niveau : 🟢→🔴 · Code thème : RLS

1. Pourquoi ce thème#

Une fuite de données dans un rapport est un incident de sécurité, pas un défaut d'affichage. La RLS d'un modèle sémantique ne s'applique qu'aux utilisateurs ayant le rôle de lecteur : un membre avec droit d'écriture sur l'espace de travail contourne la RLS (comportement documenté ; à revérifier selon version, état 2026-10). La RLS filtre, mais n'empêche pas les inférences (un total non filtré, un nombre de lignes, un visuel de décomposition). Coût de l'ignorer : exposition de données commerciales (marges, concurrents) ou personnelles.

2. Ce que mesure le thème#

  • Axe : du partage ouvert à une sécurité conçue, testée et auditée.
  • Indicateurs clés : part des modèles contenant des données sensibles protégés par rôle ; nombre de rôles testés automatiquement ; nombre d'utilisateurs avec droits d'écriture non justifiés ; délai de retrait des droits.
  • Unités : %, jours.

3. Les 5 niveaux#

Niveau Nom court Promesse Indicateur type (ordre de grandeur)
1 Ouvert Tous ceux qui ont le lien voient tout. Aucun rôle ; partage par lien
2 Rôles statiques Chaque groupe d'utilisateurs ne voit que son périmètre déclaré. Rôles par périmètre ; groupes Entra
3 Dynamique Chaque utilisateur voit son périmètre sans qu'on crée un rôle par personne. 1 rôle dynamique + table de sécurité
4 Testé et journalisé Une règle de sécurité mal écrite est détectée avant la production ; les accès sont traçables. Test « voir en tant que » automatisé ; audit
5 Prouvé La sécurité est démontrable à un auditeur, y compris contre les contournements courants. Revue indépendante ; 0 écart sur 12 mois

4. Jalons par niveau#

ID Jalon Preuve vérifiable
BI-RLS-1.1 L'accès aux rapports est limité aux personnes de l'organisation (pas de publication web) Paramètres du locataire vérifiés
BI-RLS-1.2 Les espaces de travail ont des propriétaires identifiés Liste des admins
BI-RLS-1.3 Les données sensibles sont repérées Inventaire des colonnes sensibles
BI-RLS-2.1 Rôles RLS définis sur les tables de dimension de périmètre Rôles dans le modèle
BI-RLS-2.2 Les membres des rôles sont des groupes (Entra), pas des comptes individuels Affectations dans le service
BI-RLS-2.3 Les droits sur les espaces suivent un moindre privilège (Lecteur par défaut) Revue des rôles d'espace
BI-RLS-2.4 Les partages « par lien » sont inventoriés et limités Rapport d'audit des partages
BI-RLS-3.1 Filtre dynamique par USERPRINCIPALNAME() sur une table de sécurité Expression de rôle + table
BI-RLS-3.2 Direction de filtre de la sécurité vérifiée (propagation vers les faits ; bidirectionnel documenté) Revue du modèle
BI-RLS-3.3 Les mesures sensibles ne divulguent pas via totaux ou inférences Cas de test d'inférence
BI-RLS-3.4 Un cas « tous / aucun / plusieurs périmètres » est géré Jeu de cas de sécurité
BI-RLS-3.5 Les utilisateurs « virtuels » (administrateur, direction) sont traités explicitement Rôle ou exception documentés
BI-RLS-4.1 Tests « voir en tant que » rejoués à chaque livraison Journal des tests de rôles
BI-RLS-4.2 OLS pour masquer colonnes/tables sensibles quand nécessaire Rôle OLS posé et testé
BI-RLS-4.3 Journaux d'activité exploités (accès, exports) Requête d'audit
BI-RLS-4.4 Retrait des droits à la sortie d'un utilisateur dans un délai défini Délai mesuré
BI-RLS-5.1 Revue de sécurité indépendante annuelle Rapport
BI-RLS-5.2 La table de sécurité est alimentée par la source de vérité RH/organisation, automatiquement Flux d'alimentation
BI-RLS-5.3 Étiquettes de sensibilité propagées aux exports Étiquettes vérifiées en aval
BI-RLS-5.4 Aucun contournement connu : droits d'écriture, exports, API de requêtes Matrice de contournements testée

5. Lecture détaillée par niveau#

🟢 Niveau 1 — Ouvert#

  • Signes : « tout le monde voit tout », rapports partagés par lien, exports libres.
  • Gain : zéro friction. Ne garantit pas : la confidentialité.
  • Difficulté : 1/5 · Effort : 1/5.

🟢 Niveau 2 — Rôles statiques#

-- Rôle « Région Nord » sur DIM_COMMERCIAL
[Region] = "Nord"
  • Signes : un rôle par périmètre, membres = groupes. Simple, lisible, coûteux à maintenir quand les périmètres changent.
  • Gain : première barrière réelle.
  • Limite : explosion du nombre de rôles ; erreurs lors des mutations de personnel.
  • Difficulté : 2/5 · Effort : 2/5.

🟡 Niveau 3 — Dynamique#

-- Rôle unique « Périmètre » sur la table de sécurité SEC_USER_PERIMETRE
[Email] = USERPRINCIPALNAME ()

La table de sécurité relie un utilisateur à ses commerciaux/secteurs ; la relation SEC → dimension propage le filtre jusqu'aux faits. Selon le modèle, une relation bidirectionnelle avec Appliquer le filtre de sécurité dans les deux sens est nécessaire, ce qui peut avoir des effets collatéraux : documenter chaque cas.

  • Gain : maintenance par données, pas par déploiement.
  • Limite : les totaux peuvent diverger entre utilisateurs (voulu) mais surprendre : un directeur voit un total supérieur à celui d'un manager.
  • Difficulté : 3/5 · Effort : 3/5.
🧪 Exemple

Fil rouge SFA : un commercial voit ses clients ; un manager voit les clients de son équipe, y compris ceux dont la responsabilité tourne dans l'année. La table de sécurité porte une période de validité ; un filtre sur la période s'ajoute à l'expression du rôle.

⚠️ Piège

Symptôme : une mesure comptant les dimensions (ex. nombre de clients) varie selon l'utilisateur d'une façon inattendue. Cause : le rétro-filtrage des faits vers les dimensions sous RLS. Remède : tester chaque mesure de comptage sous chaque rôle ; ajuster la direction de filtre ou la mesure.

⚠️ Piège

Symptôme : un administrateur voit tout en test et pense que la sécurité fonctionne. Cause : les droits d'écriture ignorent la RLS. Remède : tester avec un compte de lecteur réel ou « voir en tant que ».

🟡 Niveau 4 — Testé et journalisé#

  • Signes : « voir en tant que » est un test de livraison ; les requêtes d'audit ont un propriétaire ; l'OLS cache les colonnes sensibles (marges) aux rôles non autorisés.
  • Gain : une règle fausse est vue avant la prod.
  • Limite : l'OLS peut casser des rapports qui référencent la colonne masquée ; le tester.
  • Difficulté : 4/5 · Effort : 4/5.
💡 Astuce d'expert

Automatise le test par requête DAX exécutée avec identité effective (EffectiveUserName côté XMLA, ou test via API d'exécution de requêtes avec impersonation) et compare le résultat à un attendu : « l'utilisateur X ne doit voir que N clients ».

🔴 Niveau 5 — Prouvé#

  • Signes : table de sécurité alimentée par la source RH, revue de sécurité indépendante, matrice de contournements (exports, abonnements, API, accès direct à la base ou au lakehouse) testée. La RLS du modèle ne protège pas la source : l'accès direct SQL ou OneLake doit être couvert séparément.
  • Gain : preuve opposable.
  • Limite : coût de maintenance et de coordination avec RH et sécurité.
  • Difficulté : 5/5 · Effort : 5/5.
✅ Bonne pratique

Mets la sécurité au plus près de la source quand c'est possible (RLS SQL, sécurité OneLake), et garde la RLS du modèle comme seconde couche : une seule couche = un seul point de défaillance.

🤖 IA

Un assistant peut rédiger une expression de rôle ou générer des cas de test ; il ne mesure pas l'impact d'une direction de filtre sur vos totaux. Risque : exposer des données à un service d'IA sans cadre ; vérifier la politique de l'organisation (voir PD — sécurité).

6. Atteinte partielle et notation#

Règle commune. Un « 5 partiel » : revue indépendante faite une fois mais pas renouvelée (BI-RLS-5.1 = 0,5), table de sécurité alimentée automatiquement (5.2 = 1), étiquettes de sensibilité posées sur la moitié des modèles (5.3 = 0,5), contournements testés sur les exports mais pas sur l'accès direct à la source (5.4 = 0,5). Un jalon de sécurité à 0 bloque l'acquisition du niveau, quelle que soit la moyenne : c'est voulu.

7. Passer au niveau suivant#

Moyens possibles (facultatifs) :

Passage Leviers possibles
1 → 2 Inventaire des données sensibles ; rôles par groupe ; moindre privilège
2 → 3 Table de sécurité ; rôle unique ; jeu de cas limites
3 → 4 Tests « voir en tant que » en pipeline ; OLS ; journaux d'activité
4 → 5 Alimentation RH automatique ; revue externe ; matrice de contournements ; sécurité à la source

Pièges :

  • Faux positif : « la RLS est en place » mais les administrateurs et l'équipe projet ne la testent jamais avec un compte lecteur.
  • Goodhart : compter les rôles ; un rôle « Tous » qui ne filtre rien rend la mesure creuse.
  • Confondre confidentialité et masquage : cacher un visuel n'est pas sécuriser la donnée sous-jacente.

8. Voir aussi#

✻ Rédigé par Claude Sonnet 5.5