عندما تتغير البنية التحتية خارج خط الأنابيب الخاص بك: كشف الانحراف للامتثال للسياسات

لقد كتبت سياسات. لديك فحوصات آلية في خط أنابيب CI/CD الخاص بك. كل نشر يمر عبر التحقق من الصحة قبل وصول أي شيء إلى الإنتاج. يشعر فريقك بالثقة أن البنية التحتية تتبع القواعد.

ثم يحتاج أحد أعضاء الفريق إلى تصحيح مشكلة إنتاجية في الساعة 10 مساءً. يسجل الدخول إلى وحدة التحكم السحابية، ويفتح منفذ مجموعة أمان إلى عنوان IP المنزلي الخاص به، ويصلح المشكلة، ويذهب إلى النوم. ينسى التراجع عن التغيير. في الصباح التالي، لا تزال مجموعة الأمان تلك مفتوحة. لم يعلم خط الأنابيب الخاص بك بذلك مطلقًا. لم تكتشف سياساتك ذلك أبدًا.

هذا السيناريو ليس نادرًا. يحدث عندما يختصر المهندسون الطرق أثناء الحوادث، أو عندما ينشئ فريق آخر موارد يدويًا لأن خط الأنابيب الخاص بك يبدو بطيئًا جدًا، أو عندما يطلق القياس التلقائي مثيلات جديدة بتكوينات افتراضية تنتهك سياساتك. كل هذه التغييرات تحدث خارج خط أنابيب CI/CD الخاص بك، لذا فإن فحوصات السياسة التي بنيتها بعناية في خطوات التخطيط والتطبيق لا تراها أبدًا.

ما يعنيه كشف الانحراف فعليًا

كشف الانحراف هو عملية مقارنة حالة البنية التحتية الفعلية الخاصة بك بما يجب أن تكون عليه وفقًا لسياساتك. يتم تشغيله بشكل دوري - كل ساعة، أو كل يوم، أو أي وتيرة مناسبة لفريقك - ويبلغ عن الموارد التي انحرفت عن القواعد.

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

كيف يعمل كشف الانحراف عمليًا

الآليات واضحة ومباشرة. أداة أو نص برمجي يستدعي واجهة برمجة التطبيقات لمزود السحابة الخاص بك لسرد جميع الموارد الموجودة. ثم يتحقق من كل مورد مقابل سياساتك المحددة واحدًا تلو الآخر.

إليك نص bash بسيط يقوم بتشغيل خطة Terraform وينبه في حالة اكتشاف انحراف:

#!/bin/bash
# Scheduled drift detection script (run via cron every hour)
cd /path/to/terraform/project
terraform init -input=false > /dev/null 2>&1
terraform plan -detailed-exitcode -input=false -no-color > plan_output.txt 2>&1
EXIT_CODE=$?
if [ $EXIT_CODE -eq 2 ]; then
  echo "Drift detected at $(date)" >> drift_alerts.log
  # Send notification (e.g., Slack webhook)
  curl -s -X POST -H 'Content-type: application/json' \
    --data "{\"text\":\"Drift detected in production infrastructure. Check plan_output.txt for details.\"}" \
    https://hooks.slack.com/services/YOUR/WEBHOOK/URL
elif [ $EXIT_CODE -eq 1 ]; then
  echo "Terraform plan failed at $(date)" >> drift_alerts.log
fi

على سبيل المثال، تقول سياستك أنه لا ينبغي لأي مجموعة أمان أن يكون لديها المنفذ 22 مفتوحًا على 0.0.0.0/0. يفحص كشف الانحراف كل مجموعة أمان ويضع علامة على أي انتهاك. أو تتطلب سياستك وجود علامة owner على كل مورد. يقوم كشف الانحراف بجرد جميع الموارد ويضع علامة على تلك التي تفتقد العلامة.

يجب أن تذهب النتائج إلى مكان ينظر إليه فريقك بالفعل. لوحة المعلومات تعمل. إشعارات Slack أو البريد الإلكتروني تعمل. تذكرة آلية في نظام التتبع الخاص بك تعمل. ما لا يعمل هو إنشاء تقرير لا يقرأه أحد. يجب أن يمتلك شخص ما المتابعة، وإلا سيصبح كشف الانحراف مجرد ضوضاء.

أدوات تساعدك في كشف الانحراف

تتضمن العديد من الأدوات بالفعل إمكانيات كشف الانحراف. يحتوي Terraform على terraform plan الذي يمكنه إظهار الاختلافات بين ملف الحالة الخاص بك والبنية التحتية الحقيقية. لكن هذا يساعد فقط في الموارد التي تتم إدارتها من خلال Terraform. الموارد التي تم إنشاؤها خارج Terraform تحتاج إلى نهج مختلف.

