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

Configurer Apache Superset avec Keycloak

  1. Introduction
  2. 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.

  3. Pourquoi intégrer Superset à Keycloak ?
  4. 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.

  5. Architecture globale
  6. 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.
    Keycloak logo Superset logo


  7. Configuration de Keycloak
  8. Voici les étapes pour préparer Keycloak : 1. Connectez-vous à l’interface d’administration de Keycloak : 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 :
    • Client ID : superset
    • Client Protocol : openid-connect
    • Root URL : http://localhost:8088
    • Valid Redirect URIs : http://localhost:8088/*
    4. Dans l’onglet Credentials, copiez la valeur du **Client Secret**. Elle sera nécessaire côté Superset. 5. Enfin, créez les **utilisateurs** et attribuez-leur des **rôles** (comme admin, analyste ou viewer).

  9. Configuration de Superset
  10. Ouvrez votre fichier 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


  11. Utilisation avec Docker
  12. Si vous déployez Superset via Docker, vous pouvez créer un fichier 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

  13. Tests de connexion
  14. 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

  15. Conclusion
  16. 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.

No comments yet

No comments yet. Start a new discussion.

Add Comment