الجزء 27 من سلسلة تعلّم AWS من الصفر

التشفير والأسرار والحماية من الهجمات

كيف يحمي KMS مفاتيحك، ووين تحفظ كلمات المرور بـ Parameter Store وSecrets Manager، وشهادات مجانية من ACM، وصد الهجمات بـ WAF وShield، وكشف التهديدات بـ GuardDuty وInspector وMacie، مع تجربة عملية.

في هذا المقال
  1. AWS KMS: خزنة المفاتيح
  2. وين تحفظ كلمات المرور؟
  3. ACM: شهادات بدون وجع راس
  4. صد الهجمات
  5. كشف التهديدات
  6. عملي: مفتاح وقيمة وسر
  7. الخلاصة
  8. اختبر نفسك

في الجزء السادس والعشرين ضبطنا مين يدخل. هذا الجزء يفترض الأسوأ: قرص ينسرق، أو كلمة مرور تتسرب، أو أحد يهاجم موقعك. وش يحميك وقتها؟

تبي استخدم
مفاتيح تشفير تتحكم فيها KMS
إعدادات وأسرار بسيطة Parameter Store
كلمات مرور تتغير لحالها Secrets Manager
شهادات HTTPS ACM
صد هجمات الويب WAF
تحمل هجمات DDoS Shield
كشف التهديدات في حسابك GuardDuty
إيجاد الثغرات في اللي تشغله Inspector
إيجاد البيانات الحساسة في S3 Macie

AWS KMS: خزنة المفاتيح

شفنا أنواع التشفير في S3. وخلف أغلبها KMS (Key Management Service): المفاتيح تنشأ وتنستخدم داخله وما تطلع منه بدون تشفير، والوصول تحكمه السياسات، وكل استخدام ينسجل في CloudTrail.

التشفير بالمظروف (Envelope Encryption)

KMS ما يشفر ملفاتك الكبيرة بنفسه. يسوي مفتاح بيانات يشفر الملف، ويشفر مفتاح البيانات هذا بمفتاحك الرئيسي:

مفتاح KMS ما يطلع من KMS مفتاح البيانات يشفر الملف ملفك صار مشفر مفتاح البيانات مشفر ينحفظ مع الملف
مفتاح البيانات يشفر الملف، ونسخة مشفرة منه تنحفظ جنب الملف. وKMS بس يقدر يفتح هذي النسخة، فالملف ما له فايدة بدون صلاحية.

فحتى اللي يسرق القرص ياخذ بيانات مشفرة وجنبها مفتاح مشفر. وعشان تفك التشفير، تحتاج صلاحية تطلب من KMS يفتح مفتاح البيانات، وهنا مكان تحكمك.

أنواع المفاتيح

النوع مين يتحكم فيه التكلفة الشهرية التدوير
AWS Owned AWS، وما تشوفه أبداً مجاني من الخدمة
AWS Managed (مثل aws/ebs) AWS، وتقدر تشوفه وتدقق عليه مجاني سنوي وما يتغير
Customer Managed أنت بالكامل دولار للمفتاح، مع استدعاءات API اختياري، سنوي افتراضياً، أو من 90 إلى 2,560 يوم

وأغلب المفاتيح متماثلة (Symmetric)، مفتاح واحد للتشفير وفكه وما يطلع من KMS. وفيه أزواج غير متماثلة (Asymmetric)، يطلع منها المفتاح العام، للتوقيع أو لتشفير من أطراف خارج AWS.

وحذف المفتاح ما له رجعة، لأنه يدمر كل شي مشفر به. فـ KMS يفرض فترة انتظار من 7 إلى 30 يوم، تقدر تلغي خلالها. وعشان توقف استخدام المفتاح بالأثناء، عطّله.

سياسات المفاتيح

كل مفتاح KMS له Key Policy، وعلى عكس الموارد الثانية، IAM لحاله ما يكفي بدونها. والسياسة الافتراضية تخلي سياسات IAM في الحساب تعطي الوصول للمفتاح.

وهذا مهم لما تنسخ بيانات مشفرة:

  • لمنطقة ثانية: المفاتيح خاصة بالمنطقة، فنسخ اللقطة يعيد تشفيرها بمفتاح في منطقة الوجهة.
  • لحساب ثاني: شارك اللقطة، واسمح لذاك الحساب في سياسة مفتاح Customer Managed. مفاتيح AWS Managed، مثل aws/ebs، ما تنشارك، فاللقطة المشفرة بها لازم تنسخها أول بمفتاحك.

