
يفحص قواعد بيانات PostgreSQL ومشكلات Jira بحثًا عن معلومات التعريف الشخصية (PII) باستخدام regex وNER/ML وكشف اختياري عبر LLM مستضاف ذاتيًا، مع تقارير محجوبة وتسجيل تدقيق.
أداة أمنية داخلية لاكتشاف المعلومات الشخصية القابلة للتعريف (PII) في قواعد بيانات PostgreSQL ومشاريع Jira
ماسح PII بالذكاء الاصطناعي هو أداة شاملة تركز على الأمان، مصممة لفرق أمن التطبيقات والخصوصية لاكتشاف وفهرسة المعلومات الشخصية القابلة للتعريف (PII). يدعم هدفين للمسح:
يستخدم الاكتشاف خط أنابيب من ثلاث طبقات:
@mentions وعناوين البريد الإلكتروني الخاصة بالشركةحرج: صُممت هذه الأداة للاستخدام الداخلي فقط ضمن بيئة آمنة ومضبوطة.
| ضابط الأمان | التنفيذ |
|---|---|
| منع تسريب البيانات | لا استدعاءات API من أطراف ثالثة؛ يجب أن تكون نقاط نهاية LLM مستضافة ذاتيًا |
| وصول بأقل صلاحية | دور قاعدة بيانات للقراءة فقط دون صلاحية كتابة على بيانات التطبيق |
| تقليل PII | تخزّن النتائج البيانات الوصفية فقط وعينات منقّحة بشدة |
| مسار التدقيق | تُسجَّل جميع عمليات المسح مع تفاصيل من/ماذا/متى/كيف |
| تسجيل آمن | سجلات منظمة مع تنقيح تلقائي لحقول PII |
| نقل مشفّر | SSL/TLS مطلوب لجميع اتصالات قاعدة البيانات |
| التحقق من خطافات الويب | التحقق من توقيع HMAC-SHA256 لأحداث Jira الواردة |
استخدم هذا إذا كنت تريد مسح قاعدة بيانات PostgreSQL بحثًا عن PII عبر الأعمدة.
# Clone the repository
cd PIIHunter
# Create virtual environment
python3 -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
# Install dependencies
pip install -r requirements.txt
# Download spaCy NER model (~800MB)
python -m spacy download en_core_web_lg
نفّذ هذا بصفتك مستخدمًا فائقًا في PostgreSQL:
CREATE ROLE pii_scanner_readonly WITH LOGIN PASSWORD 'your_secure_password';
GRANT CONNECT ON DATABASE your_database TO pii_scanner_readonly;
GRANT USAGE ON SCHEMA public, app_data TO pii_scanner_readonly;
GRANT SELECT ON ALL TABLES IN SCHEMA public, app_data TO pii_scanner_readonly;
cp .env.example .env
# Fill in DB_HOST, DB_PORT, DB_NAME, DB_USER, DB_PASSWORD
ينشئ مخطط security_pii حيث يتم تخزين نتائج الفحص. شغّله مرة واحدة:
python -m pii_scanner.cli init-schema
# Preview candidate columns (no data read)
python -m pii_scanner.cli discover
# Run PII detection
python -m pii_scanner.cli scan --sample-size 1000
# View results
python -m pii_scanner.cli report
python -m pii_scanner.cli test-connection
استخدم هذا إذا كنت تريد فحص مشكلات Jira والتعليقات بحثًا عن تعرّض معلومات التعريف الشخصية (PII) عن طريق الخطأ.
التثبيت الأساسي (الخطوة 1 أعلاه) مطلوب أولًا. إعداد قاعدة البيانات (الخطوات 2–4) غير مطلوب إذا كنت تريد فحص Jira فقط.
يستقصي Jira عند الطلب بحثًا عن النشاط في آخر N ساعة. لا حاجة إلى خادم.
الخطوة 1 — التثبيت الأساسي (إذا لم يكن قد تم بالفعل)
cd PIIHunter
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
python -m spacy download en_core_web_lg
الخطوة 2 — إنشاء رمز API لـ Jira
https://id.atlassian.com → Security → API tokensالخطوة 3 — تهيئة البيئة
cp .env.example .env
قم بتحرير .env واملأ تفاصيل Jira الخاصة بك:
JIRA_URL=https://yourcompany.atlassian.net
[email protected]
JIRA_API_TOKEN=your_api_token_here
# Optional — leave empty to scan all projects
# JIRA_PROJECT_KEYS=ENG,OPS,SUPPORT
# Emails from these domains will NOT be flagged as PII
COMPANY_EMAIL_DOMAINS=yourcompany.com
الخطوة 4 — اختبار الاتصال
يتحقق من بيانات الاعتماد الخاصة بك، ويسرد المشاريع التي يمكن الوصول إليها، ويجلب عينة من المشكلات الأخيرة:
python -m pii_scanner.cli jira test
Expected output:
Testing connection to https://yourcompany.atlassian.net...
Auth ✓ logged in as Jane Smith ([email protected])
Projects ✓ 3 accessible: ENG, OPS, SUPPORT
Project ENG ✓ accessible
Recent issues (no time filter):
ENG-101 Fix login timeout on mobile
ENG-100 Update password policy
إذا فشل هذا، تحقق من رمز API الخاص بك ومن أن JIRA_EMAIL يطابق الحساب الذي تم إنشاء الرمز له.
الخطوة 5 — تشغيل فحص
# Scan last 24 hours
python -m pii_scanner.cli jira scan
# Custom lookback window
python -m pii_scanner.cli jira scan --hours 48
يبدأ خادم HTTP يستقبل أحداث Jira ويفحصها فورًا عند وصولها. يتطلب نقطة نهاية يمكن الوصول إليها علنًا.
الخطوة 1 — التثبيت الأساسي + إعداد REST API (أكمل الخطوات 1–4 من القسم الفرعي أ أولاً)
الخطوة 2 — تثبيت تبعيات webhook
pip install fastapi uvicorn
الخطوة 3 — أضف إعداد webhook إلى .env
# Secret used to verify requests genuinely come from Jira
JIRA_WEBHOOK_SECRET=your_webhook_secret
JIRA_WEBHOOK_PORT=8080
الخطوة 4 — تشغيل خادم webhook
python -m pii_scanner.cli jira webhook
# Custom port
python -m pii_scanner.cli jira webhook --port 9090
الخطوة 5 — تسجيل الـ webhook في Jira
http://yourserver:8080/webhookIssue → createdComment → createdJIRA_WEBHOOK_SECRET في ملف .env الخاص بكسيقوم Jira الآن بإرسال POST إلى خادمك لكل مشكلة وتعليق جديد. يعالج الماسح الضوئي كل واحد منها فورًا.
نقاط النهاية المتاحة:
| نقطة النهاية | الغرض |
|---|---|
POST /webhook | يستقبل أحداث Jira |
GET /health | يؤكد أن الخادم يعمل |
ملاحظة الإنتاج: لا تعرّض uvicorn مباشرةً للإنترنت. راجع قسم إعداد Webhook للإنتاج ضمن المواضيع المتقدمة.
تُدار جميع الإعدادات عبر متغيرات البيئة في .env. انسخ .env.example للبدء.