
إن Docker Bench for Security هو سكريبت يتحقق من العشرات من أفضل الممارسات الشائعة حول نشر حاويات Docker في الإنتاج.

The Docker Bench for Security هو سكريبت يتحقق من عشرات الممارسات الجيدة الشائعة حول نشر حاويات Docker في الإنتاج. جميع الاختبارات آلية، وتستند إلى معيار CIS Docker v1.6.0.
نحن نتيح هذه الأداة كمصدر مفتوح حتى يتمكن مجتمع Docker من الحصول على وسيلة سهلة للتقييم الذاتي للمضيفين وحاويات Docker الخاصة بهم مقابل هذا المعيار.
| الإصدار | CIS |
|---|---|
| 1.6.0 | 1.6.0 |
| 1.5.0 | 1.5.0 |
| 1.3.6 | 1.4.0 |
| 1.3.5 | 1.2.0 |
| 1.3.3 | 1.1.0 |
| 1.3.0 | 1.13.0 |
يمكنك ببساطة تشغيل هذا السكريبت من المضيف الأساسي عن طريق تشغيل:
git clone https://github.com/docker/docker-bench-security.git
cd docker-bench-security
sudo sh docker-bench-security.sh
ملاحظة:
jqهي تبعية اختيارية ولكنها موصى بها.
لديك خياران إذا كنت ترغب في بناء وتشغيل هذه الحاوية بنفسك:
git clone https://github.com/docker/docker-bench-security.git
cd docker-bench-security
docker build --no-cache -t docker-bench-security .
متبوعًا بأمر docker run المناسب كما هو موضح أدناه.
git clone https://github.com/docker/docker-bench-security.git
cd docker-bench-security
docker-compose run --rm docker-bench-security
يرجى ملاحظة أن صورة docker/docker-bench-security قديمة ويلزم بناء يدوي. انظر #405 لمزيد من المعلومات.
لاحظ أن هذه الحاوية تُشغل بصلاحيات كثيرة -- مشاركة نظام ملفات المضيف، ومساحات أسماء pid والشبكة، نظرًا لأن أجزاء من المعيار تنطبق على المضيف الجاري.
docker run --rm --net host --pid host --userns host --cap-add audit_control \
-e DOCKER_CONTENT_TRUST=$DOCKER_CONTENT_TRUST \
-v /etc:/etc:ro \
-v /usr/bin/containerd:/usr/bin/containerd:ro \
-v /usr/bin/runc:/usr/bin/runc:ro \
-v /usr/lib/systemd:/usr/lib/systemd:ro \
-v /var/lib:/var/lib:ro \
-v /var/run/docker.sock:/var/run/docker.sock:ro \
--label docker_bench_security \
docker-bench-security
لا تنسَ ضبط الأحجام المشتركة وفقًا لنظام التشغيل الخاص بك. بعض الأمثلة هي:
docker.service و docker.secret في مجلد /lib/systemd/system افتراضيًا.docker run --rm --net host --pid host --userns host --cap-add audit_control \
-e DOCKER_CONTENT_TRUST=$DOCKER_CONTENT_TRUST \
-v /etc:/etc:ro \
-v /lib/systemd/system:/lib/systemd/system:ro \
-v /usr/bin/containerd:/usr/bin/containerd:ro \
-v /usr/bin/runc:/usr/bin/runc:ro \
-v /usr/lib/systemd:/usr/lib/systemd:ro \
-v /var/lib:/var/lib:ro \
-v /var/run/docker.sock:/var/run/docker.sock:ro \
--label docker_bench_security \
docker-bench-security
Docker Desktop على macOS لا يحتوي على /usr/lib/systemd أو ثنائيات Docker المذكورة أعلاه.sudo touch /etc/hostname
docker run --rm --net host --pid host --userns host --cap-add audit_control \
-e DOCKER_CONTENT_TRUST=$DOCKER_CONTENT_TRUST \
-v /etc:/etc \
-v /var/lib:/var/lib:ro \
-v /var/run/docker.sock:/var/run/docker.sock:ro \
--label docker_bench_security \
docker-bench-security
يتطلب Docker bench إصدار Docker 1.13.0 أو أحدث للتشغيل.
لاحظ أنه عندما لا تحتوي التوزيعات على auditctl، ستتحقق اختبارات التدقيق من /etc/audit/audit.rules لترى ما إذا كانت هناك قاعدة موجودة بدلاً من ذلك.
-b optional Do not print colors
-h optional Print this help message
-l FILE optional Log output in FILE, inside container if run using docker
-u USERS optional Comma delimited list of trusted docker user(s)
-c CHECK optional Comma delimited list of specific check(s) id
-e CHECK optional Comma delimited list of specific check(s) id to exclude
-i INCLUDE optional Comma delimited list of patterns within a container or image name to check
-x EXCLUDE optional Comma delimited list of patterns within a container or image name to exclude from check
-t LABEL optional Comma delimited list of labels within a container or image to check
-n LIMIT optional In JSON output, when reporting lists of items (containers, images, etc.), limit the number of reported items to LIMIT. Default 0 (no limit).
-p PRINT optional Disable the printing of remediation measures. Default: print remediation measures.
افتراضيًا، سيقوم سكريبت Docker Bench for Security بتشغيل جميع اختبارات CIS المتاحة وإنتاج سجلات في مجلد السجلات من الدليل الحالي، باسمي docker-bench-security.log.json و docker-bench-security.log.
إذا تم استخدام حاوية docker، فسيتم إنشاء ملفات السجلات داخل الحاوية في الموقع /usr/local/bin/log/. إذا كنت ترغب في الوصول إليها من المضيف بعد تشغيل الحاوية، فستحتاج إلى تركيب وحدة تخزين لتخزينها فيها.
الفحوصات المستندة إلى CIS تسمى check_<section>_<number>، على سبيل المثال check_2_6 والفحوصات المقدمة من المجتمع تسمى check_c_<number>.
sh docker-bench-security.sh -c check_2_2 سيشغل فقط الفحص 2.2 تأكد من ضبط مستوى التسجيل على 'info'.
sh docker-bench-security.sh -e check_2_2 سيشغل جميع الفحوصات المتاحة باستثناء 2.2 تأكد من ضبط مستوى التسجيل على 'info'.
sh docker-bench-security.sh -e docker_enterprise_configuration سيشغل جميع الفحوصات المتاحة باستثناء مجموعة docker_enterprise_configuration
sh docker-bench-security.sh -e docker_enterprise_configuration,check_2_2 سيشغل جميع الفحوصات المتاحة باستثناء مجموعة docker_enterprise_configuration و 2.2 تأكد من ضبط مستوى التسجيل على 'info'
sh docker-bench-security.sh -c container_images,container_runtime سيشغل فقط فحوصات container_images و container_runtime
sh docker-bench-security.sh -c container_images -e check_4_5 سيشغل فقط فحوصات container_images باستثناء 4.5 تأكد من تمكين الثقة في المحتوى لـ Docker
لاحظ أنه عند تقديم فحوصات، قم بتقديم معلومات عن سبب كون الاختبار معقولاً للإضافة، ويرجى تضمين نوع من التوثيق الرسمي الذي يؤكد تلك المعلومات.