
Docker Bench for Security एक स्क्रिप्ट है जो उत्पादन में Docker कंटेनरों को तैनात करने के आसपास दर्जनों सामान्य सर्वोत्तम प्रथाओं की जाँच करती है।

Docker Bench for Security एक स्क्रिप्ट है जो प्रोडक्शन में Docker कंटेनरों को तैनात करने के आसपास दर्जनों सामान्य सर्वोत्तम प्रथाओं की जाँच करती है। सभी परीक्षण स्वचालित हैं, और CIS Docker Benchmark 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 में /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 वैकल्पिक रंग प्रिंट न करें
-h वैकल्पिक यह सहायता संदेश प्रिंट करें
-l FILE वैकल्पिक आउटपुट को FILE में लॉग करें, कंटेनर के अंदर यदि docker के साथ चलाया जाए
-u USERS वैकल्पिक विश्वसनीय docker उपयोगकर्ता(ओं) की अल्पविराम से सीमांकित सूची
-c CHECK वैकल्पिक विशिष्ट जाँच(ओं) आईडी की अल्पविराम से सीमांकित सूची
-e CHECK वैकल्पिक बहिष्कृत करने के लिए विशिष्ट जाँच(ओं) आईडी की अल्पविराम से सीमांकित सूची
-i INCLUDE वैकल्पिक जाँच करने के लिए कंटेनर या इमेज नाम के भीतर पैटर्न की अल्पविराम से सीमांकित सूची
-x EXCLUDE वैकल्पिक जाँच से बाहर करने के लिए कंटेनर या इमेज नाम के भीतर पैटर्न की अल्पविराम से सीमांकित सूची
-t LABEL वैकल्पिक जाँच करने के लिए कंटेनर या इमेज के भीतर लेबल की अल्पविराम से सीमांकित सूची
-n LIMIT वैकल्पिक JSON आउटपुट में, आइटमों (कंटेनर, इमेज, आदि) की सूचियों की रिपोर्ट करते समय, रिपोर्ट किए जाने वाले आइटमों की संख्या को LIMIT तक सीमित करें। डिफ़ॉल्ट 0 (कोई सीमा नहीं)।
-p PRINT वैकल्पिक उपचारात्मक उपायों की छपाई अक्षम करें। डिफ़ॉल्ट: उपचारात्मक उपाय प्रिंट करें।
डिफ़ॉल्ट रूप से Docker Bench for Security स्क्रिप्ट सभी उपलब्ध CIS परीक्षण चलाएगी और वर्तमान निर्देशिका से log फ़ोल्डर में 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 Ensure the logging level is set to 'info' चलाएगा।
sh docker-bench-security.sh -e check_2_2 सभी उपलब्ध जाँचों को छोड़कर 2.2 Ensure the logging level is set to '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 Ensure the logging level is set to '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 Ensure Content trust for Docker is Enabled चलाएगा।
ध्यान दें कि जाँच प्रस्तुत करते समय, यह जानकारी प्रदान करें कि यह जोड़ने के लिए एक उचित परीक्षण क्यों है और कृपया उस जानकारी को सत्यापित करने वाले किसी प्रकार के आधिकारिक दस्तावेज़ शामिल करें।