Security+ Academy · درس

فحص أمان البنية التحتية باعتبارها شيفرة

افحصوا مخططات Terraform وCloudFormation وHelm باستخدام أدوات أمان IaC (Checkov وtfsec) لاكتشاف الإعدادات الخاطئة قبل وصولها إلى بيئة الإنتاج.

الدرس 4 من 413 خطوة

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

نظرة عامة على أمان البنية التحتية كتعليمة برمجية

تتيح أدوات البنية التحتية كتعليمة برمجية (IaC) مثل Terraform وAWS CloudFormation وAnsible وHelm تعريف البنية التحتية في ملفات إعداد خاضعة للتحكم في الإصدارات. ويحقق ذلك فوائد هائلة — مثل قابلية التكرار، وقابلية التدقيق، والأتمتة — لكنه ينطوي أيضًا على خطر أمني بالغ: تؤدي أخطاء الإعداد في ملفات IaC إلى إنشاء بنية تحتية غير آمنة على نطاق واسع. فعلى سبيل المثال، يؤدي نشر وحدة Terraform واحدة أُعدت بطريقة غير صحيحة عبر 50 بيئة إلى إنشاء 50 نظامًا عرضة للخطر في الوقت نفسه. ويعالج فحص أمان IaC ذلك من خلال التحقق من ملفات الإعداد قبل تطبيقها، ونقل الأمان إلى مرحلة مبكرة ضمن سير عمل المطور.

أخطاء إعداد IaC الشائعة

تبحث أدوات فحص الأمان عن أكثر أخطاء إعداد IaC شيوعًا في البيئات السحابية الواقعية: حاويات S3 التي تمكّن الوصول العام أو تفتقر إلى التشفير أثناء التخزين؛ ومجموعات الأمان التي تحتوي على قواعد واردة 0.0.0.0/0 للمنافذ الحساسة (22 و3389 و1433)؛ وقواعد البيانات التي لا تستخدم التشفير أو التي يمكن الوصول إليها بشكل عام؛ وسياسات IAM التي تحتوي على أحرف بدل شاملة * للموارد أو الإجراءات؛ وتعطيل CloudTrail في إحدى المناطق؛ ومفاتيح KMS التي لا تتضمن تدويرًا للمفاتيح؛ وموازنات التحميل التي تستخدم مستمعي HTTP بدلًا من HTTPS. وتتطابق هذه النتائج بدرجة كبيرة مع الفحوص التي تجريها معايير الأمان السحابية، مثل CIS AWS Foundations.

# Dangerous Terraform: public S3 bucket + no encryption
resource 'aws_s3_bucket' 'data' {
  bucket = 'my-data-bucket'
  # Missing: server_side_encryption_configuration
  # Missing: aws_s3_bucket_public_access_block
}

Checkov: السياسات كتعليمات برمجية لـ IaC

Checkov (من Bridgecrew/Prisma Cloud) أداة شائعة مفتوحة المصدر للتحليل الساكن لـ IaC، وتدعم Terraform وCloudFormation وبيانات Kubernetes الوصفية ومخططات Helm وملفات Dockerfile. تتضمن الأداة أكثر من 1,000 سياسة مضمّنة مرتبطة بمعايير CIS وGDPR وSOC 2 وHIPAA. يؤدي تشغيل checkov -d . إلى فحص جميع ملفات IaC في الدليل الحالي وإنشاء تقرير مميز بالألوان يوضح الفحوصات الناجحة والفاشلة والمتخطاة، مع مسارات الموارد وإرشادات المعالجة. ويمكن دمج Checkov في مسارات CI/CD من أجل حظر عمليات النشر عند فشل الفحوصات الحرجة.

# Install and run Checkov on Terraform files
pip install checkov
checkov -d ./terraform/ --framework terraform

# Fail CI pipeline on HIGH severity findings
checkov -d ./terraform/ --check HIGH --hard-fail-on HIGH

tfsec: أداة فحص أمان Terraform

