
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.
O KcMapper é uma ferramenta para exportar dados de configuração do Keycloak para um banco de dados de grafo Neo4j. Essa representação permite a análise das relações entre realms, clients, usuários, grupos e papéis. A ferramenta inclui uma interface web para executar consultas Cypher pré-definidas para análise e auditoria de segurança.
webapp/queries.json.Este guia cobre a instalação local do KcMapper. Este método exige que você instale Python e Neo4j na sua máquina.
Você pode instalar o Neo4j Community Edition seguindo estes passos:
# 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
Após a instalação, acesse http://localhost:7474 no seu navegador e defina a senha inicial (o padrão é neo4j/neo4j).
Para outros sistemas (Windows, macOS, etc.):
Clone o repositório
git clone https://github.com/synacktiv/kcmapper.git
cd kcmapper
Configure um ambiente virtual Python (recomendado)
python -m venv venv
source venv/bin/activate # On Windows, use `venv\Scripts\activate`
Instale as dependências
pip install -r requirements.txt
Configure as variáveis de ambiente
Copie o arquivo .env.example para .env.
cp .env.example .env
Modifique o arquivo .env para apontar para sua instância do Keycloak e para o seu banco de dados 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 Dados
Execute o comando export para popular seu banco de dados Neo4j.
python kcmapper_cli.py export
--clean:
python kcmapper_cli.py export --clean
Analisar Dados Após a exportação ser concluída, inicie a interface web de análise.
python kcmapper_cli.py analyze
kcmapper_cli.py: Ponto de entrada principal da linha de comando./processors: Contém a lógica de extração e carregamento para cada tipo de objeto do Keycloak./utils: Funções utilitárias, principalmente para conexão com o Neo4j e limpeza de dados./webapp: Contém o aplicativo web Flask para análise de dados.Contribuições são bem-vindas. Sinta-se à vontade para abrir uma issue para relatar um bug ou sugerir um novo recurso. Para adicionar novas consultas de análise, modifique o arquivo webapp/queries.json e envie um pull request.
Este projeto é licenciado sob a Licença MIT. Consulte o arquivo LICENSE para obter detalhes.