IREX - Configurer Apache Superset avec Keycloak
Apache Superset est un outil open source puissant pour explorer et visualiser des données. Keycloak, de son côté, permet de centraliser la gestion des identités et des accès. En les intégrant, on renf
·
3 min read
- Introduction Apache Superset est un outil open source dédié à la visualisation et à l’analyse de données. De son côté, Keycloak est une solution de gestion des identités et des accès. En les combinant, on met en place une authentification unique (SSO) ainsi qu’un contrôle des rôles, permettant de sécuriser efficacement l’accès aux tableaux de bord Superset.
- Pourquoi intégrer Superset à Keycloak ? Associer Superset à Keycloak présente plusieurs avantages concrets :
- Authentification centralisée : les utilisateurs n’ont besoin de se connecter qu’une seule fois via Keycloak.
- Attribution automatique des rôles : Keycloak peut directement affecter les rôles Superset (Admin, Gamma, etc.).
- Amélioration de la sécurité : grâce à l’usage des protocoles OAuth2 et OpenID Connect.
- Expérience utilisateur simplifiée : plus besoin de retenir plusieurs identifiants ou mots de passe.
- Architecture globale Cette intégration repose sur les protocoles OAuth 2.0 et OpenID Connect :
- Superset est configuré en tant que client OAuth2.
- Keycloak agit comme fournisseur d’identité (IdP).
- Les utilisateurs s’identifient via Keycloak, puis sont redirigés vers Superset avec un jeton d’accès.
- Configuration de Keycloak Voici les étapes pour préparer Keycloak : 1. Connectez-vous à l’interface d’administration de Keycloak :
- Client ID : superset
- Client Protocol : openid-connect
- Root URL : http://localhost:8088
- Valid Redirect URIs : http://localhost:8088/*
- Configuration de Superset Ouvrez votre fichier
- Utilisation avec Docker Si vous déployez Superset via Docker, vous pouvez créer un fichier
- Tests de connexion Voici comment tester votre intégration : 1. Rendez-vous sur http://localhost:8088 2. Cliquez sur "Login with Keycloak" 3. Si tout est bien configuré, vous serez redirigé vers la page de connexion Keycloak 4. Une fois connecté, Superset créera automatiquement un utilisateur à partir des informations de votre compte Keycloak
- Conclusion En intégrant Keycloak à Apache Superset, vous bénéficiez d’une solution à la fois centralisée et sécurisée pour gérer les accès utilisateurs. Keycloak prend en charge l’authentification unique, l’attribution des rôles et la conformité aux standards de sécurité modernes, tandis que Superset continue d’offrir une expérience de visualisation de données puissante. C’est un choix pertinent pour toute organisation souhaitant renforcer la sécurité de ses outils open source d’analyse de données.
http://localhost:8080/admin
2. Créez un nouveau **Realm**, que vous pouvez nommer par exemple superset.
3. Ajoutez un **Client** avec les paramètres suivants :
superset_config.py et insérez la configuration suivante :
from flask_appbuilder.security.manager import AUTH_OID, AUTH_REMOTE_USER, AUTH_DB, AUTH_LDAP, AUTH_OAUTH
import os
AUTH_TYPE = AUTH_OAUTH
OAUTH_PROVIDERS = [
{
'name': 'keycloak',
'icon': 'fa-key',
'token_key': 'access_token',
'remote_app': {
'client_id': 'superset',
'client_secret': 'VOTRE_CLIENT_SECRET',
'api_base_url': 'http://localhost:8080/realms/superset/protocol/openid-connect',
'access_token_url': 'http://localhost:8080/realms/superset/protocol/openid-connect/token',
'authorize_url': 'http://localhost:8080/realms/superset/protocol/openid-connect/auth',
'client_kwargs': {'scope': 'openid email profile'},
},
}
]
ENABLE_PROXY_FIX = True
Redémarrez Superset afin de prendre en compte les modifications :
docker compose restart superset
docker-compose.yml en utilisant l’image officielle. Montez ensuite votre fichier superset_config.py comme suit :
services:
superset:
image: apache/superset:latest
container_name: superset
environment:
- SUPERSET_ENV=production
volumes:
- ./superset_config.py:/app/pythonpath/superset_config.py
ports:
- "8088:8088"
depends_on:
- db
Pour lancer l’environnement :
docker compose up -d
No comments yet. Start a new discussion.