إن tfsec (وهو الآن جزء من إمكانات فحص IaC في Trivy) أداة مخصصة لفحص أمان Terraform، وتفهم صياغة HCL بعمق، ما يتيح لها تتبع القيم عبر الوحدات وملفات المتغيرات. وعلى خلاف أدوات الفحص الأبسط، يستطيع tfsec اكتشاف الإعدادات الخاطئة التي تمتد مشكلتها عبر عدة ملفات؛ فعلى سبيل المثال، قد تبدو قاعدة في مجموعة أمان آمنة عند عزلها، لكنها تكون مرفقة بمورد موجود في ملف آخر. ينشئ tfsec نتائج تتضمن مستويات الخطورة (CRITICAL وHIGH وMEDIUM وLOW) ومعرّفات CWE وروابط مباشرة إلى وثائق المعالجة، ما يجعل النتائج قابلة للتنفيذ من جانب المطورين.

# Install tfsec and scan Terraform directory
brew install tfsec
tfsec ./terraform/ --format json

# Or use Trivy for unified IaC + container scanning
trivy config ./terraform/

الأسرار في ملفات IaC

من أخطر مشكلات أمان IaC وجود أسرار مضمنة مباشرة في الشيفرة داخل ملفات الإعداد، مثل كلمات المرور ومفاتيح API ومفاتيح TLS الخاصة وسلاسل اتصال قواعد البيانات التي يتم إيداعها في Git. ونظرًا إلى أن مستودعات IaC غالبًا ما تكون مشتركة بين الفرق ومخزنة في سجل التحكم بالإصدارات، فإن السر الذي يُودع ولو مرة واحدة يُعد مكشوفًا فعليًا بشكل دائم (فسجل Git غير قابل للتغيير). تفحص أدوات مثل Checkov وdetect-secrets وgit-secrets وTruffleHog الأنماط التي تشير إلى الأسرار. ويتمثل الحل في استخدام متغيرات الإدخال المشار إليها من متغيرات البيئة أو مخازن الأسرار، وعدم استخدام قيم مضمنة مباشرة في الشيفرة مطلقًا.

# Bad: hardcoded password in Terraform
resource 'aws_db_instance' 'main' {
  password = 'supersecret123'  # NEVER DO THIS
}

# Good: read from variable, inject from secrets manager
variable 'db_password' { sensitive = true }
resource 'aws_db_instance' 'main' {
  password = var.db_password
}

السياسات كتعليمات برمجية: OPA وSentinel

تتيح أطر Policy as Code (PaC) لفرق الأمان كتابة قواعد مخصصة على شكل شيفرة وفرضها باستمرار. ويسمح Open Policy Agent (OPA) مع Conftest بكتابة سياسات Rego للتحقق من صحة أي بيانات منظمة، مثل خطط Terraform وبيانات Kubernetes الوصفية وقيم Helm، ضمن مسارات CI/CD. أما HashiCorp Sentinel فهو مضمّن في Terraform Enterprise وCloud، ويتيح فرض سياسات مثل «يجب تمكين التشفير في جميع حاويات S3» وقت إعداد الخطة، بحيث يمنع أي عملية apply تنتهك السياسة. وتتيح هذه الأدوات تحويل متطلبات الأمان إلى قواعد برمجية وإدارتها بالإصدارات إلى جانب البنية التحتية التي تحكمها.

# Example Conftest OPA policy: deny public S3
# deny[msg] {
#   input.resource.aws_s3_bucket[name]
#   input.resource.aws_s3_bucket_public_access_block == null
#   msg := sprintf('Bucket %v lacks public access block', [name])
# }

اكتشاف الانحراف: الإعدادات في مقابل الواقع

