
KcMapper هي أداة تدقيق أمني لـ Keycloak. تقوم بتصدير إعدادات Keycloak الخاصة بك (realms، clients، users، roles، إلخ) إلى قاعدة بيانات Neo4j للرسوم البيانية. يتيح هذا التمثيل تحليل العلاقات المعقدة والتدقيق الأمني من خلال واجهة ويب تفاعلية مدمجة مع استعلامات معرّفة مسبقًا.
KcMapper هي أداة لتصدير بيانات إعداد Keycloak إلى قاعدة بيانات رسوم بيانية Neo4j. يتيح هذا التمثيل تحليل العلاقات بين النطاقات (Realms) والعملاء (Clients) والمستخدمين والمجموعات والأدوار. تتضمن الأداة واجهة ويب لتشغيل استعلامات 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
تحليل البيانات بمجرد اكتمال التصدير، شغّل واجهة التحليل عبر الويب.
python kcmapper_cli.py analyze
kcmapper_cli.py: نقطة الدخول الرئيسية لسطر الأوامر./processors: يحتوي على منطق الاستخراج والتحميل لكل نوع من أنواع كائنات Keycloak./utils: دوال مساعدة، أساسًا للاتصال بـ Neo4j وتنظيف البيانات./webapp: يحتوي على تطبيق Flask للويب لتحليل البيانات.المساهمات مرحّب بها. لا تتردد في فتح issue للإبلاغ عن خطأ أو اقتراح ميزة جديدة. لإضافة استعلامات تحليل جديدة، عدّل ملف webapp/queries.json وقدّم طلب سحب (pull request).
هذا المشروع مرخّص بموجب رخصة MIT. راجع ملف LICENSE للحصول على التفاصيل.