عندما تكون البنية التحتية هي المنتج: حوكمة IaC وكشف الانحراف
تخيل أنك مسؤول عن مئات أو آلاف الخوادم المنتشرة عبر مزودي سحابة ومناطق متعددة. قد تكون شركتك مزود خدمة سحابية، أو منصة تجارة إلكترونية كبيرة، أو شركة تقنية تنشر بنيتها التحتية في سنغافورة وفرانكفورت وفيرجينيا في وقت واحد.
في هذه البيئة، البنية التحتية ليست مجرد مكان لتشغيل التطبيقات. البنية التحتية هي المنتج. أي تغيير في التكوين - إضافة قاعدة جدار حماية، تغيير حجم قاعدة بيانات، تعديل معلمة موازن تحميل - يمكن أن يؤثر على عشرات الخدمات في آن واحد. تكوين خاطئ واحد لا يعطل تطبيقًا واحدًا. إنه يعطل مئات الخدمات التي تعتمد على تلك البنية التحتية المشتركة.
هذا عالم مختلف عن نشر تطبيق ويب واحد. المخاطر أعلى، ونطاق الانفجار أوسع، وهامش الخطأ يقترب من الصفر.
مشكلة الاتساق التي تؤدي إلى IaC
عندما تُدار البنية التحتية يدويًا عبر جلسات SSH أو لوحات التحكم السحابية، تتسلل التناقضات بسرعة. بيئة الاختبار لديك بها قواعد جدار حماية مختلفة قليلاً عن بيئة الإنتاج. إعدادات الإنتاج في آسيا تختلف عن أوروبا. لا يمكن لأحد أن يقول بثقة ما هو التكوين الفعلي الجاري تشغيله الآن.
هذه هي اللحظة التي تلجأ فيها الفرق إلى البنية التحتية ككود (IaC). تكتب كل تكوينات البنية التحتية ككود، وتخزنها في Git، وتطبقها تلقائيًا عبر خطوط الأنابيب. تصبح Terraform أو Pulumi أو AWS CDK أو CloudFormation أدواتك الأساسية. كل خادم، وقاعدة شبكة، ومخزن تخزين يتم تعريفه في نظام التحكم بالإصدارات.
لكن كتابة التكوين ككود هي فقط الخطوة الأولى. بمجرد أن تصبح بنيتك التحتية في كود، يظهر سؤال جديد: "كيف نضمن أن كل تغيير يتبع سياساتنا قبل أن يصل إلى الإنتاج؟"
حوكمة IaC: سياسة آلية، وليس بيروقراطية
الحوكمة تبدو وكأنها كلمة تبطئ الأمور. في الممارسة العملية، حوكمة IaC هي العكس تمامًا. إنها حواجز حماية آلية تفحص كل تغيير قبل أن يصل إلى الإنتاج، دون الحاجة إلى إنسان لقراءة كل سطر من التكوين.
إليك كيف تعمل في الممارسة. يقرر فريق الأمان أن جميع مخازن التخزين يجب أن تكون مشفرة. يفرض فريق الامتثال أن جميع قواعد البيانات تستخدم نوع مثيل محدد. يطلب فريق الشبكات ألا تفتح أي قاعدة جدار حماية المنفذ 22 أو 3306 للإنترنت العام.
يوضح الرسم البياني التالي خط أنابيب الحوكمة الآلي من تقديم الكود إلى النشر وكشف الانحراف:
تتم كتابة هذه القواعد كسياسات آلية تعمل داخل خط أنابيب CI/CD الخاص بك. عندما يقدم شخص ما طلب سحب يغير كود البنية التحتية، لا يقوم خط الأنابيب بتطبيق التغيير فحسب. بل يفحص أولاً كل مورد مقابل سياساتك. إذا انتهك تغيير سياسة ما، يفشل خط الأنابيب. لا يصل التغيير إلى الإنتاج أبدًا.
على سبيل المثال، إليك قاعدة OPA بسيطة تفرض معيار وسوم، وتتطلب أن يكون لكل مورد وسم cost-center:
package terraform
# رفض أي مورد لا يحتوي على وسم 'cost-center'
violation[msg] {
resource := input.resource_changes[_]
resource.type in ["aws_s3_bucket", "aws_instance", "aws_db_instance"]
not resource.change.after.tags.cost-center
msg := sprintf("%v %v يفتقد إلى الوسم المطلوب 'cost-center'", [resource.type, resource.address])
}
عند تشغيل هذه السياسة في خط أنابيب CI/CD الخاص بك، أي تغيير مورد يفتقد إلى الوسم المطلوب سيتسبب في فشل خط الأنابيب، مما يمنع البنية التحتية غير الصحيحة من الوصول إلى الإنتاج.
هذا ليس عن إضافة بوابات موافقة من أجل السيطرة. إنه عن اكتشاف المشكلات قبل أن تتحول إلى حوادث. مخزن تخزين تم تكوينه بشكل خاطئ وقابل للقراءة العامة لا يتحول إلى خرق بيانات. مثيل قاعدة بيانات صغير جدًا لا يسبب انقطاعًا في الأداء. السياسة تلتقطه في خط الأنابيب، ويصلحه الفريق قبل أن يعمل.
الانحراف: عندما ينحرف الواقع عن الكود
يمنحك IaC مصدر حقيقة واحد للبنية التحتية الخاصة بك. لكن هذه الحقيقة تصمد فقط إذا كان ما يعمل فعليًا يطابق ما هو موجود في الكود الخاص بك. في الممارسة العملية، هذا التوافق ينكسر طوال الوقت.
يحدث الانحراف عندما يختلف تكوين البنية التحتية في العالم الحقيقي عما هو محدد في كود IaC الخاص بك. شخص ما يسجل الدخول إلى لوحة التحكم السحابية أثناء حادث ويغير قاعدة مجموعة أمان يدويًا. أحد أعضاء الفريق يضيف مستمع موازن تحميل مباشرة من خلال الكونسول لأنه احتاجه بشكل عاجل. عملية آلية من فريق آخر تعدل موردًا دون المرور عبر خط الأنابيب الخاص بك.
الانحراف خطير لأنه يجعل IaC الخاص بك غير موثوق. إذا كان الكود الخاص بك يقول أن الخادم لديه تكوين A، لكن الواقع لديه تكوين B، فإن الاسترداد أو التوسع أو إنشاء بيئة جديدة سينتج نتائج غير متوقعة. لا يمكنك إعادة بناء البنية التحتية من الكود إذا كان الكود لا يطابق الواقع.
يكشف اكتشاف الانحراف عن هذا من خلال مقارنة حالة البنية التحتية الفعلية بشكل دوري مع الكود الخاص بك. يقوم خط الأنابيب بتشغيل نفس الأوامر التي يستخدمها لتطبيق البنية التحتية، ولكن في وضع "التخطيط" أو "المعاينة". لا يغير أي شيء.他只是 يقارن. عندما يجد اختلافات، يبلغ عنها.
تذهب بعض الفرق إلى أبعد من ذلك. عندما يتم اكتشاف انحراف، يمكن لخط الأنابيب إعادة مطابقة البنية التحتية تلقائيًا إلى الحالة المحددة بالكود. يفضل آخرون إخطار الفريق المسؤول وتركهم يقررون ما إذا كانوا سيحدثون الكود أو يقبلون الانحراف كأمر مقصود.
التعامل مع التغييرات عالية المخاطر
بعض تغييرات البنية التحتية تحمل مخاطر أكثر من غيرها. تغيير تكوين قاعدة بيانات إنتاج، تعديل قاعدة جدار حماية تؤثر على حركة المرور الرئيسية، أو تغيير موازن تحميل يخدم ملايين الطلبات - هذه تحتاج إلى عناية إضافية.
لهذه التغييرات، تحتاج إلى أكثر من سياسات آلية. تحتاج إلى عمليات موافقة مدمجة تحدث داخل خط الأنابيب، وليس خارجه. سير العمل يبدو كالتالي:
- ينشئ المطور طلب سحب مع تغيير البنية التحتية.
- تعمل السياسات الآلية وتفحص الانتهاكات.
- إذا اجتازت السياسات، يخطر خط الأنابيب المراجعين المعنيين - ربما مسؤول قاعدة بيانات لتغييرات قاعدة البيانات، أو مهندس شبكات لتغييرات جدار الحماية.
- يوافق المراجعون أو يطلبون تغييرات مباشرة في طلب السحب.
- فقط بعد الحصول على جميع الموافقات، يتم تطبيق التغيير.
النقطة الرئيسية هي أن الموافقة لا تعني التباطؤ. إنها تعني أن الأشخاص المناسبين يراجعون التغييرات المناسبة في الوقت المناسب، مع توفر جميع السياقات في خط الأنابيب. لا مطاردة للأشخاص على الدردشة. لا موافقات في اللحظة الأخيرة قبل إغلاق نافذة الإصدار.
قائمة التحقق العملية لحوكمة IaC
- كتابة سياسات آلية لكل قاعدة أمان وامتثال تنطبق على البنية التحتية الخاصة بك
- تشغيل فحوصات السياسات في خط الأنابيب الخاص بك قبل تطبيق أي تغيير في البنية التحتية
- إعداد كشف الانحراف للعمل وفق جدول زمني (يومي أو أسبوعي حسب تحملك للمخاطر)
- تحديد ما إذا كنت ستقوم بالتصحيح التلقائي للانحراف أو إخطار الفريق
- تحديد التغييرات التي تتطلب موافقة إضافية ومن هم المعتمدون
- جعل الموافقة جزءًا من خط الأنابيب، وليس عملية منفصلة خارجه
الخلاصة
عندما تكون البنية التحتية هي منتجك، فإن الاتساق والتحكم ليسا اختياريين. يمنحك IaC الأساس، لكن الحوكمة وكشف الانحراف يحولان هذا الأساس إلى شيء يمكنك الوثوق به. السياسات الآلية تكتشف المشكلات قبل أن تصل إلى الإنتاج. كشف الانحراف يخبرك عندما ينحرف الواقع عن الكود الخاص بك. والموافقات المدمجة تضمن أن التغييرات عالية المخاطر تحصل على الاهتمام المناسب دون أن تصبح اختناقات.
الهدف ليس إبطاء تغييرات البنية التحتية. إنه جعلها آمنة بما يكفي لتتمكن من التحرك بسرعة دون خوف.