يحدث انحراف الإعدادات عندما تختلف الحالة الفعلية للبنية التحتية المنشورة عن تعريف IaC، وغالبًا ما يكون ذلك بسبب إجراء شخص ما تغييرًا يدويًا عبر وحدة تحكم السحابة. فقد تتحول قاعدة في مجموعة أمان أُضيفت يدويًا من أجل إلغاء حظر مطور «مؤقتًا» إلى ثغرة دائمة. تقارن أدوات اكتشاف الانحراف باستمرار بين الحالة المطلوبة (ملفات IaC) والحالة الفعلية المنشورة، وتصدر تنبيهات عند وجود اختلافات. وتوفر AWS Config وإمكانات اكتشاف الانحراف في Terraform Cloud وأدوات CSPM مثل Prisma Cloud وWiz هذه الإمكانية. وبذلك يتم اكتشاف إعدادات الأمان الخاطئة الناتجة عن تغييرات وحدة التحكم قبل أن يكتشفها المهاجمون.

# Terraform: detect drift between state and actual cloud resources
terraform plan -refresh-only
# If output shows changes, someone modified infrastructure outside Terraform

البنية التحتية غير القابلة للتغيير وGitOps

تعني البنية التحتية غير القابلة للتغيير أن الخوادم والإعدادات لا تُعدّل في مكانها مطلقًا؛ بل تنشئ التغييرات موارد جديدة (مثل AMI جديدة وصور حاويات جديدة) وتستبدل الموارد القديمة. وعند دمج ذلك مع GitOps (حيث يجب أن تمر جميع تغييرات البنية التحتية عبر طلب سحب في Git، ما يؤدي إلى تشغيل عمليات فحص IaC وسير عمل الموافقة)، يُلغى انحراف الإعدادات بحكم التصميم: فإذا تعذر تغيير شيء يدويًا، فلن ينحرف. وتنفذ أدوات مثل ArgoCD لـ Kubernetes وAtlantis لـ Terraform سير عمل GitOps، حيث يؤدي أي انحراف إلى مصالحة تلقائية أو إلى إصدار تنبيه.

التمييز بين SAST وفحص IaC

يُخلط أحيانًا بين فحص أمان IaC وSAST (اختبار أمان التطبيقات بالتحليل الساكن)، لكن كلًا منهما يستهدف عناصر مختلفة. يحلل SAST الشيفرة المصدرية للتطبيقات (Python وJava وJavaScript) بحثًا عن ثغرات مثل حقن SQL أو تجاوزات المخزن المؤقت. أما فحص IaC فيحلل ملفات إعداد البنية التحتية بحثًا عن إعدادات خاطئة في أمان السحابة، ولا يتعامل مع شيفرة التطبيقات. ويتضمن مسار DevSecOps متكامل كليهما: SAST لشيفرة التطبيقات وفحص IaC لملفات البنية التحتية. ويُشغَّل كلاهما ضمن CI/CD قبل أي عملية نشر. وتجمع بعض المنصات الموحدة، مثل Snyk IaC وPrisma Cloud، بين فحص التطبيقات والبنية التحتية في أداة واحدة.

دمج فحص IaC في CI/CD

يجب أن يكون فحص أمان IaC آليًا ومفروضًا، لا اختياريًا. ويتضمن التكامل المعتاد مع CI/CD ما يلي: تشغيل Checkov وtfsec عند كل طلب سحب؛ إفشال مسار التنفيذ عند وجود نتائج CRITICAL؛ نشر النتائج كتعليقات على طلب السحب ليطلع عليها المطورون؛ الاحتفاظ بقائمة بالنتائج المستثناة مع مبررات موثقة؛ وتشغيل فحص ليلي للموارد المنشورة بحثًا عن الانحراف. ويمكن لـخطافات ما قبل الإيداع باستخدام أدوات مثل pre-commit مع Checkov اكتشاف المشكلات حتى قبل وصول الشيفرة إلى المسار. وتُعد إدارة النتائج الإيجابية الكاذبة مهمة، إذ يبدأ المطورون الذين يرون عددًا كبيرًا من النتائج غير ذات الصلة في تجاهلها.