المفاتيح متعددة المناطق

Multi-Region Keys تتشارك نفس مادة المفتاح ومعرفه بين المناطق، فاللي انشفر في منطقة ينفك في ثانية بدون إعادة تشفير. وهي مو لكل شي، لأن AWS توصي بمفاتيح المنطقة الواحدة افتراضياً. وتناسب حالات مثل تشفير حقل من جهة العميل في Global Tables أو Aurora Global.

CloudHSM: عتادك الخاص

في KMS، AWS تدير العتاد اللي يحفظ مفاتيحك. ولو فيه تنظيم يفرض وحدة أمان عتادية مخصصة لك، AWS CloudHSM يعطيك مجموعة HSM لك وحدك ومعتمدة بمعيار FIPS. وAWS تتكفل بالتجهيز والنسخ الاحتياطي، وأنت تتحكم في المفاتيح والمستخدمين بنفسك. فاختره بس لما تحتاجه، لأن مسؤوليتك أكبر من KMS.

وين تحفظ كلمات المرور؟

مو في الكود، ولا في Git. عندك خدمتين:

Parameter Store Secrets Manager
يناسب إعدادات وأسرار بسيطة أسرار لازم تتغير
التشفير اختياري بـ KMS عبر SecureString دايماً بـ KMS
التدوير مو مبني فيه مبني فيه بدالة Lambda، ومتكامل مع RDS وAurora
نسخ في مناطق ثانية لا نعم
السعر Standard مجاني 0.40 دولار للسر في الشهر، مع استدعاءات API

Parameter Store