يمكن للأدوات السحابية الأصلية المسح على نطاق واسع. AWS Config و Azure Policy و Google Cloud Asset Inventory تفحص الموارد باستخدام واجهات برمجة التطبيقات الأصلية الخاصة بها. إنها تفهم نموذج موارد مزود السحابة بعمق ويمكنها التحقق من الامتثال عبر كل شيء في حسابك.

توجد خيارات مفتوحة المصدر أيضًا. يمكن لـ Open Policy Agent (OPA) العمل كمحرك سياسات تقوم بتشغيله بشكل دوري ضد البنية التحتية الخاصة بك. تكتب السياسات بلغة Rego، ويقوم OPA بتقييمها مقابل بيانات الموارد التي تغذيها.

الجزء الصعب: ماذا تفعل عندما تجد انحرافًا

العثور على الانحراف هو نصف العمل فقط. السؤال الأصعب هو ماذا يحدث بعد ذلك.

تقارير الانحراف الجيدة تتضمن معلومات كافية لإصلاح المشكلة. تخبرك أي مورد انتهك أي سياسة، ومن الأفضل كيفية تصحيحه. تذهب بعض الفرق إلى أبعد من ذلك وتنفذ التصحيح التلقائي - عندما يتم اكتشاف الانحراف، يقوم النظام تلقائيًا بإعادة المورد إلى حالته المتوافقة.

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

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

ثلاث طبقات من الحماية

يكمل كشف الانحراف دورة فرض السياسات الخاصة بك. فكر في الأمر على أنه ثلاث طبقات تغطي النقاط العمياء لبعضها البعض:

يوضح الرسم البياني أدناه كيف تتفاعل هذه الطبقات الثلاث:

flowchart TD A[تغيير الكود] --> B[فحص السياسة في وقت التخطيط] B -->|نجاح| C[فحص السياسة في وقت التطبيق] B -->|فشل| D[حظر النشر] C -->|نجاح| E[نشر إلى الإنتاج] C -->|فشل| D E --> F[البنية التحتية قيد التشغيل] F --> G[تغيير يدوي / إصلاح حادثة] G --> H[فحص كشف الانحراف] H -->|متوافق| I[لا إجراء] H -->|تم العثور على انحراف| J[تنبيه الفريق] J --> K[تصحيح يدوي] K --> F J --> L[تصحيح تلقائي] L --> F
  1. فحص السياسة في وقت التخطيط - يمنع الانتهاكات قبل وصولها إلى الإنتاج
  2. فحص السياسة في وقت التطبيق - يكتشف أي شيء تسلل عبر التخطيط
  3. كشف الانحراف الدوري - يجد التغييرات التي حدثت خارج خط الأنابيب

لا توجد طبقة واحدة كافية. لا يمكن لفحوصات خط الأنابيب اكتشاف التغييرات اليدوية في وحدة التحكم. لا يمكن لكشف الانحراف منع الانتهاكات من الحدوث في المقام الأول. معًا، يمنحونك تغطية تحافظ على توافق البنية التحتية الخاصة بك مع سياساتك حتى عندما تتغير الأمور خارج سير العمل الآلي الخاص بك.

قائمة ممارسة عملية

  • اختر وتيرة لفحوصات الانحراف بناءً على مدى سرعة تغير البنية التحتية الخاصة بك
  • اختر أدوات تغطي كلاً من الموارد المُدارة وغير المُدارة في بيئتك
  • أرسل تقارير الانحراف إلى قناة يراقبها فريقك بالفعل
  • عيّن ملكية لمتابعة نتائج الانحراف
  • ابدأ بالتصحيح اليدوي قبل التفكير في الأتمتة
  • وثّق الاستثناءات المؤقتة حتى يعرف فريقك أي انحرافات مقصودة

ماذا يعني هذا لفريقك

سياساتك تكون قوية فقط بقدر قدرتك على فرضها في كل مكان تتغير فيه البنية التحتية. تتعامل فحوصات خط الأنابيب مع التغييرات التي تتحكم فيها. يتعامل كشف الانحراف مع التغييرات التي لا تتحكم فيها. بدون كليهما، سياستك هي مجرد مستند يصف ما يجب أن يكون صحيحًا، وليست آلية تحافظ على صحته. قم ببناء كشف الانحراف في عملياتك، وستظل البنية التحتية الخاصة بك متوافقة حتى عند حدوث غير المتوقع.