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 ✗.

É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 scopeanalyst. - Column masks — par exemple
email → md5(email)pour le scopeviewer. - 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.

É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¶
- Déconnectez-vous.
- Reconnectez-vous comme
dave/dave123. - 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.

É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.