محتويات الدورة

Helm / متقدم: التوافق والثقة ودليل التسليم / الدرس 15

توافق API وأقل الصلاحيات

راجع جرد API الناتج والافتراضيات المؤثرة في الأمان مع فصل نية القالب عن القبول والتفويض والتنفيذ الفعلي.

وقت القراءة التقريبي: 4 دقيقةتاريخ مراجعة المحتوى
في هذه الصفحة

أهداف الدرس

  • حصر نسخ API في المرشح الحالي ومرشحي الاسترجاع.
  • جعل مدخلات حساب الخدمة وRBAC صريحة.
  • تقييم افتراضات سياق الأمان والسياسة دون ادعاء التنفيذ.

احصر APIs قبل ترقية المنصة

قد تصير الحزمة APIs مدعومة اليوم، بينما تحتوي مراجعة أقدم API ستزيلها ترقية منصة مخططة. لذلك تشمل خطة الاسترجاع الملفات الحالية ومرشحي الرجوع لا أحدث مصدر فقط. وقد يتطلب تغيير apiVersion تعديل الحقول أيضا، فلا يكفي استبدال النص آليا. احتفظ بقائمة أزواج kind وapiVersion وقارنها بتوثيق المنصة الهدف. لا تعدل بيانات الإصدار المخزنة بوصفة مرتجلة؛ فتلك معالجة تمس التاريخ والملكية وتحتاج عملية بيئية مدروسة ومصرحا بها.

راجع جرد API صغيرا

يصنف المثال الأول هويات API افتراضية مقابل مجموعة سماح صغيرة عمدا. يميز الناتج Deployment قديما للمراجعة ولا يدعي أن المجموعة تغطي كل نسخ Kubernetes أو السياسات. يجب أن تسمي مصفوفة توافق فعلية نسخة Kubernetes الهدف وافتراضات التوزيعة. قد تساعد Capabilities في اختيار الفروع، لكن قد يخرج الفرع حقولا خاطئة للواجهة المختارة. اختبر البدائل المهمة وافحص المخططات المستقبلة. اعتبر التوافق عقدا مصانا بدليل مؤرخ لا ادعاء دائما على شارة حزمة.

python فحص تغطية API افتراضي
allowed = {("apps/v1", "Deployment"), ("v1", "Service")}
rendered = [("apps/v1", "Deployment"), ("apps/v1beta1", "Deployment")]
for identity in rendered:
    print("covered" if identity in allowed else "review")
الناتج المتوقع
covered
review

المجموعة حالة تعليمية وليست قاعدة دعم كاملة. يقرأ البرنامج ثلاثيات عامة في الذاكرة فقط.

افصل الإنشاء عن الاستخدام

يمكن للحزمة إنشاء ServiceAccount أو استخدام حساب قائم، وهما قرارا ملكية مختلفان. كما أن إنشاء RoleBinding لا يعني امتلاك صلاحية إنشائه، ولا يوفر namespace عزلا أمنيا كاملا وحده. اعرض قيما صريحة لإنشاء الحساب واسمه ثم وثق الصلاحيات المطلوبة. تجنب القواعد العامة لتجاوز خطأ مثال. إذا لم يستدع التطبيق API الخاصة بـKubernetes فقيّم ضرورة تركيب الرمز التلقائي. المقطع الثاني جزء مراجعة أمان لمواصفات Pod دون حمل أو صورة أو أمر إداري.

yaml افتراضات أمان توضيحية لمواصفات Pod
serviceAccountName: catalog-runtime
automountServiceAccountToken: false
securityContext:
  runAsNonRoot: true
  seccompProfile:
    type: RuntimeDefault

تحتاج الحقول صورا وبيئة تشغيل وسياسة قبول متوافقة. إنها نية معلنة لا تقوية أمنية متحققة ولا سياسة كاملة.

قيّم توافق سياق الأمان

