0Pricing
Linux Server Deployment & SSH Mastery · درس

تأمين اتصالات قواعد البيانات

اضبطوا اتصالات آمنة بقاعدة البيانات باستخدام SSL/TLS، وقيّدوا الوصول استنادًا إلى عناوين IP لتعزيز الأمان.

تأمين اتصالات قواعد البيانات درس مجاني في Linux Server Deployment & SSH Mastery على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Linux Server Deployment & SSH Mastery، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Linux Server Deployment & SSH Mastery 4 دروس في المجموع.

لماذا نؤمّن اتصالات قاعدة البيانات؟

عندما تتصل تطبيقاتكم بقاعدة بيانات، غالبًا ما تنتقل البيانات الحساسة عبر الشبكة. ومن دون الأمان المناسب، قد يتم اعتراض هذه البيانات أو التلاعب بها.

  • السرية: تمنع الاطلاع غير المصرح به على البيانات.
  • السلامة: تضمن عدم تغيير البيانات أثناء النقل.
  • المصادقة: تتحقق من هوية كل من العميل والخادم.

يركز هذا الدرس على طريقتين أساسيتين: تشفير SSL/TLS وقيود الوصول المستندة إلى عناوين IP.

فهم SSL/TLS لقواعد البيانات

SSL/TLS (Secure Sockets Layer/Transport Layer Security) هي التقنية القياسية لإنشاء اتصال مشفّر بين خادم ويب وعميل (أو بين خادم قاعدة بيانات وعميل في حالتنا).

  • تشفّر جميع البيانات المتبادلة، مما يحميها من التنصت.
  • تستخدم شهادات رقمية للتحقق من هوية الخادم (والعميل اختياريًا).
  • تُعد ضرورية لحماية بيانات مثل كلمات المرور والتفاصيل المالية والمعلومات الشخصية أثناء النقل.

إنشاء شهادات SSL/TLS

لاستخدام SSL/TLS، يحتاج خادم قاعدة البيانات إلى شهادة رقمية ومفتاح خاص. ويثبت هذان العنصران هوية الخادم.

  • الشهادات الموقعة ذاتيًا: الأسهل إنشاءً للاختبار أو للشبكات الداخلية، لكنها غير موثوقة افتراضيًا.
  • الشهادات الموقعة من CA: تصدرها جهة إصدار الشهادات (CA) وتحظى بثقة عالمية، لذا فهي مثالية لبيئات الإنتاج.

سنفترض في هذا الدرس أن لديكم شهادة خادم (server.crt) ومفتاحًا خاصًا (server.key) جاهزين.

PostgreSQL: تمكين SSL

لتمكين SSL في PostgreSQL، تحتاجون إلى تعديل ملف postgresql.conf. ويخبر ذلك الخادمَ بالاستماع إلى الاتصالات الآمنة وبمكان العثور على شهاداتكم.

المعلمات الأساسية:

  • ssl = on: يفعّل SSL.
  • ssl_cert_file: مسار شهادة الخادم.
  • ssl_key_file: مسار المفتاح الخاص بالخادم.

بعد إجراء التغييرات، أعيدوا تشغيل PostgreSQL.

# Snippet from postgresql.conf

ssl = on
ssl_cert_file = '/etc/ssl/certs/postgresql/server.crt'
ssl_key_file = '/etc/ssl/private/postgresql/server.key'
ssl_crl_file = '' # Optional: Certificate Revocation List

# Remember to restart PostgreSQL after changes!

MySQL: تفعيل SSL/TLS

في MySQL، ستقومون بتهيئة SSL/TLS في ملف my.cnf (أو my.ini في Windows)، وعادةً ضمن القسم [mysqld].

تحددون مسارات شهادة الخادم والمفتاح الخاص، واختياريًا شهادة مرجع مصدق (CA) إذا كنتم تستخدمونها للتحقق من شهادات العملاء.

بعد إجراء التعديلات، أعيدوا تشغيل خدمة MySQL لكي تصبح التغييرات سارية المفعول.

# Snippet from my.cnf

[mysqld]
ssl_ca = /etc/mysql/certs/ca.pem
ssl_cert = /etc/mysql/certs/server-cert.pem
ssl_key = /etc/mysql/certs/server-key.pem

# Restart MySQL after changes!

اتصال العميل باستخدام SSL/TLS

بعد تهيئة الخادم، يجب إبلاغ العملاء باستخدام SSL/TLS عند الاتصال. ويتضمن ذلك غالبًا تحديد خيارات SSL في سلسلة الاتصال أو الأمر.

فيما يلي مثال يستخدم العميل psql الخاص بـ PostgreSQL، مع طلب وضع SSL صراحةً:

  • sslmode=require: يفرض استخدام اتصال SSL.
  • sslrootcert: مسار شهادة CA للتحقق من الخادم.
psql "host=your_db_host user=your_user dbname=your_db \
  sslmode=require sslrootcert=/path/to/ca.crt"

تقييد الوصول حسب عنوان IP

إلى جانب التشفير، يُعد تقييد الوصول استنادًا إلى عنوان IP الخاص بالعميل ممارسةً أمنية أساسية. ويضمن ذلك أن الأجهزة الموثوقة فقط هي التي تستطيع حتى محاولة الاتصال بقاعدة البيانات.

يمكنكم تهيئة ذلك:

  • على مستوى خادم قاعدة البيانات (مثل ملف pg_hba.conf في PostgreSQL أو عبارات GRANT في MySQL).
  • باستخدام جدار حماية (مثل UFW أو firewalld) لحظر حركة المرور الواردة إلى منفذ قاعدة البيانات من عناوين IP غير المصرح بها.

