أين يتم تنفيذ سياسات البنية التحتية: مراحل التخطيط والتطبيق وما بعد النشر
لقد قمت بكتابة سياسات البنية التحتية الخاصة بك ككود. تتحقق هذه السياسات من انتهاكات الأمان، وتجاوز التكاليف، وقواعد التسمية. الآن يأتي السؤال العملي: أين في خط أنابيبك يجب أن تعمل هذه السياسات فعليًا؟
الإجابة ليست مكانًا واحدًا. بل ثلاثة أماكن. كل موقع يكتشف نوعًا مختلفًا من المشاكل، وتجاهل أي منها يترك ثغرات في حواجز الحماية الخاصة بك.
السياسة في مرحلة التخطيط: اكتشاف المشاكل قبل حدوثها
المكان الأول لتشغيل السياسات هو أثناء مرحلة التخطيط. في أدوات مثل Terraform أو Pulumi أو OpenTofu، تقوم مرحلة التخطيط بحساب التغييرات التي سيتم إجراؤها على البنية التحتية. تظهر لك الفرق: الموارد التي سيتم إنشاؤها أو تعديلها أو حذفها. لكن لم يتغير شيء فعليًا بعد.
تشغيل السياسات هنا يعمل كمرشح مبكر. يقوم محرك السياسات بفحص التغييرات المخطط لها ويقرر ما إذا كانت مسموحة أم لا. إذا حاول أحد المطورين فتح مجموعة أمان لعنوان 0.0.0.0/0، تمنعها السياسة في مرحلة التخطيط. إذا اختار شخص نوع مثيل مكلف يتجاوز حد ميزانيتك، تضع السياسة علامة عليه. إذا لم يتبع اسم المورد قاعدة التسمية الخاصة بك، ترفضه السياسة.
الميزة واضحة: تمنع الانتهاكات قبل وجود أي مورد. يتوقف خط الأنابيب، ويتلقى المطور رسالة واضحة حول ما تم منعه ولماذا، ويمكنه إصلاح الكود دون الحاجة إلى تنظيف الموارد التي تم إنشاؤها بالفعل. لا حاجة للتراجع. لا موارد يتيمة. لا نافذة تعرض أمني.
إليك مثال ملموس باستخدام Open Policy Agent (OPA) لفرض سياسة تمنع مجموعات الأمان العامة في مرحلة التخطيط:
# إنشاء خطة Terraform وتحويلها إلى JSON
export TF_VAR_region="us-east-1"
terraform plan -out=plan.tfplan
terraform show -json plan.tfplan > plan.json
# تقييم السياسة: ارفض إذا كانت أي مجموعة أمان تحتوي على دخول من 0.0.0.0/0
# policy.rego تحتوي على: deny[msg] { ... }
opa eval --data policy.rego --input plan.json "data.terraform.deny"
# إذا كان الإخراج يحتوي على رسالة رفض، فشل خط الأنابيب
if opa eval --data policy.rego --input plan.json "data.terraform.deny" | grep -q '"result"'; then
echo "POLICY VIOLATION: Public security group detected. Blocking deployment."
exit 1
fi
هذا هو المكان الأكثر كفاءة لفرض السياسات. يوفر الوقت، ويقلل الهدر، ويحافظ على نظافة البنية التحتية منذ البداية.
السياسة في مرحلة التطبيق: خط الدفاع الأخير
المكان الثاني لتشغيل السياسات هو أثناء مرحلة التطبيق. التطبيق هو عندما تصل التغييرات فعليًا إلى البنية التحتية. يتم إنشاء الموارد أو تعديلها أو تدميرها بشكل حقيقي.
لماذا تشغيل السياسات مرة أخرى إذا كنت قد تحققت بالفعل في مرحلة التخطيط؟ لأن فحوصات مرحلة التخطيط لها نقاط عمياء. إنها ترى فقط ما هو موجود في الكود. لا يمكنها رؤية الحالة الفعلية للبنية التحتية، والتي قد تكون قد انحرفت خارج خط الأنابيب. ربما قام شخص ما بتغيير مورد يدويًا من خلال وحدة التحكم. ربما ترك نشر سابق الأشياء في حالة غير متوقعة. تفترض الخطة نقطة بداية معينة، لكن الواقع قد يختلف.
السياسة في مرحلة التطبيق تعيد التحقق من الصحة قبل تنفيذ التغييرات. تكتشف الحالات التي بدت فيها الخطة جيدة ولكن حالة البنية التحتية الفعلية قد تسبب انتهاكًا. كما تتعامل مع السيناريوهات التي تأتي فيها التغييرات من خارج خط الأنابيب بالكامل. إذا قام شخص بتشغيل تطبيق Terraform يدويًا من جهاز الكمبيوتر المحمول الخاص به، فإن سياسة وقت التطبيق لا تزال تعمل.
حالة استخدام مهمة أخرى هي بوابات الموافقة. في مرحلة التخطيط، يمكن للسياسة اكتشاف الانتهاك ووضع علامة عليه. لكن قرار المتابعة أو التوقف غالبًا ما يحدث في مرحلة التطبيق. ربما يتطلب الانتهاك موافقة مهندس أول على استثناء. ربما يكون التغيير عالي المخاطر ويحتاج إلى مراجعة من شخص آخر. يمكن لسياسات وقت التطبيق فرض سير العمل هذه.
فكر في سياسات مرحلة التخطيط كمنع وسياسات مرحلة التطبيق كتحقق. كلاهما مطلوب.
السياسة بعد النشر: اكتشاف الانحراف والانتهاكات الصامتة
المكان الثالث لتشغيل السياسات هو بعد أن تكون الموارد قيد التشغيل بالفعل. هذا هو الإنفاذ بعد النشر، ويخدم غرضًا مختلفًا.
سياسات التخطيط والتطبيق تكتشف الانتهاكات في لحظة التغيير. لكن البنية التحتية لا تبقى ثابتة. يمكن لشخص لديه وصول إلى وحدة التحكم تعديل قاعدة مجموعة أمان بعد النشر. يمكن أن يجعل مطلب امتثال جديد الموارد المقبولة سابقًا غير متوافقة. الموارد التي كان من المفترض أن تكون مؤقتة قد تظل قيد التشغيل بعد أشهر، مما يكلف المال.
سياسات ما بعد النشر تعمل وفق جدول زمني. كل ساعة، أو كل ليلة، أو كل أسبوع، تقوم بمسح البنية التحتية الحية ومقارنتها بقواعد السياسة الخاصة بك. أي مورد ينتهك قاعدة يتم الإبلاغ عنه. يذهب التقرير إلى Slack أو البريد الإلكتروني أو لوحة المعلومات. ثم يقوم الفريق بإصلاح الانتهاك أو إزالة المورد.
هذه هي الطريقة التي تكتشف بها انحراف التكوين. وهي أيضًا الطريقة التي تفرض بها السياسات التي لا يمكن التحقق منها في مرحلة التخطيط أو التطبيق. على سبيل المثال، سياسة تقول "لا يجب أن يكون أي مورد أقدم من 90 يومًا دون مراجعة" لا يمكن فرضها إلا عن طريق مسح الموارد قيد التشغيل بشكل دوري.
سياسات ما بعد النشر تحول الامتثال من بوابة لمرة واحدة إلى ممارسة مستمرة. بدونها، تنحرف البنية التحتية ببطء عن معاييرك، ولا يلاحظ أحد ذلك حتى التدقيق التالي.
كيف تعمل النقاط الثلاث معًا
تغطي كل نقطة ما تفتقده النقاط الأخرى. سياسات مرحلة التخطيط تمنع الانتهاكات قبل حدوثها. سياسات مرحلة التطبيق تكتشف ما فاتته مرحلة التخطيط وتفرض سير عمل الموافقة. سياسات ما بعد النشر تكتشف الانحراف والمشكلات طويلة الأمد.
يوضح الرسم البياني أدناه كيف تتناسب نقاط فحص السياسات الثلاث في خط أنابيب البنية التحتية النموذجي:
إذا قمت بتشغيل السياسات فقط في مرحلة التخطيط، فإن التغييرات اليدوية تتجاوز قواعدك. إذا قمت بتشغيل السياسات فقط في مرحلة التطبيق، فإنك لا تزال تنشئ موارد تنتهك السياسة قبل تشغيل الفحص. إذا قمت بتشغيل السياسات فقط بعد النشر، فأنت دائمًا تتفاعل مع المشاكل بدلاً من منعها.
كل الثلاثة ضرورية لنظام حواجز حماية كامل.
قائمة مرجعية عملية
إليك مرجع سريع لإعداد نقاط تنفيذ السياسات في خط الأنابيب الخاص بك:
- مرحلة التخطيط: تشغيل السياسات ضد الفرق المخطط. منع التغييرات التي تنتهك قواعد الأمان أو التكلفة أو التسمية. فشل خط الأنابيب مبكرًا.
- مرحلة التطبيق: تشغيل السياسات مرة أخرى قبل تنفيذ التغييرات. اكتشاف الانحراف وفرض الموافقة اليدوية للتغييرات عالية المخاطر.
- ما بعد النشر: جدولة فحوصات دورية للسياسات على البنية التحتية الحية. الإبلاغ عن الانتهاكات للفريق. إصلاح أو إزالة الموارد غير المتوافقة.
الخلاصة
تشغيل السياسات في مكان واحد لا يكفي. فحوصات مرحلة التخطيط تمنع المشاكل قبل أن تبدأ. فحوصات مرحلة التطبيق تكتشف ما يتسرب. فحوصات ما بعد النشر تحافظ على أمانة البنية التحتية بمرور الوقت. قم ببناء الثلاثة في خط الأنابيب الخاص بك، وستقوم سياساتك بالفعل بحماية البنية التحتية الخاصة بك بدلاً من مجرد إعطائك شعورًا زائفًا بالأمان.