اكتشاف الانجراف والامتثال المستمر
اكتشاف الانجراف والامتثال المستمر
يُحدّد "الكود كسياسة" ما يجب أن تبدو عليه بنيتك التحتية. أما اكتشاف الانجراف فيجيب على السؤال الأصعب: هل لا تزال تبدو هكذا الآن؟ في بيئات الإنتاج، تتسع الهوة بين الحالة المطلوبة والحالة الفعلية باستمرار — يُطبّق المهندسون إصلاحات يدوية طارئة، وتُحدّث مزودو الخدمات السحابية الإعدادات الافتراضية، وتنشئ آليات التوسع التلقائي موارد لم تكن في Terraform أصلاً، وتُغيّر واجهات برمجة التطبيقات سلوكها بصمت. يُغلق الامتثال المستمر هذه الحلقة باكتشاف الانجراف والتنبيه عنه ومعالجته قبل أن يتحول إلى نتيجة أمنية أو إخفاق في التدقيق.
ما هو الانجراف ولماذا يحدث؟
الانجراف هو أي انحراف بين الحالة المطلوبة المُعلنة (ملف حالة Terraform، بيان Kubernetes، النسخة الذهبية من AMI، سياسة OPA) والمورد الحي. هناك ثلاثة أسباب جذرية ستواجهها بشكل متكرر في بيئات الإنتاج:
- التغييرات الطارئة: يُطبّق مهندس في فريق الاستجابة الطارئة تغييراً يدوياً عبر AWS Console في الساعة الثانية صباحاً لوقف انقطاع في الإنتاج، ولا يُرمَّز هذا التغيير أبداً.
- التأثيرات الجانبية للأتمتة: التوسع التلقائي، وإطار عمل Lambda، ومُزوّد عُقد Kubernetes التلقائي، وتحديثات مجموعات معاملات RDS — كلها تنشئ أو تُعدّل موارد خارج نطاق IaC.
- التعديل الخارجي: يُهمل مزود الخدمة السحابية إصداراً من TLS، أو يُغيّر إعداد التشفير الافتراضي، أو يُدوّر موارد الأجهزة الأساسية، مما يُغيّر الحالة الفعلية للمورد دون أي إجراء من جانبك.
اكتشاف الانجراف في Terraform عملياً
يُعدّ terraform plan أبسط أداة لاكتشاف الانجراف للموارد المُدارة بـ IaC. شغّله في وضع القراءة فقط مقابل واجهة برمجة التطبيقات الخاصة بالمزود، وسيُبلّغ عن الفرق بين الحالة والواقع. في خطوط CI/CD، النمط المعتمد هو مهمة "خطة اكتشاف الانجراف" المجدولة التي تستخدم -detailed-exitcode (كود الخروج 2 يعني وجود انجراف) وتُطلق تنبيهاً إن كان الكود غير صفر.
terraform apply تلقائياً رداً على الانجراف. تحقق أولاً من أن الانجراف غير مقصود — فقد يكون تغييراً مشروعاً خارج النطاق ينبغي استيراده لا الكتابة فوقه. التطبيق الأعمى التلقائي يمكن أن يحذف موارد إنتاجية تم إنشاؤها خارج نطاق IaC عمداً.
AWS Config للامتثال المستمر للموارد
يُغطي اكتشاف انجراف Terraform الموارد التي تُديرها Terraform فقط. أما AWS Config فيُغطي كل شيء في حسابك — الموارد التي أنشأتها أدوات أخرى، أو AWS Console، أو AWS نفسها. يُسجّل Config تغييرات الإعداد باستمرار ويُقيّمها مقابل القواعد التي تُحدّدها. عند خروج مورد عن الامتثال، يُطلق Config نتيجة يمكن توجيهها إلى Security Hub أو SNS أو دالة Lambda للمعالجة.
أكثر قواعد AWS Config تأثيراً على نطاق واسع هي required-tags (فرض وسوم تخصيص التكلفة والملكية على جميع الموارد) وencrypted-volumes (اكتشاف وحدات تخزين EBS غير المشفرة). كلتاهما قواعد مُدارة من AWS لا تتطلب كتابة أي Lambda.
Kubernetes: المزامنة المستمرة كضبط للانجراف
في Kubernetes، يُعالَج الانجراف بشكل مختلف لأن مستوى التحكم يُزامن باستمرار. إذا حررت يدوياً نشراً مُداراً بواسطة Flux أو ArgoCD باستخدام kubectl edit، سيكتشف متحكم GitOps التناقض في دورة المزامنة التالية ويُعيد المورد إلى الحالة المُعلنة في Git — عادةً في غضون 30 إلى 90 ثانية. هذا يجعل GitOps آلية التحكم في الانجراف الأقوى لأحمال عمل Kubernetes.
للحالات التي يجب فيها اكتشاف الانجراف بدلاً من إعادته تلقائياً (مثل كائنات RBAC أو NetworkPolicy التي حذفها شخص ما يدوياً)، استخدم kubectl diff -f manifests/ في مهمة CI مجدولة لمقارنة حالة الكلاستر الحي مع بيانات Git.
التقارير المستمرة للامتثال
اكتشاف الانجراف دون إعداد تقارير غير مكتمل. يحتاج المدققون إلى رؤية سجل متسلسل زمنياً: متى جرى آخر فحص للبيئة، وماذا وُجد، ومن عالجه، وكم استمرت الحالة غير الممتثلة؟ ابنِ هذا في خط الأنابيب من اليوم الأول:
- نسبة الامتثال عبر الزمن: تتبّع نسبة الموارد الممتثلة إلى الإجمالي في مقياس متسلسل زمنياً. يعرض جدول امتثال AWS Config واتجاهات نتائج Security Hub هذا أصلاً. في Kubernetes، تُصدّر أدوات مثل Falco وPolaris مقاييس Prometheus يمكنك رسمها في Grafana.
- متوسط وقت المعالجة (MTTR): أطلق تنبيهاً عندما تظل أي نتيجة مفتوحة أطول من SLA المتفق عليه (مثال: حرج = 24 ساعة، مرتفع = 72 ساعة). هذا مقياس رئيسي في تدقيقات SOC 2 من النوع الثاني.
- قابلية تتبع التغييرات: يجب ربط كل إجراء معالجة بتذكرة (JIRA، Linear) ومرتبطة بالنتيجة المحددة. يجب أن تكتب دوال Lambda للمعالجة سجلاً منظماً يتضمن معرّف المورد، ومعرّف النتيجة، والإجراء المتخذ، والطابع الزمني — إلى CloudWatch Logs Insights لإمكانية الاستعلام.