
KcMapper è uno strumento di audit di sicurezza per Keycloak. Esporta la configurazione di Keycloak (realm, client, utenti, ruoli, ecc.) in un database a grafi Neo4j. Questa rappresentazione consente l'analisi di relazioni complesse e l'audit di sicurezza tramite un'interfaccia web interattiva integrata con query predefinite.
KcMapper è uno strumento per esportare i dati di configurazione di Keycloak in un database a grafi Neo4j. Questa rappresentazione consente l'analisi delle relazioni tra realm, client, utenti, gruppi e ruoli. Lo strumento include un'interfaccia web per eseguire query Cypher predefinite per analisi e audit di sicurezza.
webapp/queries.json.Questa guida copre l'installazione locale di KcMapper. Questo metodo richiede di installare Python e Neo4j sulla propria macchina.
È possibile installare Neo4j Community Edition seguendo questi passaggi:
# 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
Dopo l'installazione, apri http://localhost:7474 nel browser e imposta la password iniziale (quella predefinita è neo4j/neo4j).
Per altri sistemi (Windows, macOS, ecc.):
Clona il repository
git clone https://github.com/synacktiv/kcmapper.git
cd kcmapper
Configura un ambiente virtuale Python (consigliato)
python -m venv venv
source venv/bin/activate # On Windows, use `venv\Scripts\activate`
Installa le dipendenze
pip install -r requirements.txt
Configura le variabili d'ambiente
Copia il file .env.example in .env.
cp .env.example .env
Modifica il file .env per puntare alla tua istanza Keycloak e al tuo database 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
Esporta i Dati
Esegui il comando export per popolare il tuo database Neo4j.
python kcmapper_cli.py export
--clean:
python kcmapper_cli.py export --clean
Analizza i Dati Una volta completata l'esportazione, avvia l'interfaccia web di analisi.
python kcmapper_cli.py analyze
kcmapper_cli.py: Punto di ingresso principale da riga di comando./processors: Contiene la logica di estrazione e caricamento per ogni tipo di oggetto Keycloak./utils: Funzioni di utilità, principalmente per la connessione a Neo4j e la pulizia dei dati./webapp: Contiene l'applicazione web Flask per l'analisi dei dati.I contributi sono benvenuti. Non esitare ad aprire un issue per segnalare un bug o suggerire una nuova funzionalità. Per aggiungere nuove query di analisi, modifica il file webapp/queries.json e invia una pull request.
Questo progetto è concesso in licenza sotto la MIT License. Vedi il file LICENSE per i dettagli.