يجب أن تطابق افتراضيات الأمان احتياجات التطبيق والسياسة الهدف. قد يفشل التشغيل دون root إذا توقعت الصورة مسارات محمية، وقد يحتاج جذر للقراءة فقط إلى تركيبات مؤقتة قابلة للكتابة. اشرح الشروط بدلا من اقتراح رفع الامتياز كأول إصلاح. تختلف إعدادات الحاوية عن إعدادات Pod في النطاق. يمكن عرض تجاوزات منضبطة لكن لا ينبغي أن تقوض سياسة موعودة بصمت. كما لا يضمن إنتاج NetworkPolicy تنفيذها من مكون الشبكة. افصل النية الناتجة والميزات البيئية المدعومة والسلوك المرصود كطبقات دليل.

اجعل مراجعة الأمان محددة

راجع أفعال الصلاحيات ونطاقات الموارد وتعرض الرموز وإعدادات الحمل الناتجة للتطبيق الافتراضي. قد يطلب اعتماد صلاحيات أكثر من قوالب الأب، فاشمل التوابع والخطافات. سم افتراضات القبول وتوافق مستخدم الصورة. لا يجري المسار مسحا أو استعلام عنقود أو فحصا إداريا ولا يمنح صلاحيات. يثبت مصنف API نتيجة تغطية محلية صغيرة فقط. يحدد التسليم المفيد الأسئلة البيئية المفتوحة ومالكيها، كي يقيّمها مراجع مخول لاحقا دون اعتبار الإعدادات التوضيحية تثبيتا آمنا متحققا.

الأخطاء الشائعة وإصلاحها

فحص أحدث حزمة فقط قبل حذف API من المنصة

لماذا يحدث؟
أُهملت مراجعات الاسترجاع وهويات API المخزنة فيها.
كيف تصلحه؟
راجع المرشح الحالي ومرشحي الاسترجاع مقابل مصفوفة المنصة الهدف.
كيف تتجنب تكراره؟
أدرج صلاحية الرجوع ضمن تخطيط ترقية المنصة.

إضافة دور شامل لإسكات خطأ تفويض

لماذا يحدث؟
لم يحدد الفعل المطلوب ونطاق المورد.
كيف تصلحه؟
حدد أقل صلاحية موثقة للتطبيق وافصل احتياجات المثبت عن التشغيل.
كيف تتجنب تكراره؟
راجع القواعد الدقيقة للأب والاعتماديات والخطافات.

وصف runAsNonRoot كتقوية أمنية كاملة

لماذا يحدث؟
حل حقل معلن واحد محل دليل السياسة وسلوك التشغيل.
كيف تصلحه؟
اذكر افتراضات الصورة والتشغيل والقبول وقيّم عقد الحمل كاملا.
كيف تتجنب تكراره؟
اجعل الادعاءات الأمنية بقدر الفحوص المنفذة.

اختبر فهمك

1. لا يستدعي التطبيق Kubernetes. ما أسئلة تركيب الرمز؟

اعرض الحل المشروح

اسأل هل يحتاج أي مكون فعلا اعتماد API، وهل تختلف حاوية جانبية أو اعتماد، وهل يمكن تعطيل التركيب التلقائي تحت السياسة الهدف. افصل اعتماد المثبت عن هوية الحمل. تعبر false الناتجة عن نية فقط؛ تحقق من السلوك الفعلي في بيئة مصرح بها ولا تفترض سيطرة الحزمة على كل تعديل قبول.

2. لماذا قد يبقى المورد غير متوافق بعد استبدال apiVersion قديم؟

اعرض الحل المشروح

قد تختلف النسخ في الحقول المطلوبة والافتراضيات والدلالات، فيترك تغيير العنوان آليا جسما خاطئا أو مختلف السلوك. راجع مخطط الهدف وإرشادات الانتقال ثم قارن النية السلوكية. وقيّم أيضا هل يعيد مرشح رجوع أقدم APIs محذوفة بعد ترقية المنصة.

أهم ما تعلمته

  • يشمل توافق API خيارات الاسترجاع التاريخية ودلالات الحقول.
  • أقل الصلاحيات عقد تطبيق مراجع وليس مقطعا عاما.

المراجع الرسمية