لماذا يعتبر GitOps ضروريًا لـ DevSecOps
نشرت: 2022-02-24يتم قبول مكاسب DevOps للأتمتة وإمكانية التتبع ، وبالتحديد ، التعاون بين المجموعات المنفصلة مسبقًا وأصحاب المصلحة. ولكن نظرًا لتكليف مجموعات DevOps بشكل كبير بنقل العمليات إلى بيئات Kubernetes المعبأة في حاويات ، يمكن أن تنخفض تكتيكات DevOps التي تم تجربتها واختبارها لفترة أقصر. تتجلى أيضًا المشكلات الأمنية - والمزالق - في طرق فريدة.
المعلومات الرائعة هي أن GitOps تعمل على سد مجموعة مختارة من الفجوات في DevOps من أجل استقرار البيئات الموزعة. ويرجع ذلك إلى حقيقة أن عمليات GitOps مواتية جدًا لـ DevSecOps ، والتي تم تعريفها هنا على أنها أكثر تكتيكات الأمان فعالية والتي تنطبق على دورة حياة البرنامج بأكملها.
في هذه المقالة ، نلقي نظرة على كيفية تقديم GitOps لإطار عمل حيوي لـ DevSecOps ، لفحوصات السلامة التي تزيد من خلال CI / CD ، وكذلك من خلال مراحل نشر الكتابة لإدارة التطبيق على مجموعات Kubernetes.
مورد وحيد ثابت للواقع
يمكن وصف GitOps بأنه:
تصميم فعال لنظام Kubernetes وأنظمة السحابة الأصلية الأخرى ، مما يوفر مجموعة من أفضل الإجراءات التي توحد نشر Git وإدارتها ومراقبتها للتجمعات والأغراض المعبأة في حاويات.
مسار في اتجاه تجربة مطور عملية لرعاية البرامج بالضبط حيث يتم استخدام خطوط أنابيب CI / CD من النهاية إلى النهاية وتدفق عمل Git لكل عملية وتطوير.
Git هو المصدر الوحيد للحقيقة الحقيقية ، حيث يتم الإعلان عن التكوين المرغوب فيه هنا. هناك وكيل GitOps يعمل داخل Kubernetes ، ويقارن بانتظام النقطة الحقيقية داخل Kubernetes بالنقطة المطلوبة بعد المحفوظة في Git. يتم تطبيق أي اختلافات جديدة مدمجة في القسم الخاضع للمراقبة في Git على الفور على Kubernetes. على العكس من ذلك ، فإن أي اختلافات في الدليل مستخدمة في Kubernetes يتم إرجاعها ميكانيكيًا مرة أخرى إلى الحالة المثالية المعلنة في Git. يتم التخلص من الانجراف التكوين.
عادةً ما يتم وصف Git بشكل مناسب على أنه المصدر الوحيد للحقيقة الحقيقية كما ينطبق على GitOps ، وذلك بفضل تركيبته الثابتة. من بين أمور أخرى ، سيساعد في الحفاظ على حد - لا يتعارض مع جدار الحماية - يفصل بين المخاوف بين CI و CD. بهذه الطريقة ، فإن مجموعة الطرق المتضمنة في تقدم التطبيق كجزء من CI - طلبات السحب ، والفحص ، والالتزامات ، وما إلى ذلك. - استمر في الانفصال عن Git.
بالنسبة للمطور بناء طلب سحب ، يتم دمج طلب السحب ، في الوقت الذي تمت مراجعته والسماح به ، واستخدامه بشكل روتيني في المجموعة في التسوية القادمة - والتي تتطلب عادةً 15 دقيقة.
بشكل افتراضي ، تكون العملية ثنائية الاتجاه - وهذا يعني أن التعديل الذي يتم تصنيعه مباشرة إلى Kubernetes يتم تبادله على Git عند تشغيل حلقة التسوية المستقبلية (بشكل عام كل 15 دقيقة). ومع ذلك ، فإن هذه الحالة أقل بكثير من الأفضل ، عندما يقوم أحد أفراد القوة العاملة في DevOps أو ، الأسوأ من ذلك ، متطفل ذو فاعل سلبي بإجراء تغييرات على المجموعات على الفور. لم يتم فحص هذه الاختلافات المباشرة إلى المجموعة بشكل مناسب عن طريق طلبات الدمج والموافقات ، ونتيجة لذلك تنتهك نظرية GitOps الخاصة بـ Git التي تعمل كمصدر ثابت لحقيقة الأمر عند حدوث الانجراف.
كبديل لتمكين تخفيف الانجراف من الحدوث ، يمكن لمورد فحص GitOps إرسال تنبيهات إذا تم تصنيع التعديلات على الكتلة التي لم تبدأ باستخدامها في Git. عندما يحدث هذا ، بفضل مسار المراجعة ، يمكن لرمز البرنامج على Git تبديل التعديلات الخاطئة المصممة على المجموعات ، من خلال وحدات التحكم الموجودة في نقطة نشرها في بيئة وقت التشغيل الطبيعية.
على العكس من ذلك ، عندما لا يتم تحقيق الثبات ، يمكن أن يحدث الانجراف. قد يتجسد هذا في الطرف الذي تعرض للاعتداء على الشبكة أو عندما يغير أحد أعضاء فريق DevOps عن غير قصد تكوين الكتلة بحيث يكون متنوعًا عما هو موجود على Git. يتم تمييز التعارض عند حدوث ذلك - من خلال استخدام معدات GitOps المناسبة - وبالتالي يرمز إلى DevSecOps الجوهري الذي تقدمه عمليات GitOps.
تعمل التطبيقات المناسبة على أتمتة نظام الفحص المستمر للتأكد من أن النقطة المطلوبة من التكوين في مستودع Git تطابق الحالة الحقيقية في مجموعة Kubernetes. كما أنها تستخدم للتوفيق وعمليات النشر الكاملة بمجرد تخصيصها بشكل فعال في الحالة المعلنة للمستودع.
إدارة المراجعة
تعد ميزات التدقيق التي يقدمها GitOps مهمة أيضًا لمساعدة DevSecOps. من خلال البقاء في مستودع Git باعتباره مصدرًا واحدًا للحقيقة ، يتم إصدار جميع التطبيقات ، والأكواد ، والتكوينات ، وتحتفظ بمسار تدقيق كامل ، وهو أمر ضروري لأي بيئة طبيعية محمية. عادةً ما يتم تقديم مسار التدقيق هذا للمطورين وموظفي العمليات على قدم المساواة ، عند الشراء حتى يلاحظوا ما يعمل في المجموعة (معظم المستخدمين مقيدون بإمكانية الوصول للتصفح فقط إلى تكوين المجموعة).
قد لا يطلب المطور دائمًا الاعتماد على مسارات التدقيق بقدر كبير مثل الوظائف وعمل عملاء DevSecOps ، ولكن يمكنهم الاستفادة من القدرة على فهم التغييرات التي حدثت وما كان الدافع وراء التعديلات التي تم إجراؤها على المستودع الذي حدث بالفعل . باختصار ، بالنسبة للمطور - وكذلك لجميع موظفي DevOps - كل شيء هو مجرد سجل Git.
مسارات التدقيق على Git متاحة أيضًا وبسيطة جدًا ليظهر للبناة عند الضرورة. هذا يرجع إلى حقيقة أن الإرث النهائي للعملية تم تسجيله في تقرير برنامج Git ، والذي يفهمه البناة.
مع توفر مسار التدقيق ، من الممكن أيضًا التراجع بسرعة عن التعديلات على التطبيقات التي تسببت في صعوبات. هذا مفيد بشكل خاص عندما يتم اختراق المجموعات أو تكوينها بشكل خاطئ. في هذه الحالة ، كبديل لامتلاك إعادة بناء كتلة من الصفر ، يتكون مسار التدقيق من النقطة المطلوبة في الريبو. يتم بعد ذلك نشر تكوين الكتلة والبرامج ذات النقطة المرغوبة من مسار المراجعة ويكون إجراء إعادة البناء تلقائيًا.
عدد "مفاتيح المملكة"

