كادت هجرة Kubernetes أن تقتل شركتنا الناشئة.
أين كنا:
- 8 مثيلات EC2
- Ansible للنشر
- مملة لكنها تعمل
- 1200 دولار شهريا فاتورة AWS
لماذا قمنا بالترحيل:
- أراد مستثمر جديد "سحابة أصلية"
- أراد المهندسون خبرة K8s
- كان المنافسون يستخدمونه
- بدا وكأنه المستقبل
بعد 6 أشهر:
- 3 مهندسين يقضون بدوام كامل على K8s
- فاتورة AWS بسعر 4500 دولار شهريا
- استغرقت عمليات النشر وقتا أطول من ذي قبل
- المزيد من الانقطاعات ، وليس أقل
- توقف تطوير المنتج
تراجعنا:
- انتقل إلى ECS Fargate
- 2 أسبوع هجرة
- العودة إلى 1800 دولار شهريا
- عاد المهندسون إلى الميزات
K8s مدهش من حيث الحجم. لم نكن على نطاق واسع. يجب أن تحل التكنولوجيا المشكلات التي تعاني منها بالفعل.
تمت إضافة ضغط gzip إلى واجهة برمجة التطبيقات الخاصة بنا. انخفض حجم الاستجابة بنسبة 85٪ ، وانخفض زمن الوصول بنسبة 60٪.
قبل الضغط:
- متوسط الاستجابة: 240 كيلوبايت
- وقت النقل: 400 مللي ثانية
- تكلفة النطاق الترددي: 220 دولارا في الشهر
بعد الضغط:
- متوسط الاستجابة: 36 كيلوبايت
- وقت النقل: 48 مللي ثانية
- تكلفة النطاق الترددي: 70 دولارا في الشهر
تمت إضافة البرامج الوسيطة للضغط
النتائج:
- وقت التحميل: أسرع بنسبة 88٪
- عرض النطاق الترددي: تقليل بنسبة 68٪
حصل مختبر الاختراق على وصول الجذر إلى مجموعة Kubernetes الخاصة بنا في 15 دقيقة. هذا ما استغلوه.
سلسلة الهجوم:
- تم العثور على لوحة معلومات Kubernetes المكشوفة (سيئنا)
- كان لدى لوحة القيادة حساب خدمة للعرض فقط (اعتقدنا أن هذا آمن)
- يمكن لحساب الخدمة سرد الأسرار عبر جميع مساحات الأسماء
- العثور على بيانات اعتماد AWS في سر
- بيانات اعتماد AWS المستخدمة للوصول إلى ملف تعريف مثيل EC2
- كان لملف تعريف المثيل مسؤول Kubernetes كامل عبر IAM
- استخدم kubectl لإنشاء جراب متميز
- هرب إلى العقدة
- الوصول إلى الجذر إلى المجموعة بأكملها
ما اعتقدنا أننا فعلناه بشكل صحيح:
- كانت لوحة القيادة للقراءة فقط
- تم تشفير الأسرار في حالة الراحة
- كانت سياسات الشبكة سارية المفعول.
- تحديثات أمنية منتظمة
ما فاتنا
- لا ينبغي الكشف عن لوحة القيادة على الإطلاق
- حسابات الخدمة تحتاج إلى مبدأ الامتياز الأقل
- يجب ألا تحتوي الأسرار على بيانات اعتماد AWS (استخدم IRSA بدلا من ذلك)
- لم يتم تطبيق سياسات أمان Pod
- لم يتم تقوية الوصول إلى العقدة
استغرق الإصلاح 2 أسابيع:
- تمت إزالة لوحة معلومات Kubernetes تماما
- تم تنفيذ IRSA لجميع وصول AWS إلى pod
- تطبيق معايير أمان PSPs / Pod الصارمة
- تدقيق جميع أذونات RBAC
- اختبار الاختراق المنتظم
التكلفة: 24 ألف دولار للقلم
القيمة: منع ما كان يمكن أن يكون خرقا كارثيا