أسماؤه تكوّن شجرة، مثل /shop/prod/db-url، فالتطبيق يقدر يجيب مسار كامل، وIAM يقدر يسمح بـ /shop/prod/* فقط.

Standard Advanced
أقصى حجم 4 KB 8 KB
العدد في المنطقة 10,000 100,000
سياسات مثل الانتهاء لا نعم
السعر مجاني 0.05 دولار للقيمة في الشهر

Secrets Manager

الفكرة هنا التدوير: كلمة المرور تتغير بجدول تحدده، والدالة تحدثها في قاعدة البيانات كمان. وتطبيقك يطلب القيمة الحالية كل مرة، فما يحس. وشفنا في الجزء الثامن إن RDS يقدر يدير كلمة مروره هنا لك.

ACM: شهادات بدون وجع راس

AWS Certificate Manager يصدر شهادات TLS عامة مجاناً لما تنستخدم مع خدمات مثل موزعات الحمل وCloudFront وAPI Gateway، ويجددها لحاله.

  • التحقق: أثبت ملكية النطاق عبر DNS، والأفضل مع Route 53، أو عبر الإيميل.
  • الصلاحية: الشهادات العامة تدوم الحين 198 يوم، حسب قواعد الصناعة الجديدة، والتجديد يصير تلقائياً قبل الانتهاء بحوالي 45 يوم. والفترة بتقصر أكثر في السنين الجاية، وهذا سبب زيادة تخليها للأتمتة.
  • الشهادات المستوردة: تقدر تستورد شهاداتك، بس ACM ما يجددها، فحط تنبيه على انتهائها.
  • سيرفراتك: شهادة ACM العادية ما تنثبت على سيرفرك. ولو تحتاج هذا، فيه شهادات قابلة للتصدير برسوم.

صد الهجمات

هذا كيف تقعد طبقات الحماية مع بعض في تصميم معتاد:

الزوار CloudFront WAF وShield ALB من CloudFront فقط السيرفرات خاصة
الهجمات تنمتص عند الحافة، وSecurity Group لموزع الحمل يقبل من CloudFront فقط، فما أحد يقدر يلتف عليه.
الخدمة الطبقة وش تسوي التكلفة
WAF التطبيق (7) قواعد على الطلبات: SQL Injection وXSS والدولة وقوائم IP وحدود المعدل لكل قاعدة وطلب
Shield Standard الشبكة (3 و4) حماية من هجمات DDoS المعروفة مجاني وتلقائي
Shield Advanced حتى 7 فريق استجابة متخصص، وحماية التكلفة وقت الهجوم اشتراك شهري وهو غالي
Firewall Manager الإدارة يطبق قواعد WAF وShield وSecurity Groups وغيرها على كل حسابات منظمتك لكل سياسة

وWAF ينربط بـ CloudFront وALB وAPI Gateway وAppSync، بس مو بموزع NLB. ولو تحتاج IP ثابت مع WAF، حط Global Accelerator قدام موزع الحمل. والقواعد حسب المعدل بسيطة وفعالة: احجب أي عنوان يرسل أكثر من عدد محدد من الطلبات.

تحمل DDoS

الأجزاء السابقة أعطتك أغلب المطلوب:

  • CloudFront وRoute 53 يمتصون الهجمات عند الحافة، بعيد عن سيرفراتك.
  • Auto Scaling يكبر لو عدى شي، بس انتبه للتكلفة.
  • Security Group يسمح لموزع الحمل من CloudFront فقط، فما أحد يتخطاه.
  • WAF بحدود المعدل وBot Control للهجمات اللي تشبه الطلبات العادية.

حجب عنوان واحد: وين؟

تصميمك وين تحجب ليه
EC2 بـ IP عام Network ACL Security Groups تسمح فقط، وما تقدر تمنع
موزع حمل Network ACL على الـ Subnet حقه، أو WAF السيرفر يشوف موزع الحمل فقط
CloudFront قدامه WAF على CloudFront، أو القيود الجغرافية Network ACL ما يفيد، لأن الطلبات توصل من عناوين CloudFront

وللحماية عند حدود الـ VPC، فيه Network Firewall اللي غطيناه في الجزء الرابع عشر.

كشف التهديدات

المنع مو كل شي. تحتاج كمان شي يقول لك لما يكون فيه مشكلة:

الخدمة السؤال اللي تجاوبه تشتغل من
GuardDuty فيه شي مشبوه يصير في حسابي؟ CloudTrail وVPC Flow Logs وسجلات DNS، بدون Agents
Inspector اللي أشغله فيه ثغرات معروفة؟ سيرفرات EC2 وصور ECR ودوال Lambda
Macie فيه بيانات حساسة في مكان ما لازم تكون فيه؟ S3
Security Hub كيف أماني بشكل عام؟ يجمع نتائج الباقين ويرتبها
Detective ليه صارت هذي النتيجة؟ يجمع السجلات لحاله ويربطها، عشان تلقى السبب الجذري

GuardDuty يكشف أشياء مثل تعدين العملات، أو بيانات دخول مستخدمة من مكان غريب. وأرسل نتائجه عبر EventBridge إلى SNS أو Lambda عشان تتصرف. وتشغيله بضغطة وحدة، فشغله من البداية في أي حساب جاد، وله فترة تجربة مجانية.

مستندات الامتثال: AWS Artifact

مدقق يطلب إثبات إن AWS نفسها ملتزمة بمعايير ISO أو PCI؟ AWS Artifact يعطيك هذي التقارير وقت ما تبي ومجاناً، ومنه كمان تراجع اتفاقياتك مع AWS وتقبلها. وهو يغطي جانب AWS من المسؤولية المشتركة، أما جانبك فإثباته عليك.

عملي: مفتاح وقيمة وسر

من CloudShell، أنشئ مفتاح باسم سهل، وشفر نص:

Bash
KEY_ID=$(aws kms create-key --description "Series demo key" \
  --query KeyMetadata.KeyId --output text)
aws kms create-alias --alias-name alias/series-demo --target-key-id $KEY_ID

CIPHER=$(aws kms encrypt --key-id alias/series-demo \
  --plaintext "my secret note" --cli-binary-format raw-in-base64-out \
  --query CiphertextBlob --output text)

echo $CIPHER

بتشوف نص ما ينقرأ. فك تشفيره. وللمفتاح المتماثل، ما يلزم تحدد أي مفتاح:

Bash
aws kms decrypt --ciphertext-blob "$CIPHER" \
  --query Plaintext --output text | base64 -d; echo

الحين شوف وين التحكم الحقيقي. عطّل المفتاح، وجرب مرة ثانية:

Bash
aws kms disable-key --key-id $KEY_ID

aws kms decrypt --ciphertext-blob "$CIPHER" \
  --query Plaintext --output text

aws kms enable-key --key-id $KEY_ID

بيجيك DisabledException. البيانات ما تغيرت، بس ما لها فايدة بدون المفتاح. الحين احفظ كلمة مرور في Parameter Store، مشفرة بنفس المفتاح، واقرأها مع فك التشفير وبدونه:

Bash
aws ssm put-parameter --name /series/prod/db-password \
  --type SecureString --key-id alias/series-demo --value "S3cret-pass"

aws ssm get-parameter --name /series/prod/db-password \
  --query Parameter.Value --output text

aws ssm get-parameter --name /series/prod/db-password --with-decryption \
  --query Parameter.Value --output text

aws ssm get-parameters-by-path --path /series/prod \
  --query "Parameters[].Name"

وسر في Secrets Manager، بالطريقة اللي يقرأه فيها تطبيقك:

Bash
aws secretsmanager create-secret --name series/api-key \
  --secret-string '{"key":"abc123"}' --query Name --output text

aws secretsmanager get-secret-value --secret-id series/api-key \
  --query SecretString --output text

وأخيراً، وش خلّى كل هذا وراه؟ CloudTrail سجل مين استخدم المفتاح، بس ممكن ياخذ كم دقيقة:

Bash
aws cloudtrail lookup-events \
  --lookup-attributes AttributeKey=EventName,AttributeValue=Decrypt \
  --max-results 3 --query "Events[].[EventName,Username,EventTime]" --output table
Bash
aws secretsmanager delete-secret --secret-id series/api-key \
  --force-delete-without-recovery
aws ssm delete-parameter --name /series/prod/db-password
aws kms delete-alias --alias-name alias/series-demo
aws kms schedule-key-deletion --key-id $KEY_ID --pending-window-in-days 7

الخلاصة

  • KMS يحفظ مفاتيحك، ويستخدم التشفير بالمظروف، ويسجل كل استخدام.
  • المفاتيح خاصة بالمنطقة، ومفاتيح AWS Managed ما تنشارك بين الحسابات.
  • Parameter Store للإعدادات، وSecrets Manager للي لازم يتغير.
  • شهادات ACM مجانية وتتجدد لحالها، وCloudFront يحتاجها في us-east-1.
  • WAF وShield يصدون الهجمات، وGuardDuty وInspector وMacie يكشفون اللي يعدي.

اختبر نفسك

قبل ما تكمل، جرّب هذي الأسئلة عشان تتأكد إنك فهمت الجزء. كل سؤال موقف عملي، وبعد ما تجاوب يطلع لك الشرح.

السؤال 1 من 7

كلمة مرور قاعدة بيانات تطبيق لازم تتغير كل 30 يوم، في القاعدة وفي المكان اللي يقرأ منه التطبيق، بدون إصدار كود كل مرة. وش يناسب؟

اعرض الجواب

الجواب الصحيح: A

Secrets Manager يغير كلمة المرور بجدول ويحدثها في القاعدة كمان. والتطبيق يطلب القيمة الحالية كل مرة، فما يحس.

  • B: هذا يخزن القيمة مشفرة، بس ما فيه تدوير مبني.
  • C: هذا يدوّر مفتاح تشفير، مو كلمة مرور قاعدة بيانات.
  • D: لازم أحد يغيرها يدوي على كل سيرفر.

للمراجعة: Secrets Manager في هذا الجزء، وRotate AWS Secrets Manager secrets في وثائق AWS.

السؤال 2 من 7

فريق يبي يشارك لقطة EBS مشفرة مع حساب ثاني، بس اللقطة مشفرة بمفتاح aws/ebs. وش يسوي؟

اعرض الجواب

الجواب الصحيح: C

مفاتيح AWS Managed ما تنشارك، فلازم ينعاد تشفير اللقطة بمفتاحك أول. وبعدها الحساب الثاني يحتاج وصول للقطة وللمفتاح.

  • A: مفاتيح AWS Managed ما تنشارك مع حسابات ثانية.
  • B: اللقطات غير المشفرة بس هي اللي تنشارك للعامة، وهذا بيكشف البيانات لأي أحد.
  • D: اللقطة المشفرة ما تتحول ببساطة إلى غير مشفرة.

للمراجعة: سياسات المفاتيح في هذا الجزء، وShare an Amazon EBS snapshot with other AWS accounts في وثائق AWS.

السؤال 3 من 7

موقع يشتغل على ALB في فرانكفورت وقدامه CloudFront. والفريق طلب شهادة ACM في فرانكفورت، بس ما يقدر يختارها في CloudFront. وش يسوي؟

اعرض الجواب

الجواب الصحيح: D

CloudFront يحتاج شهادته في us-east-1، وين ما كان تطبيقك. والـ ALB يستمر يستخدم اللي في منطقته.

  • A: شهادة ACM العادية ما تتصدر.
  • B: التطبيق يقدر يبقى مكانه، وشهادة CloudFront بس هي اللي لازم تكون هناك.
  • C: التجديد ما يغير منطقة الشهادة.

للمراجعة: ACM: شهادات بدون وجع راس في هذا الجزء، وRequirements for using SSL/TLS certificates with CloudFront في وثائق AWS.

السؤال 4 من 7

موقع خلف CloudFront، وعنوان واحد يغرقه بالطلبات. وين يحجب الفريق هذا العنوان؟

اعرض الجواب

الجواب الصحيح: B

CloudFront أول من يشوف عنوان الزائر، فالحجب مكانه هناك. وIP Set أو قاعدة حسب المعدل في WAF تسوي المطلوب.

  • A: الطلبات توصل الشبكة من عناوين CloudFront، فعنوان المهاجم ما يظهر هناك أبداً.
  • C: مجموعة الأمان تسمح فقط، وما تقدر تمنع.
  • D: هذي حماية تلقائية من هجمات الشبكة الشائعة، بدون قوائم عناوين خاصة فيك.

للمراجعة: حجب عنوان واحد: وين؟ في هذا الجزء، وUsing AWS WAF with Amazon CloudFront في وثائق AWS.

السؤال 5 من 7

شركة تبي تلقى الثغرات البرمجية المعروفة في سيرفرات EC2 وصور ECR حقتها، وتلقى البيانات الشخصية الموجودة في حاويات S3. أي خدمتين يناسبون؟ (اختر اثنين.)

اعرض الجواب

الجواب الصحيح: A + E

Inspector يفحص اللي تشغله عن الثغرات المعروفة، وMacie يلقى البيانات الحساسة في S3.

  • B: هذا يكشف النشاط المشبوه في الحساب، مثل استخدام صلاحيات مسروقة.
  • C: هذا يحمي من هجمات DDoS.
  • D: هذا يفلتر طلبات الويب.

للمراجعة: كشف التهديدات في هذا الجزء، وWhat is Amazon Inspector? وWhat is Amazon Macie? في وثائق AWS.

السؤال 6 من 7

جهة تنظيمية تطلب إن مفاتيح تشفير بنك تكون في وحدة أمان عتادية له وحده، معتمدة بمعيار FIPS، ويتحكم فيها البنك وحده. وش يناسب؟

اعرض الجواب

الجواب الصحيح: C

CloudHSM يعطيك مجموعة HSM مخصصة لك، وأنت تتحكم في المفاتيح والمستخدمين بنفسك.

  • A: AWS تدير هذا المفتاح والعتاد، وما تقدر تغير صلاحياته.
  • B: أنت تتحكم في سياسة هذا المفتاح، بس AWS تدير العتاد اللي وراه.
  • D: هذا يحفظ أسرار مثل كلمات المرور، وهو مو وحدة عتادية.

للمراجعة: CloudHSM: عتادك الخاص في هذا الجزء، وWhat is AWS CloudHSM? في وثائق AWS.

السؤال 7 من 7

مدقق يطلب من شركة تقرير امتثال PCI الخاص بـ AWS. وفريق الأمان يحتاج يحقق في السبب الجذري لنتيجة من GuardDuty. أي خدمتين يناسبون؟ (اختر اثنين.)

اعرض الجواب

الجواب الصحيح: A + D

Artifact يعطيك تقارير امتثال AWS وقت ما تبي، وDetective يربط السجلات عشان تلقى السبب الجذري للنتيجة.

  • B: هذا يلقى البيانات الحساسة في S3.
  • C: هذا يسجل إعدادات مواردك ويحكم عليها، مو امتثال AWS.
  • E: هذا يدور الثغرات المعروفة في اللي تشغله.

للمراجعة: مستندات الامتثال: AWS Artifact وكشف التهديدات في هذا الجزء، وWhat is AWS Artifact? وWhat is Amazon Detective? في وثائق AWS.

حميت نفسك من الناس. طيب لو طاحت منطقة كاملة، أو لازم تنقل مركز بيانات إلى AWS؟ في الجزء الثامن والعشرين نغطي التعافي من الكوارث والترحيل.