Skip to main content
Glama

mcp-dbutils

MIT License
81
  • Linux
  • Apple
security.md18.8 kB
# بنية الأمان *[English](../../en/technical/security.md) | [中文](../../zh/technical/security.md) | [Français](../../fr/technical/security.md) | [Español](../../es/technical/security.md) | العربية | [Русский](../../ru/technical/security.md)* يفصل هذا المستند بنية الأمان لـ MCP Database Utilities، موضحًا الآليات والمبادئ التي تضمن وصولًا آمنًا إلى قواعد البيانات لمساعدي الذكاء الاصطناعي. ## نموذج الاتصال وبنية الأمان ينفذ MCP Database Utilities نموذج اتصال آمن مصمم لحماية بياناتك في كل خطوة. يوضح الرسم البياني التالي كيفية تدفق البيانات بين المكونات مع الحفاظ على الأمان: ```mermaid flowchart LR subgraph User["بيئة المستخدم"] Client["عميل الذكاء الاصطناعي<br>(Claude/Cursor)"] ConfigFile["ملف التكوين<br>(YAML)"] end subgraph MCP["MCP Database Utilities"] MCPService["خدمة MCP"] ConnectionManager["مدير الاتصالات"] QueryProcessor["معالج الاستعلامات<br>(للقراءة فقط)"] end subgraph Databases["طبقة قاعدة البيانات"] DB1["قاعدة البيانات 1"] DB2["قاعدة البيانات 2"] DBn["قاعدة البيانات n"] end %% تدفق الاتصال Client-- "الخطوة 1:<br>طلب البيانات<br>(لغة طبيعية)" -->MCPService ConfigFile-. "تحميل عند البدء<br>(تفاصيل الاتصال)" .->MCPService MCPService-- "الخطوة 2:<br>معالجة الطلب" -->ConnectionManager ConnectionManager-- "الخطوة 3:<br>فتح الاتصال<br>(عند الطلب)" -->Databases ConnectionManager-- "الخطوة 4:<br>إرسال الاستعلام<br>(SELECT فقط)" -->QueryProcessor QueryProcessor-- "الخطوة 5:<br>تنفيذ الاستعلام" -->Databases Databases-- "الخطوة 6:<br>إرجاع النتائج" -->QueryProcessor QueryProcessor-- "الخطوة 7:<br>تنسيق النتائج" -->MCPService MCPService-- "الخطوة 8:<br>نقل النتائج" -->Client ConnectionManager-- "الخطوة 9:<br>إغلاق الاتصال<br>(بعد الاكتمال)" -->Databases %% الأنماط classDef user fill:#e1f5fe,stroke:#01579b,stroke-width:2px,color:#01579b classDef mcp fill:#e8f5e9,stroke:#2e7d32,stroke-width:2px,color:#2e7d32 classDef db fill:#fff3e0,stroke:#e65100,stroke-width:2px,color:#e65100 class User user class MCP mcp class Databases db %% ملاحظات الأمان style ConnectionManager stroke-dasharray: 5 5 style QueryProcessor stroke-dasharray: 5 5 ``` ## مبادئ الأمان تم تصميم MCP Database Utilities مع وضع الأمان كأولوية قصوى، باتباع هذه المبادئ الأساسية: 1. **الدفاع في العمق**: طبقات متعددة من الأمان لحماية البيانات 2. **مبدأ الامتياز الأدنى**: الحد الأدنى من الوصول اللازم للعمل 3. **الأمان بالتصميم**: الأمان مدمج منذ البداية، وليس مضافًا لاحقًا 4. **الشفافية**: بنية مفتوحة وقابلة للتحقق 5. **العزل**: فصل صارم للبيئات والاتصالات ## آليات الأمان الرئيسية ### 1. عمليات للقراءة فقط بشكل صارم جميع التفاعلات مع قواعد البيانات مقيدة بعمليات القراءة فقط: - **تحليل نحوي كامل**: يتم تحليل كل استعلام SQL بالكامل للتأكد من أنه للقراءة فقط - **حظر عمليات التعديل**: يتم حظر جميع الأوامر التي تعدل البيانات (INSERT، UPDATE، DELETE، إلخ) تلقائيًا - **حظر أوامر DDL**: يتم حظر الأوامر التي تعدل بنية قاعدة البيانات (CREATE، ALTER، DROP، إلخ) - **التحقق على مستويات متعددة**: يتم التحقق من الاستعلامات من خلال محلل SQL وفحوصات خاصة بكل نوع من قواعد البيانات ```python # مثال على التحقق من صحة الاستعلام (شبه كود) def validate_query(query): # تحليل نحوي للاستعلام parsed_query = sql_parser.parse(query) # التحقق من نوع الاستعلام if not parsed_query.is_select(): raise SecurityException("يُسمح فقط باستعلامات SELECT") # التحقق من البنود الخطرة if parsed_query.has_dangerous_clauses(): raise SecurityException("تم اكتشاف بنود غير مسموح بها") # تحقق خاص بقاعدة البيانات db_adapter.validate_read_only(query) return parsed_query ``` ### 2. لا وصول مباشر إلى قاعدة البيانات تضمن البنية أن الذكاء الاصطناعي لا يملك أبدًا وصولًا مباشرًا إلى قواعد البيانات: - **طبقة تجريد**: تمر جميع الاستعلامات عبر طبقات تجريد متعددة - **التحقق من صحة المدخلات**: يتم التحقق من صحة جميع المدخلات وتنظيفها - **استعلامات معلمة**: استخدام منهجي للاستعلامات المعلمة لمنع حقن SQL - **عزل الاتصالات**: كل اتصال معزول ويدار من قبل الخدمة ### 3. اتصالات معزولة اتصالات قواعد البيانات معزولة بشكل صارم: - **مجمع اتصالات مخصص**: كل تكوين لقاعدة بيانات يستخدم مجمع الاتصالات الخاص به - **معاملات للقراءة فقط**: جميع المعاملات مكونة صراحة في وضع القراءة فقط - **مهل زمنية تلقائية**: الاتصالات لها مهل زمنية قابلة للتكوين لتجنب الاتصالات المستمرة - **إغلاق مناسب**: يتم إغلاق الاتصالات بشكل صحيح بعد الاستخدام ```yaml # مثال على التكوين مع معلمات الأمان connections: secure-postgres: type: postgres host: db.example.com port: 5432 dbname: analytics user: readonly_user password: "********" ssl: mode: verify-full cert: /path/to/cert.pem key: /path/to/key.pem root: /path/to/root.crt pool: max_size: 5 timeout: 30 ``` ### 4. الاتصال عند الطلب يتم إنشاء اتصالات قواعد البيانات فقط عند الحاجة: - **اتصال متأخر**: يتم إنشاء الاتصالات فقط عند تنفيذ استعلام فعليًا - **فصل سريع**: يتم إعادة الاتصالات إلى المجمع في أقرب وقت ممكن - **تقييد الاتصالات**: عدد الاتصالات المتزامنة القصوى قابل للتكوين - **مراقبة الاتصالات**: تتم مراقبة جميع الاتصالات لاكتشاف الشذوذ ### 5. مهل زمنية تلقائية يتم تطبيق المهل الزمنية على مستويات متعددة لمنع سوء الاستخدام: - **مهلة الاستعلام**: حد زمني لتنفيذ استعلام - **مهلة الاتصال**: حد زمني لإنشاء اتصال - **مهلة الخمول**: إغلاق الاتصالات الخاملة بعد فترة قابلة للتكوين - **مهلة عامة**: حد زمني إجمالي للجلسة ### 6. حماية بيانات الاعتماد بيانات اعتماد قواعد البيانات محمية: - **تخزين آمن**: لا يتم تخزين كلمات المرور أبدًا بشكل نصي في الذاكرة - **إخفاء في السجلات**: يتم إخفاء المعلومات الحساسة في جميع السجلات - **دعم لمديري الأسرار**: تكامل ممكن مع حلول مثل HashiCorp Vault، AWS Secrets Manager، إلخ - **تناوب بيانات الاعتماد**: دعم للتناوب الدوري لبيانات الاعتماد ### 7. أمان الاتصالات الاتصالات مع قواعد البيانات مؤمنة: - **دعم SSL/TLS**: اتصالات مشفرة لجميع قواعد البيانات المدعومة - **التحقق من الشهادات**: خيار للتحقق من شهادات خوادم قواعد البيانات - **تكوينات SSL متقدمة**: خيارات لتكوين معلمات SSL/TLS بدقة - **بروتوكولات آمنة**: استخدام إصدارات حديثة وآمنة من البروتوكولات ```yaml # مثال على تكوين SSL لـ PostgreSQL connections: postgres-ssl: type: postgres host: secure-db.example.com port: 5432 dbname: analytics user: readonly_user password: "********" ssl: mode: verify-full # الخيارات: disable, allow, prefer, require, verify-ca, verify-full cert: /path/to/client-cert.pem key: /path/to/client-key.pem root: /path/to/root.crt ``` ## تدابير حماية الخصوصية ### 1. المعالجة المحلية تتم جميع العمليات محليًا: - **لا نقل للبيانات**: البيانات لا تغادر أبدًا البيئة المحلية - **لا تنزيل للمخطط**: مخططات قاعدة البيانات لا يتم إرسالها إلى خدمات خارجية - **لا قياس عن بعد**: لا يتم جمع أو إرسال أي بيانات استخدام ### 2. الحد الأدنى من كشف البيانات تم تصميم الخدمة لتقليل كشف البيانات: - **تقييد النتائج**: عدد الصفوف القصوى المرجعة قابل للتكوين - **ترقيم الصفحات التلقائي**: مجموعات النتائج الكبيرة يتم ترقيم صفحاتها - **تصفية الأعمدة الحساسة**: إمكانية تكوين الأعمدة لاستبعادها من النتائج - **إخفاء البيانات**: خيار لإخفاء البيانات الحساسة تلقائيًا (PII، إلخ) ### 3. حماية بيانات الاعتماد بيانات اعتماد الاتصال محمية: - **لا كشف لبيانات الاعتماد**: بيانات الاعتماد لا يتم كشفها أبدًا للذكاء الاصطناعي - **تجريد الاتصالات**: يستخدم الذكاء الاصطناعي أسماء اتصال منطقية، وليس التفاصيل الفعلية - **التحقق من الأذونات**: التحقق من أن الحسابات المستخدمة لها أذونات الحد الأدنى ### 4. إخفاء البيانات الحساسة يمكن إخفاء البيانات الحساسة تلقائيًا: - **اكتشاف PII**: خيار لاكتشاف وإخفاء معلومات التعريف الشخصية تلقائيًا - **قواعد إخفاء قابلة للتكوين**: إمكانية تحديد قواعد إخفاء مخصصة - **تسجيل آمن**: البيانات الحساسة يتم إخفاؤها في جميع السجلات ## أفضل ممارسات الأمان ### التكوين الآمن توصيات للتكوين الآمن: 1. **استخدم حسابات للقراءة فقط**: ```sql -- مثال لـ PostgreSQL CREATE ROLE readonly_user WITH LOGIN PASSWORD 'secure_password'; GRANT CONNECT ON DATABASE analytics TO readonly_user; GRANT USAGE ON SCHEMA public TO readonly_user; GRANT SELECT ON ALL TABLES IN SCHEMA public TO readonly_user; ``` 2. **قم بتفعيل SSL/TLS**: ```yaml connections: secure-db: # ... ssl: mode: verify-full # ... ``` 3. **قيد الوصول إلى الجداول**: ```yaml connections: limited-access: # ... allowed_tables: - public.products - public.categories - analytics.sales ``` 4. **قم بتكوين مهل زمنية مناسبة**: توفر أدوات MCP Database Utilities ثلاثة معلمات للمهلة الزمنية قابلة للتكوين لضمان أمان اتصالات قاعدة البيانات والاستخدام الفعال للموارد: **مهلة الاستعلام (query_timeout)**: - **الغرض**: تحديد الحد الأقصى لوقت تنفيذ استعلام SQL واحد. سيتم إنهاء الاستعلامات التي تتجاوز هذا الوقت تلقائيًا. - **الوحدة**: ثوان - **القيمة الافتراضية**: 60 ثانية - **حالات الاستخدام**: يمنع الاستعلامات المعقدة أو استعلامات الجداول الكبيرة من استهلاك موارد مفرطة - **التوصيات**: - الاستعلامات العادية: 30-60 ثانية - استعلامات تحليل البيانات: 300-600 ثانية - إنشاء التقارير: حتى 1800 ثانية **مهلة الاتصال (connection_timeout)**: - **الغرض**: تحديد الحد الأقصى لوقت الانتظار لإنشاء اتصال بقاعدة البيانات. سيتم إرجاع أخطاء الاتصال إذا تعذر إنشاء اتصال خلال هذا الوقت. - **الوحدة**: ثوان - **القيمة الافتراضية**: 10 ثوان - **حالات الاستخدام**: مفيد في بيئات الشبكة غير المستقرة أو عندما يكون حمل قاعدة البيانات مرتفعًا - **التوصيات**: - قواعد البيانات المحلية: 5-10 ثوان - قواعد البيانات البعيدة: 15-30 ثانية - بيئات الحمل العالي: حتى 60 ثانية **مهلة الخمول (idle_timeout)**: - **الغرض**: تحديد المدة التي يمكن أن يظل فيها الاتصال خاملاً قبل إغلاقه تلقائيًا. هذا يساعد على تحرير موارد الاتصال غير المستخدمة. - **الوحدة**: ثوان - **القيمة الافتراضية**: 300 ثانية (5 دقائق) - **حالات الاستخدام**: إدارة الاتصالات الخاملة في مجمع الاتصالات - **التوصيات**: - الاستخدام عالي التردد: 600-1200 ثانية - الاستخدام العام: 300-600 ثانية - الاستخدام منخفض التردد: 60-180 ثانية **العلاقات بين المعلمات**: - عادة idle_timeout > query_timeout > connection_timeout - إذا كانت استعلاماتك تحتاج إلى التشغيل لفترة طويلة، تأكد من أن query_timeout طويل بما يكفي - إذا كان idle_timeout قصيرًا جدًا، فقد يتسبب ذلك في إنشاء وتدمير متكرر للاتصالات، مما يؤثر على الأداء **مثال التكوين**: ```yaml connections: analytics-db: type: postgres host: analytics.example.com port: 5432 dbname: analytics user: analyst password: secure_password # تكوين المهل الزمنية (جميع القيم بالثواني) query_timeout: 300 # يسمح باستعلامات تحليلية طويلة المدى connection_timeout: 15 # وقت الانتظار لاتصال قاعدة البيانات البعيدة idle_timeout: 600 # الحفاظ على الاتصالات نشطة للاستعلامات المتكررة ``` **ملاحظات مهمة**: - تعيين مهل زمنية قصيرة جدًا قد يؤدي إلى مقاطعة الاستعلامات المشروعة - تعيين مهل زمنية طويلة جدًا قد يؤدي إلى إهدار الموارد وخلق مخاطر أمنية محتملة - قم بضبط هذه القيم بناءً على حالة الاستخدام المحددة وأداء قاعدة البيانات الخاصة بك ### المراقبة والتدقيق توصيات للمراقبة والتدقيق: 1. **قم بتفعيل التسجيل**: ```yaml logging: level: INFO # الخيارات: DEBUG, INFO, WARNING, ERROR file: /path/to/dbutils.log format: "%(asctime)s - %(name)s - %(levelname)s - %(message)s" ``` 2. **راقب الاستعلامات**: ```yaml monitoring: log_queries: true log_slow_queries: true slow_query_threshold: 5 # ثوان ``` 3. **قم بتكوين التنبيهات**: ```yaml alerts: failed_connections: threshold: 5 period: 60 # ثوان action: "email:admin@example.com" ``` ## تدقيق الأمان يخضع MCP Database Utilities بانتظام لتدقيقات أمنية: 1. **تحليل الكود الثابت**: يتم تحليل الكود لاكتشاف الثغرات المحتملة 2. **اختبارات الاختراق**: يتم إجراء اختبارات اختراق لتحديد نقاط الضعف 3. **مراجعة الكود**: يتم مراجعة الكود من قبل خبراء في الأمان 4. **تحليل التبعيات**: يتم تحليل التبعيات لاكتشاف الثغرات المعروفة ## إدارة الثغرات عملية إدارة الثغرات: 1. **الإبلاغ**: يمكن الإبلاغ عن الثغرات عبر GitHub أو البريد الإلكتروني 2. **التقييم**: يتم تقييم كل ثغرة لتحديد خطورتها 3. **التصحيح**: يتم تصحيح الثغرات في أقرب وقت ممكن 4. **التواصل**: يتم إبلاغ المستخدمين بالثغرات والتصحيحات ## الخلاصة الأمان هو جوهر MCP Database Utilities. تم تصميم البنية لضمان أن مساعدي الذكاء الاصطناعي يمكنهم الوصول إلى بيانات قواعد البيانات بطريقة آمنة، دون المساس بسرية أو سلامة البيانات. تضمن طبقات الحماية المتعددة، والوصول للقراءة فقط بشكل صارم، وآليات العزل أن البيانات محمية في جميع الأوقات.

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/donghao1393/mcp-dbutils'

If you have feedback or need assistance with the MCP directory API, please join our Discord server