
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 ist ein Werkzeug zum Exportieren von Keycloak-Konfigurationsdaten in eine Neo4j-Graphdatenbank. Diese Darstellung ermöglicht die Analyse der Beziehungen zwischen Realms, Clients, Benutzern, Gruppen und Rollen. Das Tool enthält eine Weboberfläche zum Ausführen vordefinierter Cypher-Abfragen für Analyse und Sicherheitsaudits.
webapp/queries.json hinzugefügt werden.Dieser Leitfaden behandelt die lokale Installation von KcMapper. Diese Methode erfordert, dass Sie Python und Neo4j auf Ihrem Rechner installieren.
Sie können Neo4j Community Edition mit den folgenden Schritten installieren:
# 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
Nach der Installation öffnen Sie http://localhost:7474 in Ihrem Browser und legen Sie das anfängliche Passwort fest (Standard ist neo4j/neo4j).
Für andere Systeme (Windows, macOS usw.):
Klonen Sie das Repository
git clone https://github.com/synacktiv/kcmapper.git
cd kcmapper
Richten Sie eine virtuelle Python-Umgebung ein (empfohlen)
python -m venv venv
source venv/bin/activate # On Windows, use `venv\Scripts\activate`
Abhängigkeiten installieren
pip install -r requirements.txt
Umgebungsvariablen konfigurieren
Kopieren Sie die Datei .env.example nach .env.
cp .env.example .env
Ändern Sie die Datei .env, sodass sie auf Ihre Keycloak-Instanz und Ihre lokale Neo4j-Datenbank verweist.
# --- 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
Daten exportieren
Führen Sie den Befehl export aus, um Ihre Neo4j-Datenbank zu befüllen.
python kcmapper_cli.py export
--clean:
python kcmapper_cli.py export --clean
Daten analysieren Sobald der Export abgeschlossen ist, starten Sie die Web-Analyseoberfläche.
python kcmapper_cli.py analyze
kcmapper_cli.py: Haupt-Einstiegspunkt für die Befehlszeile./processors: Enthält die Extraktions- und Ladungslogik für jeden Keycloak-Objekttyp./utils: Hilfsfunktionen, hauptsächlich für die Neo4j-Verbindung und Datenbereinigung./webapp: Enthält die Flask-Webanwendung zur Datenanalyse.Beiträge sind willkommen. Eröffnen Sie gerne ein Issue, um einen Fehler zu melden oder eine neue Funktion vorzuschlagen. Um neue Analyseabfragen hinzuzufügen, ändern Sie die Datei webapp/queries.json und reichen Sie einen Pull-Request ein.
Dieses Projekt ist unter der MIT-Lizenz lizenziert. Weitere Details finden Sie in der Datei LICENSE.