Aller au contenu

07 — Tour de gouvernance — RBAC Plateforme vs Data

Durée : 5 min  ·  Persona : alice (admin)  ·  Voie : A ou B

AKKO sépare deux saveurs de RBAC :

  • Platform Access — quelles surfaces un rôle voit (pages sidebar, boutons d'action, panneaux admin).
  • Data Access — quelles lignes et colonnes un rôle peut lire ou écrire dans les catalogues.

Elles sont gérées indépendamment et auditées côte à côte.

Pré-requis

  • Vous êtes connecté en tant qu'alice.
  • Vous avez terminé le chapitre 03.

Étape 1 — Ouvrir Platform Access

Cliquez sur Governance dans la sidebar, puis sur l'onglet Platform Access.

Vous voyez une matrice : 5 rôles × chips de couches.

Rôle Chips visibles
akko-admin toutes les couches
akko-engineer Compute, Lab, Catalog, AI
akko-analyst BI, AI
akko-viewer Dashboards Home uniquement
akko-steward Catalog, NORA, Audit

Résultat attendu : la matrice s'affiche, chaque cellule montre ✓ ou ✗.

Matrice Platform Access


Étape 2 — Éditer un chip (sans sauver)

Cliquez sur n'importe quel chip pour le basculer (par exemple, donner à carol la couche Logs).

La cellule affiche un liseré jaune « pending ». Le bouton Save en haut à droite s'active.

Ne sauvegardez pas — cliquez sur Discard pour ce tour. On garde l'état démo propre.

Pourquoi un preview côté client. Vous voyez la nouvelle posture RBAC avant de committer. Le backend ne valide et persiste qu'au Save, jamais au toggle.


Étape 3 — Ouvrir Data Access

Basculez sur l'onglet Data Access dans la page Governance.

Vous voyez une liste de catalogues, chacun avec :

  • Scope — engineering / analyst / viewer / steward / custom.
  • Row filters — par exemple region = 'EU' pour le scope analyst.
  • Column masks — par exemple email → md5(email) pour le scope viewer.
  • PII tags — quelles colonnes sont flaggées par NORA.

Résultat attendu : la liste de catalogues s'affiche avec les pastilles de santé et les comptes lignes/colonnes.

Matrice Data Access


Étape 4 — Inspecter le scope de carol

Cliquez sur le lien de scope analyst à côté du catalogue demo_postgres.

Vous voyez :

Champ Valeur
Row filter region = 'EU'
Column mask email → md5(email)
Tables refusées internal_audit, risk_models
Règles d'agrégation MIN_GROUP_SIZE = 10 (k-anonymity)

Couche en action. Ce scope est appliqué côté serveur par le moteur de politiques. Carol ne peut pas le contourner depuis ADEN, SQL Lab, BI ou l'API.


Étape 5 — Test en live — bascule sur dave

  1. Déconnectez-vous.
  2. Reconnectez-vous comme dave / dave123.
  3. Essayez d'ouvrir l'arbre catalogue via DEMO_HOST/#catalogs.

Résultat attendu : la page affiche le bandeau « tip » RBAC AKKO :

« This area is not available for your role (akko-viewer). Ask your administrator. »

Un bouton en bas à droite dit « Request access » — il ouvre un ticket dans le journal d'audit.

RBAC denied pour Dave


Étape 6 — Auditer l'accès

Reconnectez-vous comme alice. Ouvrez Logs → filtrez event=access_denied user=dave.

Vous voyez l'événement de refus d'accès avec timestamp, chemin de requête, persona, et la règle RBAC qui a bloqué.

Résultat attendu : au moins une entrée correspond à la tentative de dave de l'étape précédente.

Design audit-first. Chaque refus est journalisé, chaque attribution est journalisée, chaque changement de catalogue est journalisé. La piste d'audit est append-only et signée.


Comment ça s'articule

Fournisseur d'identité  →  rôle realm
                  Matrice Platform Access  →  sidebar + UI
                  Scope Data Access        →  SQL WHERE / column mask
                      Piste d'audit (signée)

Principe layer-first. La matrice RBAC Plateforme mappe des rôles à des couches, pas à des noms de produits fournisseurs. Quand vous remplacez le moteur BI, la matrice ne change pas — seule l'implémentation derrière la couche change.


Dépannage

Symptôme Cause probable Fix
Matrice Platform Access vide Backend qui chauffe Rafraîchir après 10 sec.
Le bouton Save ne s'active pas Aucun changement détecté Toggler un chip, vérifier que le liseré jaune apparaît.
Save retourne 409 Édition concurrente par un autre admin Rafraîchir, ré-appliquer, sauver.
Carol voit encore les colonnes masquées en clair TTL de cache Attendre 60 sec ou cliquer « Invalidate scope cache ».
Journal d'audit vide Logs pas encore injectés Générer quelques requêtes (chapitre 04) puis rafraîchir.

Ce que vous venez d'apprendre

  • Deux dimensions RBAC : Plateforme (UI) et Data (lignes / colonnes).
  • Les scopes sont côté serveur, append-only, audités.
  • Chaque accès refusé laisse une trace signée.

Suivant : 08 — Dépannage.