performing-docker-bench-security-assessment について
CIS Docker Benchmarkの基準に照らしてDocker環境を確認するDocker Bench for Securityの実行を支援するセキュリティスキルです。合格・不合格・警告の結果確認から、修正や定期評価までを案内します。
主な機能
- 01ホストとDocker設定の監査
- 02イメージ、ランタイム、セキュリティ運用の確認
- 03合格・不合格・警告の結果出力
- 04修正と定期評価の案内
活用シーン
- 01CISガイダンスに基づくDockerホスト評価
- 02検出事項の修正優先度付け
- 03Dockerセキュリティチェックの定期実施
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ mukul975/ anthropic-cybersecurity-skills --skill performing-docker-bench-security-assessmentインストール後、Claude Code で/performing-docker-bench-security-assessmentを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
LICENSEassets/template.mdreferences/api-reference.mdstandards.mdworkflows.mdscripts/agent.pyprocess.py詳細
Docker Bench Security による評価の実施
概要
Docker Bench for Security は、本番環境で Docker コンテナーをデプロイする際の一般的なベストプラクティスを数十項目にわたって確認するオープンソーススクリプトです。CIS Docker Benchmark に基づき、ホストの設定、Docker デーモンの設定、コンテナーイメージ、実行時の設定、セキュリティ運用を監査し、合格/不合格/警告の結果を含むコンプライアンスレポートを生成します。
使用するタイミング
- Docker Bench Security による評価を伴うセキュリティ評価を実施するとき
- 関連するセキュリティイベントのインシデント対応手順に従うとき
- 定期的なセキュリティテストや監査活動を実施するとき
- 実践的なテストを通じてセキュリティ対策を検証するとき
前提条件
- Docker Engine がインストールされ、実行中であること
- Docker ホストへの root または sudo アクセス権
- Docker Bench Security のスクリプトまたはコンテナーイメージ
ワークフロー
ステップ 1:Docker Bench Security を実行する
# Run as a container (recommended)
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/docker-bench-security
# Run with JSON output
docker run --rm --net host --pid host --userns host --cap-add audit_control \
-v /etc:/etc:ro \
-v /var/lib:/var/lib:ro \
-v /var/run/docker.sock:/var/run/docker.sock:ro \
docker/docker-bench-security -l /dev/stdout 2>/dev/null | tee docker-bench-results.json
# Run specific sections only
docker run --rm --net host --pid host --userns host \
-v /var/run/docker.sock:/var/run/docker.sock:ro \
docker/docker-bench-security -c container_images,container_runtime
ステップ 2:結果を解釈する
[INFO] 1 - Host Configuration
[PASS] 1.1.1 - Ensure a separate partition for containers has been created
[WARN] 1.1.2 - Ensure only trusted users are allowed to control Docker daemon
[PASS] 1.1.3 - Ensure auditing is configured for the Docker daemon
[INFO] 2 - Docker daemon configuration
[FAIL] 2.1 - Run the Docker daemon as a non-root user
[PASS] 2.2 - Ensure network traffic is restricted between containers on the default bridge
ステップ 3:よくある不合格項目を修正する
# Fix 2.2: Restrict inter-container communication
echo '{"icc": false}' | sudo tee /etc/docker/daemon.json
# Fix 2.17: Restrict containers from acquiring new privileges
echo '{"no-new-privileges": true}' | sudo tee -a /etc/docker/daemon.json
# Fix 5.3: Restrict Linux kernel capabilities
# Use --cap-drop ALL in docker run commands
# Fix 5.12: Mount container's root filesystem as read only
# Use --read-only flag in docker run commands
# Restart Docker daemon after configuration changes
sudo systemctl restart docker
ステップ 4:定期評価を自動化する
# docker-compose for scheduled assessment
version: '3.8'
services:
bench-security:
image: docker/docker-bench-security
network_mode: host
pid: host
userns_mode: host
cap_add:
- audit_control
volumes:
- /etc:/etc:ro
- /var/lib:/var/lib:ro
- /var/run/docker.sock:/var/run/docker.sock:ro
- ./results:/results
command: -l /results/bench-$(date +%Y%m%d).log
deploy:
restart_policy:
condition: none
検証コマンド
# Verify remediation
docker run --rm docker/docker-bench-security 2>&1 | grep -E "(PASS|FAIL|WARN)" | sort | uniq -c
# Count results by type
docker run --rm docker/docker-bench-security 2>&1 | grep -c "PASS"
docker run --rm docker/docker-bench-security 2>&1 | grep -c "FAIL"
docker run --rm docker/docker-bench-security 2>&1 | grep -c "WARN"
参考資料
コメント
Markdown 対応