Aller au contenu

Gestion des droits dans Apache Superset (Ouranos)

Objectif

Ce guide decrit comment gerer les permissions au niveau des dashboards dans Apache Superset, grace a la fonctionnalite DASHBOARD_RBAC. L'objectif est de cloisonner l'acces aux tableaux de bord par groupe d'utilisateurs, sans toucher aux permissions fines sur les datasets.

Public cible : administrateur IT, pas de competences developpeur requises.


1. Activer DASHBOARD_RBAC

Modifier le fichier de configuration

Ouvrir le fichier superset_config.py sur le VPS Ouranos :

sudo nano /opt/superset-config/superset_config.py

Ajouter (ou completer) le bloc FEATURE_FLAGS :

FEATURE_FLAGS = {
    "DASHBOARD_RBAC": True,
}

Si le bloc FEATURE_FLAGS existe deja avec d'autres flags, ajouter simplement la ligne "DASHBOARD_RBAC": True a l'interieur du dictionnaire existant.

Redemarrer Superset

docker restart superset-app superset-worker superset-beat

Ou, si le deploiement est gere par Portainer : ouvrir la stack Superset dans Portainer et cliquer Restart.

Comportement apres activation

  • Un dashboard avec des roles assignes dans ses proprietes ne sera visible que par les utilisateurs qui possedent au moins un de ces roles.
  • Un dashboard sans aucun role assigne (champ Roles vide) reste visible selon les permissions classiques (basees sur les datasets). C'est le comportement par defaut.

Attention

Apres activation de DASHBOARD_RBAC, si vous ne configurez aucun role sur un dashboard, il reste accessible a tous les utilisateurs ayant acces aux datasets sous-jacents. Pensez a assigner les roles sur chaque dashboard que vous souhaitez restreindre.


2. Comprendre les roles de base

Superset fournit des roles integres. Voici leurs droits principaux :

Role Description Droits
Admin Administrateur complet Acces total : configuration, utilisateurs, roles, dashboards, datasets, SQL Lab. Peut tout voir et tout modifier.
Alpha Utilisateur avance Peut creer des charts et dashboards, acceder a toutes les sources de donnees, utiliser SQL Lab. Ne peut pas gerer les utilisateurs ni les roles.
Gamma Utilisateur restreint Ne voit que les dashboards et datasets pour lesquels il a une permission explicite. Ne peut pas creer de charts ni de datasets. C'est le role de base pour les utilisateurs finaux.
sql_lab Acces SQL Lab Permet d'executer des requetes SQL dans l'interface SQL Lab. Se combine avec un autre role (ex : Gamma + sql_lab).

Strategie pour le controle par dashboard

