
KcMapper is a security auditing tool for Keycloak. It exports your Keycloak configuration (realms, clients, users, roles, etc.) into a Neo4j graph database. This representation enables complex relationship analysis and security auditing through a built-in interactive web UI with pre-defined queries.
KcMapper est un outil permettant d'exporter les données de configuration de Keycloak vers une base de données graphe Neo4j. Cette représentation permet d'analyser les relations entre les realms, les clients, les utilisateurs, les groupes et les rôles. L'outil inclut une interface web pour exécuter des requêtes Cypher prédéfinies pour l'analyse et l'audit de sécurité.
webapp/queries.json.Ce guide couvre l'installation locale de KcMapper. Cette méthode nécessite d'installer Python et Neo4j sur votre machine.
Vous pouvez installer Neo4j Community Edition en suivant ces étapes :
# Add the Neo4j GPG key
wget -O - https://debian.neo4j.com/neotechnology.gpg.key | sudo apt-key add -
# Add the Neo4j repository
echo 'deb https://debian.neo4j.com stable 5' | sudo tee /etc/apt/sources.list.d/neo4j.list
# Update packages and install Neo4j
sudo apt-get update
sudo apt-get install neo4j -y
# Start the Neo4j service
sudo systemctl start neo4j
Après l'installation, ouvrez http://localhost:7474 dans votre navigateur et définissez le mot de passe initial (par défaut, neo4j/neo4j).
Pour les autres systèmes (Windows, macOS, etc.) :
Cloner le dépôt
git clone https://github.com/synacktiv/kcmapper.git
cd kcmapper
Créer un environnement virtuel Python (recommandé)
python -m venv venv
source venv/bin/activate # On Windows, use `venv\Scripts\activate`
Installer les dépendances
pip install -r requirements.txt
Configurer les variables d'environnement
Copiez le fichier .env.example vers .env.
cp .env.example .env
Modifiez le fichier .env pour qu'il pointe vers votre instance Keycloak et votre base de données Neo4j locale.
# --- Keycloak Connection ---
KEYCLOAK_URL=http://your-keycloak-server:8080/
KEYCLOAK_USER=admin
KEYCLOAK_PASSWORD=your_keycloak_admin_password
# Optional - for confidential clients
KEYCLOAK_CLIENT_SECRET=
# Optional - for users with 2FA enabled
KEYCLOAK_TOTP=
# Optional - for mTLS authentication
KEYCLOAK_CERT_PATH=
# --- Neo4j Connection (for local environment) ---
NEO4J_URI=bolt://localhost:7687
NEO4J_USER=neo4j
NEO4J_PASSWORD=your_local_neo4j_password
Exporter les données
Exécutez la commande export pour remplir votre base de données Neo4j.
python kcmapper_cli.py export
--clean :
python kcmapper_cli.py export --clean
Analyser les données Une fois l'export terminé, lancez l'interface web d'analyse.
python kcmapper_cli.py analyze
kcmapper_cli.py : Point d'entrée principal en ligne de commande./processors : Contient la logique d'extraction et de chargement pour chaque type d'objet Keycloak./utils : Fonctions utilitaires, principalement pour la connexion à Neo4j et le nettoyage des données./webapp : Contient l'application web Flask pour l'analyse des données.Les contributions sont les bienvenues. N'hésitez pas à ouvrir une issue pour signaler un bug ou suggérer une nouvelle fonctionnalité. Pour ajouter de nouvelles requêtes d'analyse, modifiez le fichier webapp/queries.json et soumettez une pull request.
Ce projet est sous licence MIT. Voir le fichier LICENSE pour plus de détails.