
KcMapper は、Keycloak の設定データを Neo4j グラフデータベースにエクスポートするためのツールです。この表現により、レルム、クライアント、ユーザー、グループ、ロール間の関係を分析できます。このツールには、分析とセキュリティ監査のための定義済み Cypher クエリを実行する Web インターフェースが含まれています。
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
自分の Keycloak インスタンスとローカルの Neo4j データベースを指すように .env ファイルを変更します。
# --- 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 ファイルを変更し、プルリクエストを送信してください。
このプロジェクトは MIT ライセンスの下でライセンスされています。詳細については、LICENSE ファイルを参照してください。