Pour gerer l'acces au niveau des dashboards :

  1. Chaque utilisateur recoit le role Gamma (role de base, necessaire pour acceder a l'interface).
  2. On cree des roles custom (voir section 3) qui representent des perimetres metier.
  3. On assigne ces roles custom aux dashboards (voir section 5).

Le role Gamma seul ne donne acces a rien — c'est l'ajout de roles custom qui ouvre les portes.


3. Creer des roles custom par perimetre

Procedure pas a pas

  1. Dans Superset, cliquer sur Settings (engrenage en haut a droite).
  2. Aller dans SecurityList Roles.
  3. Cliquer sur le bouton + (en haut a droite de la liste).
  4. Remplir le formulaire :
  5. Name : nom descriptif du perimetre. Utiliser un format clair, par exemple Service_Perimetre.
  6. Permissions : laisser vide pour l'instant. L'acces aux dashboards est gere par l'assignation DASHBOARD_RBAC (section 5), pas par les permissions du role.
  7. Cliquer Save.

Pourquoi laisser les permissions vides ?

Avec DASHBOARD_RBAC, c'est le fait d'ajouter un role dans les proprietes du dashboard qui donne la visibilite. Le role custom sert de "badge" — il n'a pas besoin de permissions internes pour que DASHBOARD_RBAC fonctionne. Si vous avez besoin d'acceder a des datasets specifiques (pour que les charts s'affichent), ajoutez les permissions datasource access sur les tables concernees (voir section 9 — Depannage).

Exemples de roles pour une entreprise agroalimentaire

Role custom Perimetre Qui le recoit
Commercial_Ventes Dashboards commerciaux : ventes, commandes, suivi clients Equipe commerciale, ADV
Production_Usine Dashboards production : rendements, cadences, arrets machines Responsables de production, chefs d'equipe
Direction_Global Tous les dashboards strategiques : synthese globale, KPIs direction Direction generale, DAF
Finance_Compta Dashboards financiers : tresorerie, marges, couts Comptabilite, controle de gestion
Qualite_Labo Dashboards qualite : controles, non-conformites, tracabilite Responsable qualite, laboratoire

4. Assigner les roles aux utilisateurs

Procedure pas a pas

  1. Dans Superset, cliquer sur SettingsSecurityList Users.
  2. Cliquer sur le nom de l'utilisateur a modifier.
  3. Dans le champ Roles :
  4. S'assurer que le role Gamma est present (necessaire pour acceder a l'interface).
  5. Ajouter le ou les role(s) custom correspondant au perimetre de l'utilisateur.
  6. Cliquer Save.

Exemples

  • Un commercial : Gamma + Commercial_Ventes
  • Un directeur qui doit voir les ventes et la production : Gamma + Commercial_Ventes + Production_Usine + Direction_Global
  • Un comptable : Gamma + Finance_Compta

Un utilisateur peut avoir plusieurs roles custom. Il verra tous les dashboards assignes a au moins un de ses roles.

Cas des utilisateurs SSO

Quand un utilisateur se connecte pour la premiere fois via SSO (Entra ID / Azure AD), son compte est cree automatiquement dans Superset avec le role defini par la variable :

AUTH_USER_REGISTRATION_ROLE = "Gamma"

Cela signifie que tout nouvel utilisateur SSO arrive avec le role Gamma par defaut. Il ne verra aucun dashboard restreint tant qu'un administrateur ne lui aura pas ajoute les roles custom correspondants (voir section 8 — Procedures courantes).


5. Assigner les roles aux dashboards (DASHBOARD_RBAC)

C'est l'etape centrale de la gestion des droits. C'est ici que l'on decide qui voit quel dashboard.

Procedure pas a pas

  1. Ouvrir le dashboard concerne dans Superset.
  2. Cliquer sur les trois points ... (menu en haut a droite du dashboard).
  3. Cliquer sur Edit properties.
  4. Dans le champ Roles :
  5. Taper le nom du role custom et le selectionner dans la liste deroulante.
  6. Ajouter tous les roles qui doivent avoir acces a ce dashboard.
  7. Cliquer Save.

Regles de visibilite

Situation Resultat
Le champ Roles est vide Le dashboard est visible par tous les utilisateurs ayant acces aux datasets (comportement par defaut, pas de restriction DASHBOARD_RBAC).
Le champ Roles contient un ou plusieurs roles Seuls les utilisateurs possedant au moins un de ces roles voient le dashboard.

Exemples concrets

Dashboard Roles assignes Qui voit ce dashboard
Ventes Commercial_Ventes, Direction_Global Equipe commerciale + Direction
Production Production_Usine, Direction_Global Equipe production + Direction
Finance Finance_Compta, Direction_Global Comptabilite + Direction
Carte Commandes Commercial_Ventes, Direction_Global Equipe commerciale + Direction
Qualite Qualite_Labo, Direction_Global Equipe qualite + Direction
Synthese Direction Direction_Global Direction uniquement

Bonne pratique

Toujours ajouter le role Direction_Global sur les dashboards que la direction doit voir. Cela evite de devoir ajouter chaque directeur individuellement dans chaque role metier.


6. Row-Level Security (RLS) — Filtrage des donnees

Principe

Le Row-Level Security est un mecanisme optionnel mais puissant. Il permet de filtrer les lignes de donnees visibles par un utilisateur a l'interieur d'un dashboard.

Cas d'usage typique : deux commerciaux accedent au meme dashboard "Ventes", mais chacun ne doit voir que les donnees de sa propre societe.

DASHBOARD_RBAC controle quel dashboard on voit. RLS controle quelles donnees on voit dans ce dashboard.

Procedure pas a pas

  1. Dans Superset, cliquer sur SettingsSecurityRow Level Security.
  2. Cliquer sur le bouton + pour creer une nouvelle regle.
  3. Remplir le formulaire :
  4. Tables : selectionner la ou les tables / vues concernees (ex : vue_ventes, vue_commandes).
  5. Roles : selectionner le ou les roles auxquels cette regle s'applique.
  6. Clause : ecrire la clause SQL WHERE qui filtre les donnees. Ne pas ecrire WHERE — uniquement la condition.
  7. Cliquer Save.

Exemples concrets

Commerciaux filtres par societe

Deux commerciaux, Dupont et Martin, travaillent pour des societes differentes. Chacun ne doit voir que les donnees de sa societe.

Etape 1 — Creer deux roles specifiques : - Commercial_Dupont - Commercial_Martin

Etape 2 — Assigner les roles aux utilisateurs : - Utilisateur Dupont : Gamma + Commercial_Ventes + Commercial_Dupont - Utilisateur Martin : Gamma + Commercial_Ventes + Commercial_Martin

Etape 3 — Creer les regles RLS :

Regle Tables Roles Clause
Filtre Dupont vue_ventes, vue_commandes Commercial_Dupont societe = 'Dupont'
Filtre Martin vue_ventes, vue_commandes Commercial_Martin societe = 'Martin'

Resultat : Dupont ouvre le dashboard "Ventes" et ne voit que les lignes ou societe = 'Dupont'. Martin ne voit que les lignes ou societe = 'Martin'.

Filtrage par site de production

site_production = 'Usine_Nord'

Filtrage multi-valeurs

region IN ('Bretagne', 'Normandie')

Attention

Si aucune regle RLS n'est definie pour un role, l'utilisateur voit toutes les lignes de la table. Les regles RLS sont restrictives : elles ne s'appliquent qu'aux roles mentionnes.


7. Matrice des droits — Exemple concret

Voici un exemple complet pour une entreprise agroalimentaire avec 6 utilisateurs :

Utilisateur Roles Superset Dashboards visibles Donnees visibles (RLS)
Lefevre (admin IT) Admin Tous les dashboards Toutes les donnees (Admin n'est pas affecte par DASHBOARD_RBAC ni RLS)
Bernard (directeur general) Gamma, Direction_Global Ventes, Production, Finance, Carte Commandes, Qualite, Synthese Direction Toutes les donnees (pas de RLS sur Direction_Global)
Dupont (commercial) Gamma, Commercial_Ventes, Commercial_Dupont Ventes, Carte Commandes Uniquement les lignes ou societe = 'Dupont'
Martin (commercial) Gamma, Commercial_Ventes, Commercial_Martin Ventes, Carte Commandes Uniquement les lignes ou societe = 'Martin'
Roux (chef de production) Gamma, Production_Usine Production Toutes les donnees de production (pas de RLS)
Moreau (comptable) Gamma, Finance_Compta Finance Toutes les donnees financieres (pas de RLS)

Le role Admin

Le role Admin contourne toutes les restrictions DASHBOARD_RBAC et RLS. Un Admin voit tout. Reservez ce role au personnel IT qui administre Superset.


8. Procedures courantes

Ajouter un nouvel utilisateur

  1. L'utilisateur se connecte a Superset via SSO Azure (Entra ID). Son compte est cree automatiquement avec le role Gamma.
  2. L'administrateur va dans SettingsSecurityList Users.
  3. Cliquer sur le nouvel utilisateur.
  4. Dans le champ Roles, ajouter le ou les roles custom correspondant a son perimetre (ex : Commercial_Ventes).
  5. Cliquer Save.
  6. L'utilisateur voit maintenant les dashboards assignes a ses roles.

Astuce

Demander au nouvel utilisateur de se connecter une premiere fois via SSO avant d'ajouter ses roles. Cela cree automatiquement son compte dans Superset et evite de le creer manuellement.

Retirer l'acces a un utilisateur

  1. Aller dans SettingsSecurityList Users.
  2. Cliquer sur l'utilisateur concerne.
  3. Dans le champ Roles, retirer le ou les roles custom (en cliquant sur la croix a cote du role).
  4. Laisser Gamma si l'utilisateur doit conserver un acces de base, ou retirer aussi Gamma pour bloquer tout acces.
  5. Cliquer Save.
  6. L'utilisateur ne voit plus les dashboards associes aux roles retires.

Creer un nouveau dashboard avec des droits

  1. Creer le dashboard normalement dans Superset (ajouter les charts, configurer la mise en page).
  2. Une fois le dashboard pret, cliquer sur les trois points ...Edit properties.
  3. Dans le champ Roles, ajouter les roles custom qui doivent voir ce dashboard.
  4. Cliquer Save.
  5. Seuls les utilisateurs possedant au moins un des roles assignes verront le dashboard.

Modifier les droits d'un dashboard existant

  1. Ouvrir le dashboard dans Superset.
  2. Cliquer sur les trois points ...Edit properties.
  3. Modifier le champ Roles : ajouter ou retirer des roles.
  4. Cliquer Save.
  5. Les changements sont immediats — pas besoin de redemarrer.

9. Depannage

Probleme Cause probable Solution
L'utilisateur ne voit aucun dashboard Le role Gamma est manquant, ou aucun role custom n'est assigne a l'utilisateur. Verifier que l'utilisateur a le role Gamma + au moins un role custom. Verifier que les dashboards ont des roles assignes dans leurs proprietes.
L'utilisateur voit tous les dashboards DASHBOARD_RBAC n'est pas active, ou les dashboards n'ont aucun role assigne dans leurs proprietes (champ Roles vide). Verifier que FEATURE_FLAGS = {"DASHBOARD_RBAC": True} est dans superset_config.py. Verifier que chaque dashboard restreint a au moins un role dans ses proprietes.
Le RLS ne filtre pas les donnees La clause SQL est incorrecte, ou le role n'est pas correctement assigne a la regle RLS. Verifier la syntaxe de la clause (pas de WHERE, uniquement la condition). Verifier que le bon role est selectionne dans la regle RLS. Verifier que l'utilisateur possede ce role.
Un nouvel utilisateur SSO ne voit rien L'utilisateur a ete cree automatiquement avec le role Gamma uniquement. Il n'a aucun role custom. Un administrateur doit aller dans List Users et ajouter les roles custom correspondants.
"Access denied" sur un chart a l'interieur d'un dashboard L'utilisateur voit le dashboard (grace a DASHBOARD_RBAC) mais n'a pas la permission d'acceder au dataset sous-jacent du chart. Ajouter la permission datasource access on [nom_table] au role custom de l'utilisateur. Aller dans List Roles → cliquer le role → ajouter la permission dans la liste.
Les modifications de roles ne prennent pas effet Le cache du navigateur ou de Superset conserve l'ancien etat. Demander a l'utilisateur de se deconnecter et se reconnecter. Si le probleme persiste, vider le cache Superset : docker exec superset-app superset init.

10. Voir aussi