السياسة لكود البنية التحتية
السياسة لكود البنية التحتية
منحت البنية التحتية كود الفرقَ قابلية التكرار والسرعة — لكنها تعني أيضاً أن وحدة Terraform واحدة مُهيَّأة بشكل خاطئ يمكنها طبع نفس الثغرة الأمنية في كل بيئة خلال دقائق. يُعدّ تطبيق السياسة على مستوى IaC، قبل تشغيل terraform apply على الإطلاق، أعلى نقطة رافعة للتحكم في برنامج الامتثال السحابي. تتناول هذه الدرس الأدوات الثلاثة السائدة التي تُطبّق هذا الحاجز: Checkov، وtfsec، وHashiCorp Sentinel.
لماذا نُطبّق الحاجز في مرحلة الخطة؟
تتزايد تكلفة الإعداد الخاطئ كلما تأخر اكتشافه. اكتشاف حاوية S3 مفتوحة في فحص ثابت لملف .tf لا يكلف شيئاً. اكتشافه بعد terraform apply في الإنتاج يعني الاستجابة للحوادث، واحتمال كشف البيانات، ونتائج التدقيق. الهدف هو الفشل السريع في خط أنابيب سحب الطلبات حتى يصلح المهندسون المشكلات في حين لا يزال السياق حاضراً وقبل استدعاء أي واجهة برمجية للسحابة.
توجد ثلاث نقاط تطبيق طبيعية:
- خطافات ما قبل الالتزام — اكتشاف الأخطاء الواضحة على جهاز المهندس قبل وصول الكود إلى نظام التحكم بالإصدارات.
- حاجز PR في CI — تشغيل فحص كامل على كل طلب سحب؛ حجب الدمج إذا فشلت سياسات عالية الخطورة.
- فحص خطة Terraform — تحليل JSON الخطة الفعلية (وليس ملفات المصدر فقط) للتعبيرات المُقيَّمة وقت التشغيل التي لا يستطيع التحليل الثابت رؤيتها.
تستخدم خطوط الأنابيب الاحترافية الثلاث طبقات معاً؛ وحاجز CI هو النقطة غير القابلة للتفاوض لأنه التحقق الآلي الأخير قبل وصول الكود إلى الفرع الرئيسي.
Checkov — التحليل الثابت مفتوح المصدر
يقوم Checkov، الذي تصونه Bridgecrew (Prisma Cloud حالياً)، بفحص HCL الخاص بـ Terraform وقوالب CloudFormation وبيانات Kubernetes وقوالب ARM وملفات Dockerfile. يتضمن أكثر من 1000 فحص مدمج مُعيَّن على معايير CIS وSOC 2 وPCI DSS وHIPAA وNIST 800-53. وهو الخيار مفتوح المصدر الأكثر شيوعاً لأنه مجاني ومحدَّث باستمرار ويتكامل بسلاسة مع GitHub Actions وGitLab CI.
أكثر الأعلام فائدةً في سياق CI: --soft-fail يُخرج 0 حتى عند الفشل (مفيد لمراحل الإبلاغ)؛ --check CKV_AWS_18,CKV_AWS_20 يُشغّل معرّفات فحص محددة فقط؛ --skip-check CKV_AWS_144 يتخطى فحصاً مع تعليق مبرَّر في .checkov.yaml. اعمل دائماً على قمع التنبيهات عبر ملف التكوين، وليس عبر --skip-check مضمَّناً في أوامر CI — فعمليات القمع في ملف التكوين قابلة للمراجعة والتدقيق.
var.enable_logging ? true : false لا يمكن حلّها دائماً من HCL وحده. يحتوي JSON الخطة على القيم المُقيَّمة، لذا يكتشف فحص ملف الخطة الإعدادات الخاطئة المشروطة التي يفوتها فحص ملف المصدر.
tfsec — ماسح Terraform سريع ومخصص
تfsec (مدمج الآن في Trivy كـ trivy config) مصمم خصيصاً لـ Terraform. مكتوب بـ Go، سريع للغاية، ويفهم مراجع الوحدات عبر المجلدات — ميزة مهمة عندما يمتلك مستودعك تسلسلاً هرمياً للوحدات. يُرفق مخرجاته مباشرةً بإرشادات المعالجة وضابط معيار CIS ذي الصلة.
يُعدّ استخدام مخرجات SARIF أفضل ممارسة في خطوط أنابيب المؤسسات لأن GitHub وGitLab يستطيعان عرض تعليقات الكود المضمّنة مباشرة في طلب السحب، مما يتيح للمهندسين رؤية أي سطر أطلق أي اكتشاف دون مغادرة واجهة المراجعة.
HashiCorp Sentinel — السياسة كود لمنظومة Terraform
Sentinel هو إطار عمل السياسات التجاري لـ HashiCorp، المتاح في Terraform Cloud وTerraform Enterprise. على خلاف Checkov وtfsec اللذان يعملان خارجياً، يعمل Sentinel داخل سير عمل تشغيل Terraform، مع وصول مباشر إلى الخطة وبيانات التشغيل وتكوين مساحة العمل. هذا يجعله نقطة التطبيق الموثوقة عندما تستخدم منظمتك Terraform Cloud كمحرك تطبيق.
تُكتب سياسات Sentinel بلغة Sentinel (مشابهة لـ Go) ويمكن ضبطها على ثلاثة مستويات تطبيق: استشاري (تحذير فقط)، وإلزامي ناعم (يمكن تجاوزه بمبرر)، وإلزامي صارم (يحجب التطبيق تماماً، دون أي تجاوز). استخدم الإلزامي الصارم للضوابط التنظيمية (التشفير، حجب الوصول العام) والإلزامي الناعم للمعايير التنظيمية التي توجد فيها استثناءات مشروعة.
terraform plan محلياً أو في CI غير مرتبط بـ TFC يتجاوزونه تماماً. اقرن دائماً Sentinel بـ Checkov/Trivy في خط أنابيب PR — Sentinel هو الحاجز الصارم النهائي؛ وCheckov هو حلقة التغذية الراجعة المبكرة.
نمط تكامل GitHub Actions
تُشغّل وظيفة CI الاحترافية الفحوصات بالتوازي، وترفع نتائج SARIF إلى تبويب الأمان، وتُفشل خط الأنابيب إذا وُجدت أي اكتشافات CRITICAL أو HIGH في الفئات الخاضعة للسياسة. الاكتشافات الإعلامية ومنخفضة الخطورة تُبلَّغ عنها لكنها لا تُعيق.
إدارة استثناءات القمع دون تراكم ديون الامتثال
ستكشف كل عملية فحص عن اكتشافات مقبولة فعلاً في بيئتك — حاوية S3 عامة تستضيف موقعاً ثابتاً على سبيل المثال. اعمل على قمع هذه التنبيهات عبر ملف تكوين .checkov.yaml مُلتزم به في المستودع، وليس عبر أعلام CLI مضمّنة. يجب أن يتضمن كل قمع معرّف الفحص، والمورد الذي ينطبق عليه، وتعليقاً يوضح مبرر الأعمال. عمليات القمع بدون تعليقات مبرَّرة تُخفق في عملية مراجعة الكود، والأهم، في مراجعة المدققين.
date لكل استثناء قمع وشغّل وظيفة ربع سنوية تُنبّه على الاستثناءات الأقدم من 90 يوماً. الاستثناءات دين تقني — يجب أن تكون محدودة بوقت وخاضعة للمراجعة، لا متراكمة إلى أجل غير مسمى. فشلت منظمات كثيرة في التدقيق ليس لأن لديها استثناءات، بل لأن لديها استثناءات لا يتذكر أحد من أذن بها.
يُنشئ الجمع بين فحوصات مصدر Checkov وفحوصات ملف الخطة وTrivy للتحليل الواعي بالوحدات وSentinel كحاجز صارم في Terraform Cloud، هندسةَ تطبيق سياسة دفاعية متعددة الطبقات. تكتشف كل طبقة فئات مختلفة من الإعداد الخاطئ، ومعاً تمنحك أثر الأدلة الموثق والآلي الذي يتطلبه مدققو SOC 2 وPCI DSS.