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 :
- Chaque utilisateur recoit le role Gamma (role de base, necessaire pour acceder a l'interface).
- On cree des roles custom (voir section 3) qui representent des perimetres metier.
- 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¶
- Dans Superset, cliquer sur Settings (engrenage en haut a droite).
- Aller dans Security → List Roles.
- Cliquer sur le bouton + (en haut a droite de la liste).
- Remplir le formulaire :
- Name : nom descriptif du perimetre. Utiliser un format clair, par exemple
Service_Perimetre. - 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.
- 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¶
- Dans Superset, cliquer sur Settings → Security → List Users.
- Cliquer sur le nom de l'utilisateur a modifier.
- Dans le champ Roles :
- S'assurer que le role Gamma est present (necessaire pour acceder a l'interface).
- Ajouter le ou les role(s) custom correspondant au perimetre de l'utilisateur.
- 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¶
- Ouvrir le dashboard concerne dans Superset.
- Cliquer sur les trois points
...(menu en haut a droite du dashboard). - Cliquer sur Edit properties.
- Dans le champ Roles :
- Taper le nom du role custom et le selectionner dans la liste deroulante.
- Ajouter tous les roles qui doivent avoir acces a ce dashboard.
- 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¶
- Dans Superset, cliquer sur Settings → Security → Row Level Security.
- Cliquer sur le bouton + pour creer une nouvelle regle.
- Remplir le formulaire :
- Tables : selectionner la ou les tables / vues concernees (ex :
vue_ventes,vue_commandes). - Roles : selectionner le ou les roles auxquels cette regle s'applique.
- Clause : ecrire la clause SQL
WHEREqui filtre les donnees. Ne pas ecrireWHERE— uniquement la condition. - 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¶
- L'utilisateur se connecte a Superset via SSO Azure (Entra ID). Son compte est cree automatiquement avec le role
Gamma. - L'administrateur va dans Settings → Security → List Users.
- Cliquer sur le nouvel utilisateur.
- Dans le champ Roles, ajouter le ou les roles custom correspondant a son perimetre (ex :
Commercial_Ventes). - Cliquer Save.
- 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¶
- Aller dans Settings → Security → List Users.
- Cliquer sur l'utilisateur concerne.
- Dans le champ Roles, retirer le ou les roles custom (en cliquant sur la croix a cote du role).
- Laisser
Gammasi l'utilisateur doit conserver un acces de base, ou retirer aussiGammapour bloquer tout acces. - Cliquer Save.
- L'utilisateur ne voit plus les dashboards associes aux roles retires.
Creer un nouveau dashboard avec des droits¶
- Creer le dashboard normalement dans Superset (ajouter les charts, configurer la mise en page).
- Une fois le dashboard pret, cliquer sur les trois points
...→ Edit properties. - Dans le champ Roles, ajouter les roles custom qui doivent voir ce dashboard.
- Cliquer Save.
- Seuls les utilisateurs possedant au moins un des roles assignes verront le dashboard.
Modifier les droits d'un dashboard existant¶
- Ouvrir le dashboard dans Superset.
- Cliquer sur les trois points
...→ Edit properties. - Modifier le champ Roles : ajouter ou retirer des roles.
- Cliquer Save.
- 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¶
- SSO Entra ID (OAuth) sur Superset — Configuration de l'authentification SSO avec Azure Entra ID
- Deploiement Apache Superset sur Ouranos — Installation et deploiement de la stack Superset
- Stack Docker Ouranos — Architecture Docker du serveur Ouranos