تقريبا. العابرة. : يعد موضوع أمان Docker أحد الأبدية في عالم تكنولوجيا المعلومات اليوم. لذلك ، دون مزيد من التوضيح ، نقدم ترجمة الاختيار التالي للتوصيات ذات الصلة. إذا كنت مهتمًا بالفعل بهذه المشكلة ، فسيكون العديد منهم على دراية بك. وقد استكملنا عملية الاختيار نفسها بقائمة من الأدوات المساعدة المفيدة والعديد من الموارد لمزيد من الدراسة لهذه المشكلة.
إليك دليل أمان Docker. التعليقات مرحب بها ، فهي مجموعة مقتطفات من مختلف المصادر ، ولم يتم فحصها جميعًا بدقة. تنقسم التوصيات إلى ثلاث فئات:
- التدابير اللازمة داخل نظام التشغيل المضيف عند العمل مع Docker ؛
- التعليمات المتعلقة بملف تكوين التجميع وإنشاء الحاويات ؛
- أدوات الأمان التي يمكن أن تتكامل مع ميزات Docker Enterprise المحددة.
أصبحت مجموعة متنوعة من الموارد أساس القيادة ، والعديد منها مدرج أدناه. لا يمكن أن يسمى شاملة ، لكنه يغطي جميع الأساسيات. يمكن العثور على معلومات إضافية في وصف اختبارات CIS (يرد الرابط في نهاية هذا الدليل) ، وكذلك في وثائق Docker.
عامل الأمان القياسي
يقوم Docker Bench for Security تلقائيًا بفحص Docker للامتثال لأفضل الممارسات الشائعة. يعد البرنامج النصي اختبارًا جيدًا للأمان ، ولكن لا ينبغي اعتباره أداة تحليل شاملة.
نظام التشغيل المضيف
من الواضح ، لا يمكن حماية حاوية Docker إذا كان النظام المضيف نفسه غير محمي. لذلك ، يجب اتباع أفضل الممارسات في مجال أمان نظام التشغيل. بالإضافة إلى ذلك ، سيكون من الحكمة إجراء تحليل للضعف بالإضافة إلى التوصيات التالية.
قواعد التدقيق
إنشاء واستخدام قواعد التدقيق للملفات المرتبطة Docker باستخدام
auditctl
. على سبيل المثال ، يمكنك إضافة
-w /usr/bin/dockerd -k docker
إلى
/etc/audit.rules
وإعادة تشغيل خدمة التدقيق.
وضع FIPS
يؤدي تمكين وضع FIPS إلى فرض أدوات التشفير على التبديل إلى الخوارزميات المقدمة في FIPS
( معايير معالجة المعلومات الفيدرالية الأمريكية - الترجمة تقريبًا.) ، وبالتالي الامتثال للمعايير والمتطلبات الفيدرالية والصناعية. إذا كان نظام التشغيل المضيف يدعم وضع FIPS ، فيمكنك تمكينه عن طريق تشغيل الأوامر التالية:
sed -i 's/GRUB_CMDLINE_LINUX="/GRUB_CMDLINE_LINUX="fips=1 /g' /etc/default/grub grub2-mkconfig -o /boot/grub2/grub.cfg && reboot
يجب عليك أيضًا تمكين FIPS في Docker Engine:
mkdir -p /etc/systemd/system/docker.service.d 2>&1; echo -e "[Service]\n Environment=\"DOCKER_FIPS=1\"" > /etc/systemd/system/docker.service.d/fips-module.conf; systemctl daemon-reload; systemctl restart docker
راجع وثائق
Docker و
Red Hat لمزيد من المعلومات.
أسرار عامل الميناء
يجب الاحتفاظ بالبيانات السرية كأسرار. يمكنك بدء الخدمة المقابلة باستخدام أمر إنشاء خدمة عامل ميناء:
docker service create --label com.docker.ucp.access.label=/prod --name nginx --publish 443 --secret source=orcabank_prod_mobile.ca.pem.v1,target=ca.pem nginx
انظر
الوثائق للحصول على التفاصيل.
ملف تكوين عامل الميناء
يمكن إضافة الإعدادات التالية إلى
/etc/docker/daemon.json
التكوين
/etc/docker/daemon.json
:
أمن النقل
يجب أن يكون المستخدمون الذين لديهم حق الوصول إلى بيانات اعتماد عميل TLS فقط قادرين على الاتصال بـ Docker daemon (إذا كان الوصول عن بُعد ضروريًا).
الإضافات إذن
حدد المستخدمين المسموح لهم بتنفيذ أي الأوامر وإنشاء مكون ترخيص إضافي مناسب لـ Docker. ثم قم بتشغيل البرنامج الخفي Docker وأضف المكون الإضافي إليه:
dockerd --authorization-plugin=PLUGIN_ID
لمعرفة المزيد حول إنشاء مكونات إضافية للترخيص ، راجع
الوثائق .
خيارات الشيطان
يعمل Docker daemon مع مجموعة من المعلمات الافتراضية.
--live-restore
- يساعد هذا الخيار في تقليل وقت تعطل الحاويات أثناء إيقاف تشغيل النظام أو إعادة تشغيله. يصبح من الأسهل تصحيحها أو تحديثها بأقل وقت توقف ؛--userland-proxy=false
- عند توفر أو استخدام NATs الخاصة --userland-proxy=false
الشعر ، يصبح الوكيل في مساحة المستخدم خدمة زائدة عن الحاجة ، مما يزيد فقط من عدد متجهات الهجوم المحتملة ؛--no-new-privileges
- يمنع الحاويات من الحصول على امتيازات إضافية باستخدام suid أو sguid ؛--seccomp-profile /path/to/profile
- إذا كان لديك ملف تعريف seccomp الخاص بك ، يمكنك استخدامه مع هذه العلامة. تعرف على المزيد حول Seccomp و Docker هنا .
تكوين الحاويات وملفات التجميع
إنشاء المستخدم
تأكد من إنشاء مستخدم للحاوية وتشغيله تحت ذلك المستخدم (لا تقم بتشغيل الحاوية أسفل الجذر).
الوصول عن بعد
رفض الوصول عن بعد إلى البرنامج الخفي. إذا كان لا يزال ضروريًا ، قم بحمايته باستخدام الشهادات.
عزل مساحة اسم المستخدم
من المهم بشكل خاص التأكد من عزل مساحة اسم المستخدم في Docker ، لأنه بشكل افتراضي يتم مشاركتها مع مساحة اسم المضيف. في بعض الحالات ، يمكن استخدام هذا لرفع الامتيازات أو حتى الخروج من الحاوية. يمكنك عزل مساحة اسم المستخدم عن طريق تحرير ملف التكوين (كما هو موضح أعلاه في قسم ملف تكوين Docker). هناك إشارة إضافية لهذه المشكلة بسبب أهميتها.
Healthcheck'i
Healthcheck (Health Check) أداة قوية لفحص سلامة الحاوية. تم تكوينه في Dockerfile باستخدام
HEALTHCHECK
. يتيح لك Healthcheck التحقق من أن الحاوية تعمل بشكل صحيح. في المثال أدناه ، ينتهي الفحص الصحي بالرقم 0 إذا كان الخادم قيد التشغيل ، والرقم 1 إذا "تعطل":
HEALTHCHECK CMD curl --fail http://localhost || exit 1
سيلينو
إذا كان SELinux مدعومًا من قبل نظام التشغيل المضيف ، فقم بإنشاء أو استيراد سياسة SELinux وتشغيل Docker في وضع الخفي مع تمكين SELinux:
docker daemon --selinux-enable
في هذه الحالة ، يمكن تشغيل حاويات Docker باستخدام إعدادات الأمان ، على سبيل المثال:
docker run --interactive --tty --security-opt label=level:TopSecret centos /bin/bash
واجهات الشبكة
بشكل افتراضي ، يستمع Docker على جميع واجهات الشبكة. نظرًا لأنه في معظم الحالات لا يُتوقع مرور حركة المرور على أحدهم فقط ، فإن مثل هذا النهج يزيد بشكل غير معقول من خطر حدوث هجوم. لذلك ، عند بدء تشغيل الحاوية ، يمكنك ربط منافذها بواجهات محددة على المضيف:
docker run --detach --publish 10.2.3.4:49153:80 nginx
إصدارات الصور المخزنة مؤقتًا
عند تنزيل الصور ، تأكد من تطابق ذاكرة التخزين المؤقت المحلية مع محتويات المستودع. خلاف ذلك ، قد تتلقى نسخة قديمة من الصورة أو صورة تحتوي على ثغرات.
جسر الشبكة
يكون نموذج الشبكة الافتراضي ،
docker0
، عرضة لهجمات مثل خداع ARP وفيضان MAC. لحل هذه المشكلة ، قم بإنشاء جسر شبكة وفقًا لمواصفاتك ، كما هو موضح
هنا .
تحذير مأخذ التوصيل
لا تقم مطلقًا برمي مقبس Docker داخل الحاوية. وإلا ، ستكون الحاوية قادرة على تنفيذ أوامر Docker ، وبالتالي ، التواصل مع نظام التشغيل المضيف والتحكم فيه. لا تفعل هذا.
تكوين Docker Enterprise
عامل الميناء الثقة
يسمح لك Docker Trust بإنشاء مفاتيح يمكن استخدامها للتحقق من سلامة تشفير الصور. يمكن استخدام مفاتيح Docker Trust لتوقيع صور Docker باستخدام مفاتيح خاصة ، والتي يتم التحقق منها بواسطة مفاتيح عمومية على خادم كاتب العدل. مزيد من المعلومات
هنا . يوصف تمكين Docker Trust في Enterprise Engine بالتفصيل في
هذا القسم من الوثائق .
مسح الضعف
يحتوي Docker Enterprise على ماسح ضوئي للضعف ، مما يجعل من الممكن تنزيل قاعدة بيانات CVE لثغرات المسح في وضع عدم الاتصال في الصور. يساعد مسح الصور بانتظام على جعلها أكثر أمانًا: يتلقى المستخدم على الفور تحذيرات حول الثغرات الموجودة. لمزيد من المعلومات حول كيفية القيام بذلك ، انظر
هنا .
تقريبا. العابرة. : هناك أيضًا ماسحات ضوئية مفتوحة المصدر في Docker-images ، انظر الأمثلة في نهاية المقالة.تكامل LDAP و UCP
يمكن دمج طائرة التحكم العالمية مع LDAP. ستكون النتيجة نظام مصادقة مبسط لتجنب الازدواجية غير الضرورية. اقرأ المزيد حول هذا الموضوع في المقالة
التكامل مع دليل LDAP .
مواد أخرى
لمزيد من المعلومات حول أفضل ممارسات أمان Docker ، تفضل بزيارة
docs.docker.com . نوصي أيضًا بتنزيل
اختبارات Center for Internet Security لـ Docker .
مكافأة من المترجم
كمكمل منطقي لهذه المقالة ، نقوم بنشر قائمة من
10 أدوات أمنية مفتوحة المصدر في Docker . تم استعارته من
مقال آخر (تأليف بيل دويفيلد من Doerrfeld.io).
ملاحظة : اقرأ المزيد عن العديد من المشاريع المذكورة هنا في المقالة " 33+ أدوات الأمن Kubernetes ".- Docker Bench for Security هو برنامج نصي سبق ذكره في بداية المقال الذي يفحص حاويات Docker للتأكد من توافقه مع ممارسات الأمان الشائعة.

