افهم مخاطر السياسات. اطرح أسئلتك حول السياسات بلغة طبيعية. اطلب عرضًا توضيحيًا ←
Published:
المراحل الأربع لأتمتة إدارة السحابة
by FireMon
رحلة أتمتة السحابة لدى متخصص في الأمن
إذا صادفتموني في أحد المؤتمرات، فالأرجح أنكم ستسمعونني أقول إن «أمن السحابة يبدأ بالبنية المعمارية وينتهي بالأتمتة». وأُتبع ذلك سريعًا بالحديث عن أهمية تبنّي عقلية سحابية أصيلة، حتى وأنتم غارقون في واقع عملية نقل ورفع غير أنيقة قبل انتهاء عقد مركز البيانات وإطفاء الأنوار. ورغم أن هذه العبارة لطيفة، فإنها لا تعبّر فعليًا عن كيفية انتقالي من متخصص أمن تقليدي (جدران حماية وإدارة تصحيحات) إلى ممارس سحابي أصيل يركّز على البنية المعمارية والأتمتة. وبدلًا من الوعظ من عليائي، أجد من الأجدى أن أصف رحلتي الشخصية وما توصلت إليه تقنيًا على طول الطريق. فإن كنتم متخصصين في الأمن، أو تحاولون تطوير مهارات متخصص أمن للعمل في السحابة، فالأرجح أنكم ستسلكون مسارًا مشابهًا جدًا.
المرحلة 1: أتمتة عمليات التهيئة
بالنسبة لي بدأ كل شيء قبل نحو تسع سنوات، عندما طُلب مني بناء أول برنامج تدريبي لـ Cloud Security Alliance. أدركت مبكرًا أننا بحاجة إلى مختبرات قابلة للتكرار، يمكن تشغيلها في أي مكان في العالم، مع طلاب ومدربين تتراوح مهاراتهم بين «المطوّر» و«المدقق الغارق في الأوراق». في تلك الأيام لم تكن Amazon Web Services قد أطلقت IAM فعليًا، وكانت شبكات VPC شبكات خاصة فقط. وكانت مفاهيم مثل البنية التحتية ككود قد بدأت للتو تصبح ممكنة.
وهكذا وجدت نفسي أحاول معرفة كيفية بناء مختبر عملي لحزمة تطبيقات في السحابة لآلاف الطلاب. بصورة متسقة، *وأن* أكون قادرًا على التحديث مع تطوير AWS لتقنياتها. في ذلك الوقت كان إنشاء صور AMI خاصة بك لا يزال عملًا شاقًا، لكنني بعدها اكتشفت عجائب `cloud-init`. نص برمجي بسيط يمكنني استضافته في حاوية S3، مع سطرين صغيرين يمكن للطلاب لصقهما في حقل User Data الخاص بمثيلاتهم، ما يهيّئ المثيلات تمامًا كما هو مطلوب عند التشغيل. وعندما كانت تحديثات البرامج تتسبب في أعطال، كان عليّ فقط تحديث ذلك النص عند عنوان URL المنشور، وكل مثيل جديد يستخدم التهيئة الجديدة — سحر! ورغم أن ذلك لم يكن ليساعد في تصحيح أي شيء قيد التشغيل، فإنه مكّنني من الحفاظ على تجربة تشغيل أولى جيدة، بسهولة أكبر بكثير من تحديث صور AMI ونشرها. ومن قبيل التهور المطلق بسمعتي، لا يزال بإمكانكم رؤية نسخة لاحقة من ذلك هنا على S3.
كانت خطوتي الأولى `cloud-init`. لم أعد أستخدمه اليوم، لكن كان من المدهش أن أتمكن من كتابة نص برمجي لخادم بأكمله وتشغيله بالكامل، باستخدام النسخ واللصق وملف واحد مستضاف.
المرحلة 2: أتمتة سير العمل
لكن الخطوة التالية كانت أكبر أثرًا بكثير. بعد عامين من تقديم تدريبات عملية وبناء أحمال عملي الخاصة، بدأت أتسلى بفكرة الأمن المعرَّف بالبرمجيات. كانت أمامي وفرة من واجهات برمجة التطبيقات السحابية، وكلها تهمس في أذني «نادِني». بدأت أبحث عن أمثلة فلم أجد… شيئًا. حتى Security Monkey لم يكن قد صدر علنًا بعد.
كان لديّ فصل دراسي قادم في مؤتمر Black Hat الأمني، فقررت اتخاذه ذريعة لتعلّم Ruby وواجهات AWS البرمجية (عبر Ruby SDK). وانتهى بي الأمر إلى كتابة ثلاثة عروض توضيحية:
- تطبيق للاستجابة للحوادث يعزل مثيلًا، ويحلّل كل بياناته الوصفية، ويقيّده باستخدام AWS IAM، وينشئ صورًا لكل وحدات التخزين، ويطلق خادم تحليل جنائي جاهزًا لتحليل اللقطات المرفقة. كان ينجز في 3 ثوانٍ ما كان يستغرق مني 30 دقيقة.
- تطبيق صغير يتصل بـ AWS وChef ويحدد كل المثيلات التي لا تشغّل Chef (الخوادم «غير المُدارة»). وهي عملية قد تستغرق أسابيع في مركز بيانات تقليدي.
- تطبيق آخر يفتح مجموعات الأمان أمام أداة فحص Qualys، ويشغّل عملية فحص، ثم يغلق مجموعة الأمان عند الانتهاء.
لم أكن قد برمجت بلغة Ruby من قبل، لذا استغرقت الثلاثة جميعًا نحو شهرين من العمل بدوام جزئي حتى صارت جاهزة للتشغيل. كانت بسيطة إلى حد كبير، لكنني تعلمت منها دروسًا قيّمة.
- كانت إدارة بيانات الاعتماد أمرًا حاسمًا، وجعلت أيضًا مشاركة الكود ودفع الآخرين إلى تهيئة بيئاتهم بشكل صحيح أصعب. وكان السحب من ملفات التهيئة… مزعجًا. خصوصًا لأمور مثل تحديد مجموعة الأمان التي ستُستخدم كمجموعة عزل وفي أي منطقة.
- كانت Ruby تعمل جيدًا على نظامي المحلي، لكنني كنت أتجاوز حدود الخدمة واضطررت إلى إدراج مؤقتات تأخير عند تشغيل الكود داخل مثيل في AWS. حدود خدمة واجهات البرمجة ليست صديقة لكم.
- كانت كل هذه الأدوات ساكنة فعليًا. ومهما بدت أنيقة في العروض التوضيحية، فقد ظل الأمر يعتمد على تشغيل الكود يدويًا من سطح مكتب أو مثيل. وهذا لم يصمد جيدًا مع الوقت.
جمعتُ هذه الأدوات في حزمة باسم «SecuritySquirrel»، ويمكنكم العثور على إصدارات 2014 على GitHub. وصدّقوا أو لا تصدّقوا، هذه ليست حتى النسخ الأصلية التي استخدمتها لبضع سنوات قبل نشرها.
المرحلة 3: أتمتة السحابة نفسها
عندما أطلقت AWS خاصية Rules لـ CloudWatch، جمّعت ما يكفي من كود Python في نحو ساعتين صباح السبت التالي للتراجع عن أي تغيير في مجموعة الأمان خلال 10-15 ثانية — بما في ذلك عوامل تصفية لتحديد نطاق الدفاع استنادًا إلى الوسوم أو VPC أو الجهة التي طلبت التغيير. ويمكنكم تنزيل الكود والتعليمات، وعلى خلاف كود Ruby الخاص بي، لا يزال هذا يعمل جيدًا بالنسبة لكود سحابي عمره 3 سنوات.
منذ ذلك العرض التوضيحي الأول، بنيت مكتبة من عمليات الأتمتة المدفوعة بالأحداث تعمل في Lambda، ويمكنكم تنزيل بعضها. المفضل لديّ في تلك الحزمة هو `identify_internet_facing_servers.py`، الذي ربطته لأغراض العرض التوضيحي ليُشغَّل عند الضغط على نسخة IoT من زر Amazon Dash. نعم، أحمل في جيبي زر Easy فعليًا وماديًا. يعثر البرنامج على أي مثيلات يكون فيها المنفذ 22 مفتوحًا على الإنترنت، وبنقرة مزدوجة على الزر يمكنني إبطال القواعد، وتصلني رسالة نصية على هاتفي عندما يصبح كل شيء آمنًا ومطمئنًا.
كان الدرس الأساسي هنا غير متوقع. لم يكن الأمر أن عمليات الأتمتة المدفوعة بالأحداث حلّت محل سير العمل القائم على المضيف لديّ، بل أنها خدمت غرضًا مختلفًا. أدركت أنني انتقلت من بناء سير عمل يساعدني على إنجاز الأمور بسرعة أكبر إلى بناء حواجز حماية تُبقي الأمور آمنة في الخلفية. وكلاهما ذو قيمة هائلة.
المرحلة 4: أتمتة كل شيء
تركّز أحدث أعمالي على استخدام Jenkins والبنية التحتية ككود (CloudFormation في الأغلب) لتعزيز الأمن. ويمكّنني هذا المزيج من أتمتة الأمن داخل البنية التحتية والتطبيقات نفسها والاعتماد بدرجة أقل على الأدوات الخارجية.
على سبيل المثال، أطلقت أداة فحص بسيطة لبيانات الاعتماد لتشغيلها في Jenkins والعثور على أي مفاتيح وصول مخزّنة حتى قبل بدء عملية البناء. فلماذا الانتظار ومحاولة استكشافها لاحقًا؟ ثم كتبت بعض أطر الاختبار الأخرى التي تتيح لي تشغيل أي أداة تقييم أريدها في Jenkins، وإفشال عمليات البناء عندما تخفق في أي اختبار أمني، مثل فحص الشبكة (نصيحة احترافية: سيفشل Jenkins عملية البناء إذا أرسلتم إليه أي رمز خروج غير 0 من نص برمجي).
وعودةً إلى البداية، نحن الآن ندير الفصل التدريبي باستخدام قوالب CloudFormation لبناء جميع عناصر حزمة التطبيقات كي يتمكن الطلاب من التركيز على إضافة الأمن. انتقلنا من بناء خوادم تدريب متسقة إلى بيئات تدريب متسقة، مع صور AMI مخصصة يمكننا تحديثها في دقائق… عالميًا… بجهد ضئيل جدًا، وجميع البرامج مثبتة مسبقًا وجاهزة للتهيئة النهائية.
بدأت رحلتي السحابية قبل نحو تسع سنوات، وبدأت رحلتي مع الأتمتة في الوقت نفسه تقريبًا. بدأت ببناء الأشياء ثم محاولة أتمتة أجزاء منها، لكنني الآن أبدأ من افتراض الأتمتة. كانت أعمالي الأولى تتعلق بالعمليات، أما اليوم فهي تكاد تتركز كلها على الأمن. على إذابة العبء التشغيلي وإتاحة المجال للأجزاء الأمنية في ذهني كي تركّز على ما تجيده. وتعلمت على طول الطريق أيضًا أن عمليات الأتمتة ليست سواء؛ فهناك مواضع لحواجز الحماية، ولسير العمل، وللتنسيق عبر المنصات، وللبنية التحتية ككود، ولأتمتة خطوط الإنتاج. وكلها تقدّم اليوم فوائد أمنية تكاد لا تُتصوَّر، لكننا لا نزال في أيامها الأولى إلى حد بعيد، حيث قد تخسرون أسبوعًا كاملًا لمجرد تفكيك واجهة برمجة تطبيقات ضعيفة التوثيق.
إن كنتم تعملون في الأمن، فقد حان وقت إتقان البرمجة. وإن كنتم مطورين أو من فرق التشغيل، فقد حان وقت إتقان الأمن. لأن الدرس الأكبر على الإطلاق هو أن أيام الأمن كمظلة قد انتهت، وأن أيام الأمن المنسوج في النسيج قد حلّت.