
KcMapper es una herramienta de auditoría de seguridad para Keycloak. Exporta la configuración de tu Keycloak (realms, clients, users, roles, etc.) a una base de datos de grafos Neo4j. Esta representación permite un análisis complejo de relaciones y auditoría de seguridad a través de una interfaz web interactiva integrada con consultas predefinidas.
KcMapper es una herramienta para exportar los datos de configuración de Keycloak a una base de datos de grafos Neo4j. Esta representación permite analizar las relaciones entre realms, clientes, usuarios, grupos y roles. La herramienta incluye una interfaz web para ejecutar consultas Cypher predefinidas para análisis y auditoría de seguridad.
webapp/queries.json.Esta guía cubre la instalación local de KcMapper. Este método requiere que instales Python y Neo4j en tu máquina.
Puedes instalar Neo4j Community Edition siguiendo estos pasos:
# 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
Después de la instalación, navega a http://localhost:7474 en tu navegador y establece la contraseña inicial (la predeterminada es neo4j/neo4j).
Para otros sistemas (Windows, macOS, etc.):
Clonar el repositorio
git clone https://github.com/synacktiv/kcmapper.git
cd kcmapper
Crear un entorno virtual de Python (recomendado)
python -m venv venv
source venv/bin/activate # On Windows, use `venv\Scripts\activate`
Instalar las dependencias
pip install -r requirements.txt
Configurar las variables de entorno
Copia el archivo .env.example a .env.
cp .env.example .env
Modifica el archivo .env para que apunte a tu instancia de Keycloak y a tu base de datos Neo4j local.
# --- 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
Exportar datos
Ejecuta el comando export para poblar tu base de datos Neo4j.
python kcmapper_cli.py export
--clean:
python kcmapper_cli.py export --clean
Analizar datos Una vez completada la exportación, lanza la interfaz web de análisis.
python kcmapper_cli.py analyze
kcmapper_cli.py: Punto de entrada principal de la línea de comandos./processors: Contiene la lógica de extracción y carga para cada tipo de objeto de Keycloak./utils: Funciones de utilidad, principalmente para la conexión a Neo4j y la limpieza de datos./webapp: Contiene la aplicación web Flask para el análisis de datos.Las contribuciones son bienvenidas. No dudes en abrir un issue para reportar un bug o sugerir una nueva funcionalidad. Para añadir nuevas consultas de análisis, modifica el archivo webapp/queries.json y envía una pull request.
Este proyecto está licenciado bajo la Licencia MIT. Consulta el archivo LICENSE para más detalles.