- ربما يكون Clair هو الأداة الأكثر شيوعًا للتحليل الثابت لنقاط الضعف في الحاوية. يستخدم العديد من قواعد بيانات الضعف CVE (بما في ذلك بتتبع توزيعات لينكس الرائدة مثل ريد هات ، ديبيان ، أوبونتو). يوفر واجهة برمجة التطبيقات للمطورين وفرصة بسيطة لتوسيع الوظائف (من خلال إضافة "برامج التشغيل"). يتم استخدامه في السجل العام الشعبي لصور الحاوية (على غرار Docker Hub) - Quay.io.
- Cilium هو حل أمان شبكة على مستوى kernel يعتمد على تقنية تصفية حزم شبكة BPF.
- Anchore هي أداة مساعدة معتمدة على CVE لتحليل محتويات الصور لثغرات أمنية. بالإضافة إلى ذلك ، يسمح لك بتطبيق سياسات مخصصة (استنادًا إلى بيانات متنوعة بما في ذلك القوائم البيضاء / السوداء ، ومحتويات الملفات ، وما إلى ذلك) لتقييم أمان الحاويات.
- يعد OpenSCAP Workbench نظامًا بيئيًا بالكامل لإنشاء سياسات الأمان والحفاظ عليها عبر الأنظمة الأساسية. لفحص الحاويات ، يوفر الأداة المساعدة
oscap-docker
. - Dagda هي أداة لفحص حاويات Docker بحثًا عن نقاط الضعف وأحصنة طروادة والفيروسات والبرامج الضارة. تتضمن قواعد بيانات CVE فحوصات تبعية OWASP ، وقاعدة بيانات Red Hat Oval ، وقاعدة استغلال قاعدة البيانات المستغلة.
- يعد Notary إطارًا لتوقيع صور Docker ، تم إنشاؤه في الأصل بواسطة Docker Inc (ثم تم تسليمه إلى CNCF للتطوير). يتيح لك استخدامه تفويض الأدوار وتوزيع المسؤوليات بين الحاويات ، وكذلك التحقق من سلامة تشفير الصور.
- Grafaes هي واجهة برمجة تطبيقات بيانات التعريف المصممة لإدارة سياسات الأمان الداخلية. كمثال ، إنه يحسن أداء الماسحات الضوئية لأمان الحاوية. يستخدم Shopify واجهة برمجة التطبيقات هذه لإدارة البيانات الوصفية عبر 500000 صورة.
- Sysdig Falco - أداة مساعدة لـ Kubernetes تراقب سلوك النظام: النشاط في الحاويات ، على الأجهزة المضيفة ، على الشبكة. يتيح لك تكوين عمليات فحص مستمرة في البنية التحتية ، واكتشاف الحالات الشاذة وإرسال تنبيهات إلى أي مكالمات نظام لينكس.
- يعد Banyanops Collector أداة أخرى لتحليل الصور الثابتة لحاويات Docker. يتيح لك "النظر" في ملفات الصور ، وجمع البيانات اللازمة ، وتطبيق السياسات اللازمة ، إلخ.
يمكن العثور على
مجموعة جيدة أخرى من النصائح العملية حول جعل Docker أكثر أمانًا في
مقالة Aqua Security. تتداخل العديد من نصائحها مع تلك المذكورة أعلاه بالفعل ، ولكن هناك نصائح أخرى. على سبيل المثال ، يقترح المؤلفون نشاط المراقبة في الحاويات ويشيرون إلى ما يجب البحث عنه عند استخدام Docker Swarm.
بالنسبة لأولئك الذين يرغبون في الغوص في هذا الموضوع بمزيد من التفصيل في العام الماضي ، تم
نشر كتاب " Docker Security: Quick Reference " ، حيث تتوفر أجزاء منه مجانًا
هنا .
أخيرًا ، للتعرف على بعض جوانب أمان Docker: ملفات تعريف Seccomp وباستخدام إمكانيات Linux kernel في الحاويات ، يمكنك الاطلاع على
العمل المختبري المقابل
على مورد Play with Docker * - راجع قسم الأمان.
* تحدثنا عن هذا المورد منذ عامين ، وفي نوفمبر 2018 ، حدثت قصة مثيرة جدًا (من وجهة نظر أمنية) لها. باختصار ، متخصصون من CyberArk Software Ltd. تمكنت من كسرها: لتحقيق القدرة على تنفيذ الأوامر خارج الحاويات ، أي على النظام المضيف. مثال رائع لقضايا الأمن في Docker ، أليس كذلك؟ اقرأ جميع تفاصيل ما حدث هنا .PS من المترجم
اقرأ أيضًا في مدونتنا: