0Pricing
AWS Solutions Architect · درس

أمان RDS: التشفير ومجموعات المعلمات

شفّروا RDS أثناء التخزين باستخدام KMS، وتحكّموا في التشفير على مستوى الاتصال باستخدام مجموعات المعلمات، وعزّزوا الأمان بمصادقة IAM.

أمان RDS: التشفير ومجموعات المعلمات درس مجاني في AWS Solutions Architect على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في AWS Solutions Architect، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة AWS Solutions Architect 4 دروس في المجموع.

تشفير RDS للبيانات الساكنة

تدعم RDS تشفير البيانات الساكنة باستخدام AWS Key Management Service (KMS). عند تفعيل التشفير أثناء إنشاء مثيل DB، تُشفّر جميع البيانات الموجودة على وحدات تخزين EBS الأساسية، والنسخ الاحتياطية التلقائية، واللقطات، وRead Replicas باستخدام مفتاح KMS المحدد.

يجب تفعيل التشفير وقت الإنشاء—فلا يمكنك تشفير مثيل موجود غير مشفّر في موضعه. والحل البديل هو أخذ لقطة غير مشفّرة، ونسخها مع تفعيل التشفير، ثم الاستعادة من اللقطة المشفّرة. ويمكن أن يكون مفتاح KMS مفتاحًا تديره AWS أو Customer-Managed Key (CMK) لتوفير تحكم وتدقيق إضافيين.

# Create an encrypted RDS instance
aws rds create-db-instance \
  --db-instance-identifier mydb-encrypted \
  --engine mysql \
  --db-instance-class db.t3.micro \
  --master-username admin \
  --master-user-password MyPass123! \
  --allocated-storage 20 \
  --storage-encrypted \
  --kms-key-id arn:aws:kms:us-east-1:123456789:key/my-key-id

تشفير مثيل RDS موجود غير مشفّر

نظرًا إلى أنه لا يمكنك تفعيل التشفير على مثيل موجود، فاتبع مسار الترحيل التالي:

  1. أنشئ لقطة يدوية للمثيل غير المشفّر
  2. انسخ اللقطة وفعّل التشفير أثناء النسخ، مع تحديد مفتاح KMS
  3. استعد مثيل DB جديدًا من اللقطة المشفّرة
  4. حدّث نقطة نهاية تطبيقك للإشارة إلى المثيل الجديد
  5. احذف المثيل القديم غير المشفّر

ينطوي هذا الأسلوب على فترة توقف محدودة، إلا إذا استخدمت DMS لإبقاء المثيل المشفّر الجديد متزامنًا قبل التحويل.

# Copy snapshot with encryption enabled
aws rds copy-db-snapshot \
  --source-db-snapshot-identifier mydb-unencrypted-snap \
  --target-db-snapshot-identifier mydb-encrypted-snap \
  --kms-key-id alias/aws/rds

التشفير أثناء النقل باستخدام SSL/TLS

يشفّر RDS البيانات أثناء النقل باستخدام SSL/TLS. ويوفّر كل محرك قاعدة بيانات شهادة CA قابلة للتنزيل، يستخدمها برنامج تشغيل العميل للتحقق من هوية الخادم. لفرض اتصالات SSL، اضبط محرك قاعدة البيانات لرفض الاتصالات غير المشفّرة.

بالنسبة إلى MySQL، اضبط المعلمة require_secure_transport = ON في مجموعة المعلمات. وبالنسبة إلى PostgreSQL، اضبط ssl = 1، ويمكنك اختياريًا ضبط rds.force_ssl = 1 لرفض الاتصالات غير المعتمدة على SSL تمامًا. وتقبل العديد من برامج تشغيل قواعد البيانات الخاصة بـ Java وPython أيضًا معلمة سلسلة الاتصال sslmode=require.

# Connect to RDS MySQL over SSL
mysql -h mydb.abcd1234.us-east-1.rds.amazonaws.com \
  -u admin -p \
  --ssl-ca=rds-ca-2019-root.pem \
  --ssl-verify-server-cert

ما مجموعات المعلمات؟

مجموعات المعلمات هي مجموعات مسمّاة من إعدادات تكوين محرك قاعدة البيانات، تُرفق بمثيل RDS. وهي النظير في RDS لتحرير my.cnf في MySQL أو postgresql.conf في PostgreSQL، لكن AWS تديرها وتُصدر إصدارات منها لكل عائلة محركات.

توفّر AWS مجموعة معلمات افتراضية لكل إصدار من إصدارات المحرك، لكن لا يمكن تحرير إعداداتها. لتخصيص المعلمات، أنشئ مجموعة معلمات مخصصة، وعدّل المعلمات المطلوبة، ثم اربطها بمثيل DB الخاص بك. تتطلب التغييرات على المعلمات الثابتة إعادة تشغيل؛ أما المعلمات الديناميكية فتُطبّق فورًا.

# Create a custom parameter group
aws rds create-db-parameter-group \
  --db-parameter-group-name my-mysql8-params \
  --db-parameter-group-family mysql8.0 \
  --description 'Custom MySQL 8.0 parameters'

تعديل إعدادات مجموعة المعلمات

بعد إنشاء مجموعة معلمات مخصصة، يمكنك تعديل المعلمات الفردية باستخدام أمر CLI ‏modify-db-parameter-group أو من خلال وحدة التحكم. للمعلمات طريقة تطبيق: immediate (تُطبّق من دون إعادة تشغيل) أو pending-reboot (لا تُطبّق إلا بعد إعادة تشغيل المثيل التالية).

من المعلمات المهمة التي ينبغي معرفتها للاختبار: max_connections (حد الاتصالات المتزامنة)، وinnodb_buffer_pool_size (حجم ذاكرة التخزين المؤقت داخل الذاكرة في MySQL)، وlog_bin_trust_function_creators (السماح بالدوال المخزّنة التي تكتب في السجل الثنائي)، وrds.force_ssl (فرض SSL في PostgreSQL).

# Force SSL in a PostgreSQL parameter group
aws rds modify-db-parameter-group \
  --db-parameter-group-name my-postgres-params \
  --parameters 'ParameterName=rds.force_ssl,ParameterValue=1,ApplyMethod=immediate'

مجموعات الخيارات للميزات الإضافية

مجموعات الخيارات تشبه مجموعات المعلمات، لكنها تتحكم في الميزات الإضافية لمحرك قاعدة البيانات بدلًا من ضبط الإعدادات. وتُستخدم أساسًا مع Oracle وSQL Server لتمكين ميزات مثل Oracle Application Express (APEX)، وتشفير البيانات الشفاف في SQL Server (TDE)، أو مصادقة Active Directory في SQL Server.

قد يكون لكل خيار في مجموعة الخيارات إعداداته الخاصة. وتُدار إصدارات مجموعات الخيارات لكل عائلة محركات، ويجب ربطها بمثيل DB. ونادرًا ما تحتاج معظم المحركات مفتوحة المصدر (MySQL وPostgreSQL وMariaDB) إلى مجموعات خيارات مخصصة.

مصادقة قاعدة البيانات باستخدام IAM

يدعم RDS مصادقة قاعدة البيانات باستخدام IAM لمحركَي MySQL وPostgreSQL. وبدلًا من استخدام اسم مستخدم وكلمة مرور ثابتين، يفترض تطبيقك دور IAM وينشئ رمز مصادقة مؤقتًا (صالحًا لمدة 15 دقيقة) باستخدام أمر AWS CLI ‏generate-db-auth-token أو استدعاء SDK.

تشمل الفوائد عدم وجود كلمات مرور طويلة الأمد لقاعدة البيانات، والتدوير التلقائي لبيانات الاعتماد من خلال سياسات IAM، والتحكم المركزي في الوصول. وتتطلب هذه الميزة تفعيل --enable-iam-database-authentication على المثيل وإنشاء مستخدم قاعدة بيانات مرتبط بدور IAM.

# Generate an RDS IAM auth token
aws rds generate-db-auth-token \
  --hostname mydb.abcd1234.us-east-1.rds.amazonaws.com \
  --port 3306 \
  --username mydbuser \
  --region us-east-1

تكامل Secrets Manager مع RDS

يمكن لـ AWS Secrets Manager تخزين كلمة مرور RDS الرئيسية وبيانات اعتماد التطبيق وتدويرها تلقائيًا. عند تفعيل التدوير، يستدعي Secrets Manager دالة Lambda لتحديث كلمة مرور قاعدة البيانات وتخزين القيمة الجديدة في السر—ويجلب تطبيقك أحدث قيمة للسر عبر واجهة برمجة تطبيقات Secrets Manager، ولذلك يمتلك دائمًا بيانات اعتماد صالحة.

عند إنشاء مثيل RDS من وحدة التحكم، يمكنك اختيار إدارة بيانات الاعتماد الرئيسية باستخدام Secrets Manager. ويؤدي ذلك إلى إلغاء الحاجة إلى تضمين كلمات المرور بشكل ثابت في التعليمات البرمجية أو متغيرات البيئة.

# Retrieve RDS credentials from Secrets Manager
aws secretsmanager get-secret-value \
  --secret-id rds!db-1234abcd-5678-efgh-ijkl-mnopqrstuvwx \
  --query SecretString \
  --output text | python3 -m json.tool

عناصر تحكم VPC ومجموعات الأمان

تعمل مثيلات RDS داخل VPC، وتستخدم مجموعات الشبكات الفرعية لـ DB لتحديد الشبكات الفرعية (عبر مناطق توافر متعددة) التي يمكن وضع المثيل فيها. ومن أفضل الممارسات وضع RDS في شبكات فرعية خاصة من دون وصول مباشر إلى الإنترنت.

تتحكم مجموعات الأمان في عناوين IP ومجموعات الأمان الأخرى التي يمكنها الوصول إلى منفذ DB (مثل TCP 3306 لـ MySQL). وينبغي أن تكون مجموعة أمان طبقة التطبيق هي المصدر المسموح به الوحيد في مجموعة أمان RDS، بما يفرض مبدأ أقل صلاحية على مستوى الشبكة. لا تضبط مطلقًا ‎0.0.0.0/0‎ (كل حركة المرور) كقاعدة واردة في مجموعة أمان RDS.

المراقبة المحسّنة وسجلات التدقيق

تنشر المراقبة المحسّنة مقاييس على مستوى نظام التشغيل (وحدة المعالجة المركزية والذاكرة ونظام الملفات وإدخال/إخراج القرص) إلى CloudWatch Logs كل 1–60 ثانية، ما يوفر دقة أكبر من مقاييس CloudWatch الافتراضية ذات الفاصل البالغ 60 ثانية. وتستخدم وكيلًا يعمل على مضيف DB، وهي متاحة لجميع المحركات باستثناء وضع النسخ المتطابق في SQL Server.

يمكن نشر سجلات تدقيق قاعدة البيانات (سجل الاستعلامات العام وسجل الاستعلامات البطيئة في MySQL؛ وpgaudit في PostgreSQL) إلى CloudWatch Logs لتحليل الامتثال. فعّل هذه السجلات من خلال مجموعات المعلمات، ثم اضبط عمليات تصدير السجلات في وحدة تحكم RDS ضمن عمليات تصدير السجلات.

# Enable PostgreSQL logs export to CloudWatch
aws rds modify-db-instance \
  --db-instance-identifier mydb \
  --cloudwatch-logs-export-configuration 'EnableLogTypes=[postgresql,upgrade]' \
  --apply-immediately

ملخص أفضل ممارسات الأمان

أفضل ممارسات أمان RDS الأساسية لاختبار SAA-C03:

  • فعّل التشفير أثناء السكون باستخدام KMS CMK عند إنشاء المثيل
  • طبّق SSL/TLS أثناء النقل من خلال إعدادات مجموعة المعلمات
  • ضع المثيلات في شبكات فرعية خاصة مع مجموعات أمان مقيّدة
  • استخدم مصادقة قاعدة البيانات باستخدام IAM أو Secrets Manager لتجنب كلمات المرور الثابتة
  • فعّل CloudTrail لتسجيل استدعاءات واجهة برمجة تطبيقات RDS وCloudWatch Logs لسجلات تدقيق قاعدة البيانات
  • استخدم قواعد AWS Config (مثل rds-instance-public-access-check) لاكتشاف الإعدادات الخاطئة

تحقق سريع

اختبر مدى فهمك لمفاهيم AWS Solutions Architect (SAA-C03) الواردة في هذا الدرس.

مراجعة الدرس

تعلمت في هذا الدرس أن التشفير أثناء السكون في RDS يستخدم KMS ويجب تفعيله عند الإنشاء، وأن مجموعات المعلمات تتحكم في تكوين المحرك، بما في ذلك فرض SSL/TLS أثناء النقل، وأن مصادقة قاعدة البيانات باستخدام IAM وSecrets Manager يلغي الحاجة إلى كلمات مرور ثابتة لقاعدة البيانات. بعد ذلك سنستكشف جداول DynamoDB وعناصرها وتصميم المفاتيح الأساسية.

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

هل درس «أمان RDS: التشفير ومجموعات المعلمات» مجاني؟

نعم — نص درس «أمان RDS: التشفير ومجموعات المعلمات» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة AWS Solutions Architect، انتقل إلى CoddyKit PRO. تتضمن دورة AWS Solutions Architect 4 دروس في المجموع.

ماذا ستتعلم في «أمان RDS: التشفير ومجموعات المعلمات»؟

شفّروا RDS أثناء التخزين باستخدام KMS، وتحكّموا في التشفير على مستوى الاتصال باستخدام مجموعات المعلمات، وعزّزوا الأمان بمصادقة IAM. تتمرن على AWS Solutions Architect مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ AWS Solutions Architect؟

لا تُشترط خبرة سابقة. AWS Solutions Architect على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.

كم من الوقت يستغرق درس «أمان RDS: التشفير ومجموعات المعلمات»؟

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

هل يمكنني كتابة وتشغيل أكواد في درس AWS Solutions Architect هذا؟

نعم. كل درس في AWS Solutions Architect يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

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

  1. محركات RDS وفئات المثيلات
  2. Multi-AZ والنسخ الاحتياطية التلقائية
  3. النسخ المتماثلة للقراءة لتوسيع نطاق القراءة
  4. أمان RDS: التشفير ومجموعات المعلمات
← العودة إلى AWS Solutions Architect