أدوات المطور · تشغيل Docker إلى محول إنشاء Docker
تشغيل الحاويات كجذر: ما --user والمستخدم: التغيير ولماذا
· لماذا يهم
عامل ميناء حاويات حماية
ما لم تنص الصورة على خلاف ذلك، فإن العملية في الحاوية الخاصة بك هي الجذر. يشرح هذا المنشور ما يعنيه ذلك على المضيف، وكيف يقوم --user ومستخدم الإنشاء: بتغيير المفتاح، ومشكلات ملكية الملف التي تتبع ذلك.
الملفات التي لا يمكنك حذفها — يكون رابط الربط ممتلئًا بالملفات المملوكة للجذر بعد تشغيل حاوية واحدة
الملفات التي لا يمكنك حذفها — يكون رابط الربط ممتلئًا بالملفات المملوكة للجذر بعد تشغيل حاوية واحدة. الدليل: يمكن أن يؤدي الإخراج المثبت على الربط إلى كشف عدم تطابق الهوية الذي لا يمكن للتحليل تشخيصه. إعادة إنتاج هوية وقت التشغيل باستخدام القيم الحرفية التي يمكن التخلص منها. قم بإقران كل حدث مصدر مع إمكانيات تحميل المستخدم؛ حجز مساحات الأسماء والملكية لمراجعة الوجهة.
يكشف الحادث الأمني أيضًا أن هناك حدود منفصلة للحادث الأمني وهي أن الصورة USER ومفاتيح نقطة الدخول تتطلب فحصًا أو مصادر صور. الدليل: الصورة USER ومفاتيح نقطة الدخول تتطلب مصادر فحص أو صور. يعد قيد هوية وقت التشغيل هذا بمثابة نقطة توقف. افحص إمكانيات تحميل المستخدم دون سلوك التصنيع، ثم قم بتوثيق فحص المضيف لمساحات الأسماء والملكية.
الجذر الداخلي هو الجذر الخارجي - مع إعدادات مساحة اسم المستخدم الافتراضية، UID 0 في الحاوية هو UID 0 على المضيف للملفات المثبتة
الجذر الداخلي هو الجذر الخارجي - مع إعدادات مساحة اسم المستخدم الافتراضية، UID 0 في الحاوية هو UID 0 على المضيف للملفات المثبتة. الدليل: UID تعتمد تأثيرات المضيف الصفرية على تكوين مساحة الاسم غير المقروءة هنا. تتبع الرموز المميزة لهوية وقت التشغيل في إمكانيات تحميل المستخدم. افصل القيم المطلوبة عن حقول القيمة الأخيرة؛ مساحات الأسماء والملكية خارج المجموعة.
حدود آلية الأمان ذات الصلة هي أن الحدود النحوية الأمنية المنفصلة هي أن مثال 1000:1000 يوضح الحفظ وليس ضمانات الملكية. الدليل: مثال 1000:1000 يوضح الحفظ وليس ضمانات الملكية. استخدم حقيقة هوية وقت التشغيل هذه للتنبؤ بعضو واحد أو عددية في إمكانيات تحميل المستخدم. تحقق من التحذيرات قبل اتخاذ قرار بشأن أي شيء يتعلق بمساحات الأسماء والملكية.
--user يصبح المستخدم: — رقمي UID:GID مقابل الأسماء، ولماذا يكون الرقم الرقمي أكثر أمانًا عندما لا تحتوي الصورة على حساب مطابق
--user يصبح المستخدم: — رقمي UID:GID مقابل الأسماء، ولماذا يكون الرقمي أكثر أمانًا عندما لا تحتوي الصورة على حساب مطابق. الدليل: --user يصبح مستخدمًا ورقميًا UID:GID يتم اقتباس النص. الحكم على تسلسل هوية وقت التشغيل من نموذجه. إن الاقتباس في إمكانيات تحميل المستخدم يحمي الأنواع ولكنه لا يقدم دليلاً تشغيليًا لمساحات الأسماء والملكية.
الملاحظة الثانية لتسلسل الأمان هي أن حد إخراج الأمان المنفصل هو أن خريطة cap_drop وsecurity_opt للقراءة فقط بينما لا يحدث ذلك في الوضع بدون جذر. الدليل: خريطة read_only cap_drop وsecurity_opt بينما لا يحدث ذلك في الوضع بدون جذر. يفصل إخراج هوية وقت التشغيل هذا الإعدادات عن السياق غير المتاح. اجعل إمكانيات تحميل المستخدم قابلة للمراجعة وتحقق من مساحات الأسماء والملكية بشكل مستقل.
الصور التي تسقط الامتيازات بالفعل — USER في ملف Dockerfile، والصور التي تقوم بتبديل المستخدمين في نقطة الدخول الخاصة بهم
الصور التي تسقط الامتيازات بالفعل — USER في ملف Dockerfile، والصور التي تقوم بتبديل المستخدمين في نقطة الدخول الخاصة بهم. توقف عند استثناء هوية وقت التشغيل بدلاً من التخمين. تحتاج أي إضافة بالقرب من إمكانيات تحميل المستخدم إلى سبب خاص بالنشر مرتبط بمساحات الأسماء والملكية.
قيد استثناء أمني آخر هو أن حد استثناء الأمان المنفصل هو أن إعادة تعيين مساحة الاسم وسياقات Kubernetes خارج النطاق. الدليل: إعادة تعيين مساحة الاسم وسياقات Kubernetes خارج النطاق. احتفظ بأمر هوية وقت التشغيل الأصلي بجانب التحذيرات. توضح المقارنة ما تحتويه إمكانيات تحميل المستخدم ومساحات الأسماء وقرار الملكية الذي يظل يدويًا.
مثال عملي: تحويل تشغيل عامل الإرساء --user 1000:1000 -v /srv/app:/app - المستخدم: المفتاح والملكية الناتجة على القرص
مثال عملي: تحويل تشغيل عامل الإرساء --user 1000:1000 -v /srv/app:/app - المستخدم: المفتاح والملكية الناتجة على القرص. أنشئ مثال هوية وقت التشغيل من الأسماء الاصطناعية. اجعل عنصر قدرات كل مستخدم قابلاً للتتبع دون الكشف عن مساحات أسماء الإنتاج وتفاصيل الملكية.
يوضح نموذج مثال الأمان نفسه أن حد مثال الأمان المنفصل هو أن الهوية تصبح مرئية بجانب عمليات التثبيت والإمكانات للمراجعة. الدليل: تصبح الهوية مرئية بجانب حوامل وإمكانات المراجعة. يجب أن تكون حقيقة هوية وقت التشغيل المقترنة مرئية في إمكانيات تحميل المستخدم. سجل هذا السطر وتجنب الافتراضات المتعلقة بمساحات الأسماء والملكية.
مفاتيح تقوية أخرى – read_only، cap_drop: [ALL]، Security_opt no-new-privileges، وRootless Docker كخطوة أكبر
مفاتيح تقوية أخرى - read_only، وcap_drop: [ALL]، وsecurity_opt بدون امتيازات جديدة، وDocker بدون جذور كخطوة أكبر. ترجمة نتيجة هوية وقت التشغيل إلى اختلاف في قدرات مستخدم واحد يمكن ملاحظته. تمتلك شركة Docker مساحات الأسماء اللاحقة وحكم الملكية.
يُظهر تنفيذ عواقب الأمان أيضًا أن حد تأثير الأمان المنفصل هو أن الإخراج المثبت على الربط يمكن أن يكشف عدم تطابق الهوية الذي لا يمكن للتحليل تشخيصه. تقسيم مسؤوليات هوية وقت التشغيل: يقوم التحويل بكتابة إمكانات تحميل المستخدم، ويزيل المستودع الأسرار، ويتحقق المشغلون من صحة مساحات الأسماء والملكية.
ما لا يغطيه هذا هو إعادة تعيين مساحة اسم المستخدم وتكوين Kubernetes SecurityContext
ما لا يغطيه هذا هو إعادة تعيين مساحة اسم المستخدم وتكوين Kubernetes SecurityContext. حدد نطاق هوية وقت التشغيل بفروع قدرات المستخدم الموضحة هنا. لا يمكن للنماذج والإعدادات الافتراضية المجاورة الإجابة على أسئلة مساحات الأسماء والملكية.
هناك حد آخر لنطاق الأمان يتبع من حد حد الأمان المنفصل وهو أن UID لا تعتمد تأثيرات المضيف على تكوين مساحة الاسم غير المقروءة هنا. تعامل مع حدود هوية وقت التشغيل هذه كاستثناء. تفضيل إمكانات التثبيت الدقيقة للمستخدم على التخمينات حول مساحات الأسماء والملكية.
الخلاصة: حدد طبيعة عمليتك - وتأكد من أن مخرجات المحول تتضمن المستخدم: قبل رفع الحزمة
الخلاصة: حدد طبيعة عمليتك - وتأكد من أن مخرجات المحول تتضمن المستخدم: قبل رفع الحزمة. تدقيق هوية وقت التشغيل كخيار المصدر وحقل النموذج وخط قدرات المستخدم والتحذير. قم بإزالة الأسرار قبل التحقق من مساحات الأسماء والملكية.
أخيرًا، يؤكد مصدر المعلومات الجاهزة للأمان أن هناك حدًا منفصلاً لقرار الأمان وهو أن --user يصبح مستخدمًا ويتم اقتباس النص الرقمي UID:GID. إغلاق هوية وقت التشغيل بشكل ضيق: تعد إمكانات تحميل المستخدم مرشحًا؛ مساحات الأسماء والملكية وتكافؤ الصدفة ليست ضمانات.