# GitHub Actions: IaC security scanning
# - name: Run Checkov IaC Scan
#   uses: bridgecrewio/checkov-action@master
#   with:
#     directory: terraform/
#     framework: terraform
#     soft_fail: false  # fail PR on findings
#     output_format: sarif  # upload to GitHub Security tab

أمان حالة Terraform

يحتوي ملف الحالة في Terraform (terraform.tfstate) على الجرد الكامل لجميع الموارد المُدارة، وغالبًا ما يتضمن قيم مخرجات حساسة مثل كلمات مرور قواعد البيانات ومفاتيح TLS الخاصة ومعرّفات مفاتيح وصول IAM بنص واضح. ويجب عدم إيداع ملفات الحالة في Git مطلقًا. وبدلًا من ذلك، استخدم واجهة خلفية بعيدة (مثل AWS S3 مع قفل DynamoDB أو Terraform Cloud أو الحالة المُدارة بواسطة GitLab) مع تمكين التشفير من جانب الخادم. ويجب تقييد الوصول إلى الواجهة الخلفية للحالة بشدة عبر IAM، إذ إن أي شخص يستطيع قراءة ملف الحالة يمكنه حصر تفاصيل البنية التحتية كلها، وربما استخراج الأسرار المضمّنة فيها.

# Secure Terraform remote backend
terraform {
  backend 's3' {
    bucket         = 'my-terraform-state'
    key            = 'prod/terraform.tfstate'
    region         = 'us-east-1'
    encrypt        = true
    kms_key_id     = 'arn:aws:kms:us-east-1:123:key/abc'
    dynamodb_table = 'terraform-state-lock'
  }
}

اختبار سريع

اختبر مدى فهمكم لمفاهيم CompTIA Security+ (SY0-701) الواردة في هذا الدرس.

مراجعة الدرس

تعلمتم في هذا الدرس أن الإعدادات الخاطئة في IaC، مثل حاويات S3 العامة ومجموعات الأمان المفتوحة والأسرار المضمنة مباشرة في الشيفرة، تكتشفها أدوات مثل Checkov وtfsec تلقائيًا قبل النشر؛ وأن أطر السياسات كتعليمات برمجية (OPA/Conftest وHashiCorp Sentinel) تتيح فرض متطلبات الأمان المخصصة للمؤسسة باعتبارها بوابات آلية في المسار؛ وأن ملفات حالة Terraform يجب تخزينها في واجهات خلفية بعيدة ومشفرة مع ضوابط وصول صارمة، لأنها قد تحتوي على تفاصيل حساسة عن الموارد. ننتقل بعد ذلك إلى استكشاف دورة حياة APT وكيف تحافظ التهديدات المتقدمة على وجودها داخل الشبكات.

البدء مجانًا

تعلم Security+ Academy مع معلم ذكاء اصطناعي — مجانًا

اكتب وقم بتشغيل أكوادك الفعلية في المتصفح، واحصل على مساعدة فورية من معلم ذكاء اصطناعي متاح 24/7، واستمر من حيث توقفت على الويب أو في التطبيق.

الدورات
30
الدروس
120

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

هل درس «فحص أمان البنية التحتية باعتبارها شيفرة» مجاني؟

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

ماذا ستتعلم في «فحص أمان البنية التحتية باعتبارها شيفرة»؟

افحصوا مخططات Terraform وCloudFormation وHelm باستخدام أدوات أمان IaC (Checkov وtfsec) لاكتشاف الإعدادات الخاطئة قبل وصولها إلى بيئة الإنتاج. تتمرن على Security+ Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Security+ Academy؟

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

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

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

هل يمكنني كتابة وتشغيل أكواد في درس Security+ Academy هذا؟

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

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

  1. أمان الحاويات: تقوية الصور والحماية أثناء التشغيل
  2. أمان Kubernetes: RBAC وسياسات الشبكة وأمان Pod
  3. أمان الحوسبة عديمة الخوادم والدوال
  4. فحص أمان البنية التحتية باعتبارها شيفرة
← العودة إلى Security+ Academy