
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 是一个将 Keycloak 配置数据导出到 Neo4j 图数据库的工具。这种表示方式允许分析 realm、客户端、用户、组和角色之间的关系。该工具包含一个 Web 界面,用于运行预定义的 Cypher 查询以进行分析和安全审计。
webapp/queries.json 文件添加自定义分析查询。本指南介绍 KcMapper 的本地安装方法。此方法要求您在机器上安装 Python 和 Neo4j。
您可以按照以下步骤安装 Neo4j Community Edition:
# 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
安装完成后,在浏览器中访问 http://localhost:7474 并设置初始密码(默认为 neo4j/neo4j)。
对于其他系统(Windows、macOS 等):
克隆仓库
git clone https://github.com/synacktiv/kcmapper.git
cd kcmapper
设置 Python 虚拟环境(推荐)
python -m venv venv
source venv/bin/activate # On Windows, use `venv\Scripts\activate`
安装依赖
pip install -r requirements.txt
配置环境变量
将 .env.example 文件复制为 .env。
cp .env.example .env
修改 .env 文件,使其指向您的 Keycloak 实例和本地 Neo4j 数据库。
# --- 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
导出数据
运行 export 命令以填充您的 Neo4j 数据库。
python kcmapper_cli.py export
--clean 选项:
python kcmapper_cli.py export --clean
分析数据 导出完成后,启动 Web 分析界面。
python kcmapper_cli.py analyze
kcmapper_cli.py:主要命令行入口点。/processors:包含每种 Keycloak 对象类型的提取和加载逻辑。/utils:工具函数,主要用于 Neo4j 连接和数据清理。/webapp:包含用于数据分析的 Flask Web 应用程序。欢迎贡献。请随时提出问题(issue)以报告错误或建议新功能。要添加新的分析查询,请修改 webapp/queries.json 文件并提交拉取请求(pull request)。
本项目基于 MIT 许可证授权。详情请参阅 LICENSE 文件。