يوفر الجمع بين الطريقتين دفاعًا متعدد الطبقات.

PostgreSQL: تقييد عناوين IP باستخدام pg_hba.conf

يستخدم PostgreSQL ملف pg_hba.conf للمصادقة المستندة إلى المضيف. يحدد كل سطر أنواع الاتصالات وقواعد البيانات والمستخدمين وعناوين IP المسموح بها.

الحقول الشائعة:

  • TYPE: host (TCP/IP)، وlocal (مقبس Unix).
  • DATABASE: all أو اسم قاعدة بيانات محددة.
  • USER: all أو مستخدم محدد.
  • ADDRESS: نطاق IP (مثل 192.168.1.0/24) أو عنوان IP واحد.
  • METHOD: scram-sha-256 أو md5 أو peer وغير ذلك.

تذكروا إعادة تشغيل PostgreSQL بعد التحرير.

# Snippet from pg_hba.conf

# Allow connections from localhost for all users/databases
host    all             all             127.0.0.1/32            scram-sha-256

# Allow 'app_user' from specific IP range to 'app_db'
host    app_db          app_user        192.168.1.0/24          scram-sha-256

# Deny all other connections (implicit if no other rules match)

MySQL: تقييد عناوين IP باستخدام GRANT

في MySQL، تقيّدون وصول المستخدمين بتحديد المضيف الذي يمكنهم الاتصال منه عند إنشاء مستخدم أو تعديله باستخدام عبارة GRANT.

تُعد صيغة 'user'@'host' أساسية:

  • 'localhost': من الخادم نفسه فقط.
  • '192.168.1.100': من عنوان IP محدد فقط.
  • '%': من أي مضيف (استخدموه بحذر شديد!).
  • '192.168.1.%': من أي عنوان IP ضمن النطاق 192.168.1.x.

استخدموا دائمًا المضيف الأكثر تقييدًا الممكن.

CREATE USER 'app_user'@'192.168.1.10' IDENTIFIED BY 'StrongPassword!';
GRANT ALL PRIVILEGES ON app_db.* TO 'app_user'@'192.168.1.10';
FLUSH PRIVILEGES;

أفضل الممارسات الأمنية

تأمين اتصالات قاعدة البيانات جهد مستمر. فيما يلي بعض أفضل الممارسات:

  • أقل قدر من الامتيازات: امنحوا المستخدمين والتطبيقات الأذونات الضرورية فقط.
  • كلمات مرور قوية: فرضوا استخدام كلمات مرور معقدة وغيّروها بانتظام.
  • قواعد جدار الحماية: استخدموا جدار حماية الخادم (UFW/firewalld) لتقييد الوصول إلى منافذ قواعد البيانات (مثل 5432 لـ PostgreSQL و3306 لـ MySQL) بحيث يقتصر على عناوين IP الموثوقة.
  • عمليات تدقيق منتظمة: راجعوا دوريًا سجلات قاعدة البيانات وتهيئات الوصول.
  • تحديث البرامج: طبّقوا تصحيحات الأمان على خادم قاعدة البيانات ونظام التشغيل في أقرب وقت.

اختبروا معرفتكم

أيّ من الطرق التالية يُعد صالحًا لتعزيز أمان اتصالات قاعدة البيانات؟

مراجعة: تأمين بياناتكم

استكشفنا في هذا الدرس تقنيات أساسية لتأمين اتصالات قاعدة البيانات:

  • SSL/TLS: يشفّر البيانات أثناء النقل، مما يضمن سريتها وسلامتها. وقد رأينا كيفية تفعيله في PostgreSQL وMySQL، وكيفية اتصال العملاء بأمان.
  • تقييد عناوين IP: يحد من الأشخاص الذين يمكنهم الاتصال بقاعدة البيانات استنادًا إلى عنوان الشبكة، باستخدام pg_hba.conf في PostgreSQL وعبارات GRANT في MySQL.
  • أفضل الممارسات: تناولنا أيضًا نصائح أمنية عامة، مثل استخدام كلمات مرور قوية وإجراء عمليات تدقيق منتظمة.

بتطبيق هذه الإجراءات، تقللون بدرجة كبيرة من خطر الوصول غير المصرح به وتسرب البيانات.

الأسئلة الشائعة

هل درس «تأمين اتصالات قواعد البيانات» مجاني؟

نعم — نص درس «تأمين اتصالات قواعد البيانات» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Linux Server Deployment & SSH Mastery، انتقل إلى CoddyKit PRO. تتضمن دورة Linux Server Deployment & SSH Mastery 4 دروس في المجموع.

ماذا ستتعلم في «تأمين اتصالات قواعد البيانات»؟

اضبطوا اتصالات آمنة بقاعدة البيانات باستخدام SSL/TLS، وقيّدوا الوصول استنادًا إلى عناوين IP لتعزيز الأمان. تتمرن على Linux Server Deployment & SSH Mastery مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Linux Server Deployment & SSH Mastery؟

لا تُشترط خبرة سابقة. Linux Server Deployment & SSH Mastery على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.

كم من الوقت يستغرق درس «تأمين اتصالات قواعد البيانات»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Linux Server Deployment & SSH Mastery هذا؟

نعم. كل درس في Linux Server Deployment & SSH Mastery يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. تثبيت PostgreSQL/MySQL
  2. مستخدمو قواعد البيانات والتحكم في الوصول
  3. تأمين اتصالات قواعد البيانات
  4. استراتيجيات النسخ الاحتياطي لقاعدة البيانات واستعادتها
← العودة إلى Linux Server Deployment & SSH Mastery