حصلت فرق أمن التطبيقات والخصوصية على أداة داخلية جديدة لاكتشاف معلومات التعريف الشخصية (PII). تعمل أداة PIIHunter، التي طُرحت في 16 أكتوبر، على فحص قواعد بيانات PostgreSQL ومشاريع Jira لاكتشاف أي كشف عرضي للبيانات باستخدام طبقات تحليل متعددة.
طرق الكشف والميزات
تجمع الأداة بين ثلاث طبقات للكشف من أجل توفير تغطية شاملة. وتستخدم التعبيرات النمطية (Regex) الحتمية للعثور على رسائل البريد الإلكتروني، وأرقام الهواتف، وأرقام الضمان الاجتماعي، وبطاقات الائتمان. وللتعرف على الكيانات مثل الأسماء والمواقع والتواريخ، تعتمد الأداة على نماذج التعرف على الكيانات المسماة والتعلم الآلي (NER/ML) مثل Microsoft Presidio أو spaCy. بالإضافة إلى ذلك، يمكن للفرق استخدام النماذج اللغوية الكبيرة (LLMs) المستضافة ذاتياً كخيار إضافي لتصنيف النصوص الحرة الغامضة.
تتضمن الأداة فلاتر استثناء ذكية لتجاهل المحتوى المتوقع، مثل الإشارات (@mentions) وعناوين البريد الإلكتروني الخاصة بالشركة. وتحلل الأداة عينات بيانات تمثيلية لتقليل التأثير على الأداء من خلال أخذ العينات الذكي. ويُسجل كل فحص مع إعداداته، والطوابع الزمنية، وإصدارات النماذج للحفاظ على سجل تدقيق شامل، بينما يعمل التسجيل الآمن للخصوصية على حجب معلومات التعريف الشخصية تلقائياً في جميع السجلات والعينات المخزنة. وتُحفظ نتائج فحص Jira تلقائياً في ملف JSON أو CSV مؤرخ عند كل تشغيل.
فحص مخطط قاعدة البيانات
لفحص قاعدة بيانات PostgreSQL بحثاً عن معلومات التعريف الشخصية عبر الأعمدة، يجب على المستخدمين أولاً إعداد البيئة وتنزيل نموذج spaCy NER الذي يبلغ حجمه حوالي 800 ميجابايت.
# 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بعد ذلك، أنشئ دوراً بصلاحية القراءة فقط في قاعدة البيانات.
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 لتخزين نتائج الفحص. شغّل الأوامر التالية لاكتشاف الأعمدة، وإجراء الفحص، وعرض التقارير.
# 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
يمكن لأداة PIIHunter فحص مشكلات Jira والتعليقات بحثاً عن أي كشف عرضي لمعلومات التعريف الشخصية من خلال الاستعلام عن النشاط في الساعات المحددة الماضية، وهو ما لا يتطلب خادماً. ولا يُشترط إعداد قاعدة البيانات لهذه الميزة، ولكن التثبيت الأساسي ضروري.
cd PIIHunter
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
python -m spacy download en_core_web_lgلتكوين الوصول إلى Jira:
- انتقل إلى
https://id.atlassian.com، وافتح الأمان (Security)، ثم حدد رموز API (API tokens). - انقر على إنشاء رمز API (Create API token)، وامنحه اسماً، ثم انسخ الرمز.
أضف بيانات الاعتماد إلى ملف التكوين.
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تتحقق الأداة من بيانات الاعتماد، وتدرج المشاريع المتاحة، وتجلب عينة من المشكلات الحديثة. وفي حال فشل ذلك، يجب على المستخدمين التحقق من رمز API الخاص بهم والتأكد من تطابق البريد الإلكتروني مع الحساب.
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شغّل الفحص مع تحديد نافذة زمنية مخصصة.
# Scan last 24 hours
python -m pii_scanner.cli jira scan
# Custom lookback window
python -m pii_scanner.cli jira scan --hours 48خطافات الويب في الوقت الفعلي لمشاريع Jira
لإجراء الفحص في الوقت الفعلي، يمكن للأداة بدء خادم HTTP يتلقى أحداث Jira ويفحصها فور وصولها. ويتطلب ذلك نقطة نهاية يمكن الوصول إليها بشكل عام والتثبيت الأساسي.
# Secret used to verify requests genuinely come from Jira
JIRA_WEBHOOK_SECRET=your_webhook_secret
JIRA_WEBHOOK_PORT=8080ابدأ تشغيل خادم خطاف الويب.
python -m pii_scanner.cli jira webhook
# Custom port
python -m pii_scanner.cli jira webhook --port 9090قم بتكوين خطاف الويب في Jira:
- في Jira، انتقل إلى إعدادات المشروع (Project Settings)، وحدد خطافات الويب (Webhooks)، ثم انقر على إنشاء خطاف ويب (Create webhook).
- عيّن عنوان URL إلى
http://yourserver:8080/webhook. - ضمن الأحداث (Events)، حدد
Issue → createdوComment → created. - عيّن السر ليطابق سر خطاف الويب في ملف التكوين واحفظ الإعدادات.
سترسل Jira الآن طلب POST إلى الخادم لكل مشكلة وتعليق جديد، مما يتيح للأداة معالجة كل منها على الفور.
إرشادات النشر والأمان
صُممت الأداة خصيصاً للاستخدام الداخلي فقط ضمن بيئة آمنة وخاضعة للرقابة. وتعمل بتصميم يضع الأمان في المقام الأول، حيث تستخدم وصولاً بصلاحية القراءة فقط لقاعدة البيانات، ولا تجري أي مكالمات خارجية لواجهة برمجة التطبيقات، وتضمن الحد الأدنى من الاحتفاظ بمعلومات التعريف الشخصية. وبالنسبة لإعدادات خطاف الويب في بيئة الإنتاج، يحذر المطورون من تعريض uvicorn مباشرة للإنترنت.
كُتب هذا المقال بالذكاء الاصطناعي اعتماداً على ما نشره: kitploit.com.