يعتمد البناة بشكل عام على Jenkins ، خادم التشغيل الآلي ، لتطوير وفحص ومساعدة CI / CD لتصنيع خطوط الأنابيب لبيئات Kubernetes. بدون GitOps ، يمكن للمطورين في أي حالة أخرى أن يكون لديهم إمكانية الوصول الفوري إلى مجموعات Kubernetes أثناء قيامهم بنشر التعليمات البرمجية الخاصة بهم مباشرة. بعبارة وعبارات أخرى ، سيكون للبناة - بغض النظر عما إذا كانوا مكونًا من المنظمة أو كانوا مقاولين يعمل عن بُعد - إمكانية الوصول الفوري إلى محيط الإخراج وسيكون لديهم "مفاتيح المملكة" ، وذلك للتحدث. نادرًا ما يكون هذا ظرفًا مثاليًا للسلامة.
كل ما سيختاره ، في الحالة المذكورة سابقًا ، هو أن يكون لدى المستخدم غير المناسب - أو الأسوأ من ذلك ، المتسلل - إمكانية وصول أوامر KubeConfig أو Kubectl إلى مجموعات في التصنيع يمكن تشغيلها من دفتر ملاحظاتهم. إذا قام المهاجم بخرق عملية CI وتم إنشاء بيانات الاعتماد ، على سبيل المثال ، فيمكنه أيضًا الوصول إلى أي مجموعة يمكن لنظام CI الوصول إليها.
إن الحقيقة البسيطة المتمثلة في أن GitOps تساعد في تجنب المستخدمين - أو المهاجمين - من تعديل تكوينات المجموعة دون ترك أي أثر أمر حيوي في المقام الأول للعمليات وفرق السلامة - بالإضافة إلى دعم تقليل العبء الذهني للمطور. من خلال الحصول على الإدارة ، على سبيل المثال ، يحتاج المطور عمومًا إلى عدم امتلاك وصول مباشر إلى عُقد Kubernetes و / أو أسطر أوامر kubectl. لذا فإن GitOps تتصالح مع أي شيء يحدده البناة في Git ولكنهم لن يسمحوا بإمكانية الوصول اليدوي إلى مجموعات Kubernetes أو بيئات التصنيع باستثناء أن البناة لديهم أذونات فريدة للتحكم في الوصول.
ميزات DevSecOps من GitOps كطريقة لإحباط هذا الموقف المتجه للهجوم للقرص المضغوط ، لذا فهي تحمي "مفاتيح المملكة". عندما يتم تشغيل مشغلي GitOps ، مثل Open source Flux - إضافي حول هذا أدناه - داخل Kubernetes وبالتالي يكون لديهم إمكانية الوصول إلى المجموعات ، تظل عناصر التحكم في الحصول ضمن إطار عمل أمان Kubernetes. يتم إنشاء إمكانية وصول المستهلك من خلال تخصيص امتيازات لمساحات أسماء المجموعات المميزة وأعضاء المجموعة.
كدليل على كيفية تفضيل DevSecOps و GitOps بشكل ملحوظ لشخص مختلف ، قسم الدفاع الأمريكي (DoD) ، نيكولاس تشيلان ، مسؤول برامج الكمبيوتر الرئيسي في القوة الجوية الأمريكية ، وصف منذ فترة قصيرة كيف أن DevSecOps و GitOps - مع Flux - تؤدي دورًا حيويًا في تطوير برامجها التي تدعم الطيف الكامل لقوات الأمن الأمريكية.
قال تشايلان: "لا يمكن التفاوض على السلامة والأمن ، لكننا نريد أيضًا أن تعزز الشركة الذاتية للمطور الكفاءة والسرعة".
على سبيل المثال ، GitOps هي "المفتاح لإنجازنا في إعداد وطرح منصة واحدة فقط في جميع أنحاء وزارة الدفاع" ، كما تدعي وزارة الدفاع. وفقًا لوزارة الدفاع ، يعد System Just one "مجموعة متنوعة من توزيعات Kubernetes المتوافقة مع مؤسسة الحوسبة السحابية (CNCF) ، والبنية التحتية ككتيبات تعليمات برمجية ، وحاويات صلبة ،" مع خطوط أنابيب أمان مخبوزة.
الضوابط والتوازنات
تتحد إجراءات DevSecOps مع عمليات التحقق من التوريد والتوازنات الخاصة بـ GitOps. بهذه الطريقة ، يساعد أمر الوصول الذي يقدمه في منع المطور - أو الدخيل - من الوصول إلى مستودع كود التوريد من أجل تقديم ، على سبيل التوضيح ، باب خلفي ، أو نقطة الصفر ، أو شكل آخر من الثغرات الأمنية طوال مدة CI إجراء. هذا ببساطة لأن جميع طلبات السحب تخضع لمراجعة الأقران.
مع دعم DevSecOps لنظام CI ، يتم تخصيص الضوابط والتوازنات المستخدمة قبل التعليمات البرمجية على Git ونشرها في المجموعة. عادةً ما ينشر المطور تعديلًا كطلب سحب ، والذي تتم مراجعته من قبل الزملاء. بعد المراجعة والترخيص ، يتم دمج الكود في Git ، ثم يتم تغيير ملف YAML للحالة المطلوبة وفقًا لذلك.
سيتم تطبيق الحالة المرغوبة على الفور على مجموعة Kubernetes. كما ذكرنا سابقًا ، فإن معدات GitOps الصحيحة المزودة بميزات DevSecOps تتعقب باستمرار الحالة الدقيقة في عملية الهدف ، للتأكد من أنها ترد بالمثل على ما تم الإعلان عنه على Git. يتم إصدار تنبيه إذا كان هناك أي تباين ، لذلك يمكن اتخاذ حركة تصحيحية.
DevSecOps عاقدة العزم
تساعد كمية من أدوات GitOps DevSecOps. يساعد Open Supply Flux ، على سبيل المثال ، في الحفاظ على مستودع Git باعتباره المصدر الوحيد الثابت للحقيقة الحقيقية. تمتد قدرات Flux أيضًا إلى تنظيم إمكانية الوصول لعمليات التحقق والتوازنات أثناء CI / CD للرمز المخصص والنشر.
للحصول على لقاء Flux أكثر إصرارًا على الرأي ، يعمل برنامج Weave GitOps Main على تبسيط الطرق الأولى لتمكين أتمتة CI / CD عبر العديد من المجموعات. يتضمن نظام وضع طريقة GitOps و DevSecOps باستخدام Weave GitOps Main بضعة أوامر غير معقدة على وحدة التحكم.
ظهرت شركة Weave GitOps كمنصة GitOps الأولية التي تعمل على أتمتة الشحن الثابت للتطبيق والإدارة التشغيلية التلقائية لـ Kubernetes على أي نطاق في جميع أنحاء البنى السحابية المختلطة ، والسحابة المتعددة ، والحافة.
تساعد جميع الأدوات القليلة في أتمتة المراقبة لضمان تطابق تكوين الكتلة بشكل طبيعي مع ما هو موجود على Git للمساعدة في تجنب الانجراف. يتيح مسار التدقيق الكامل والمتاح إمكانية إنتاج عمليات التراجع عن تكوين المجموعة والتطبيق على أساس أساسي - دون الحاجة إلى إعادة بناء الكتلة من البداية.
باختصار ، تشير GitOps إلى تطور DevOps لبيئات Kubernetes المتفرقة ، على الرغم من ظهور DevSecOps كطريقة مهمة للحفاظ على استقرار CI / CD لـ GitOps ، خلال دورة حياة التطبيق.
ستيف ووترورث هو مشرف التسويق الفني في Weaveworks .