CIS是什麼?
CIS即Center for Internet Security (CIS) 為安全基準計劃提供了定義明确、公正、基于一緻性的行業最佳實踐來幫助組織評估和增強其安全性
Docker Bench Security
Docker Bench for Security是一個開源的腳本。它是基于CIS Docker Benchmark v1.3.1規範的,用于自動化巡檢在生産環境中運作Docker容器的數十種常見的最佳實踐的腳本。
公衆号《雲原生生态圈》内回複"cis-docker",擷取CIS出品的 CIS_Docker_Benchmark_v1.3.1_PDF
通過調用
tests
目錄的以下腳本進行巡檢, 具體的巡檢的内容可以參考的腳本的内容。
1_host_configuration.sh
2_docker_daemon_configuration.sh
3_docker_daemon_configuration_files.sh
4_container_images.sh
5_container_runtime.sh
6_docker_security_operations.sh
7_docker_swarm_configuration.sh
8_docker_enterprise_configuration.sh
99_community_checks.sh
在docker-bench-security中可以通過修改
functions
中的腳本選擇檢查的項,也可以通過指令行選項排除不需要檢查的項,下面看下支援的指令行選項.
指令選項
docker-bench-security
-b 可選 Do not print colors 不列印顔色
-h 可選 Print this help message 列印幫助資訊
-l FILE 可選 Log output in FILE, inside container if run using docker 日志輸出檔案,如果使用docker運作,在容器内部
-u USERS 可選 Comma delimited list of trusted docker user(s) 以逗号分隔的受信任docker使用者清單
-c CHECK 可選 Comma delimited list of specific check(s) id 以逗号分隔的指定檢查id清單
-e CHECK 可選 Comma delimited list of specific check(s) id to exclude 要排除的以逗号分隔的檢查id清單
-i INCLUDE 可選 Comma delimited list of patterns within a container or image name to check 以逗号分隔的容器或圖像名稱中的模式清單
-x EXCLUDE 可選 Comma delimited list of patterns within a container or image name to exclude from check 容器或圖像名稱中要排除的以逗号分隔的模式清單
-n LIMIT 可選 In JSON output, when reporting lists of items (containers, images, etc.), limit the number of reported items to LIMIT. Default 0 (no limit).
在JSON輸出中,當報告項目清單(容器,圖像等)時,限制報告項目的數量為LIMIT。預設0(無限制)。
-p PRINT 可選 Disable the printing of remediation measures. Default: print remediation measures. 禁用列印補救措施。預設值:列印補救措施。
每個CIS巡檢項在腳本中是以
check_<section>_<number>
格式命名的. 如果要排除某項檢查可以使用
也可以隻檢查某項
sh docker-bench-security.sh -c check_2_2
使用很簡單。
在使用的時候可以通過檢視支援的指令行選項,我在使用的時候發現docker鏡像中支援的與git倉庫中寫的
--help
,當然你可以自己打一個鏡像。
不一緻
建構鏡像
git clone https://github.com/docker/docker-bench-security.git
cd docker-bench-security
docker build --no-cache -t docker-bench-security .
下面是在Mac上執行一次巡檢的Demo.
Docker Desktop for Mac
docker run --rm --net host --pid host --userns host --cap-add audit_control \
-e DOCKER_CONTENT_TRUST=$DOCKER_CONTENT_TRUST \
-v /var/lib:/var/lib:ro \
-v /var/run/docker.sock:/var/run/docker.sock:ro \
-v `pwd`:/usr/local/bin/log/ \
--label docker_bench_security \
docker/docker-bench-security -t devops.v1
# ------------------------------------------------------------------------------
# Docker Bench for Security v1.3.4
#
# Docker, Inc. (c) 2015-
#
# Checks for dozens of common best-practices around deploying Docker containers in production.
# Inspired by the CIS Docker Community Edition Benchmark v1.1.0.
# ------------------------------------------------------------------------------
Initializing Thu Sep 2 04:55:59 UTC 2021
Looking for image devops.v1
[INFO] 1 - Host Configuration
[WARN] 1.1 - Ensure a separate partition for containers has been created
[NOTE] 1.2 - Ensure the container host has been Hardened
....[省略省略過多内容]
[PASS] 7.10 - Ensure management plane traffic has been separated from data plane traffic (Swarm mode not enabled)
[INFO] Checks: 105
[INFO] Score: 7