DUICUO

CIS Dockerベンチマーク仕様に準拠したオープンソースの検査スクリプト

[[421322]]

この記事は、Marionxue氏が執筆したWeChat公式アカウント「クラウドネイティブエコシステム」からの転載です。転載の許可については、WeChat公式アカウント「クラウドネイティブエコシステム」までお問い合わせください。

1CISとは何ですか?

CIS[1]、またはインターネットセキュリティセンター(CIS)は、セキュリティベンチマークプログラムに関する明確かつ公平で一貫性のある業界のベストプラクティスを提供し、組織がセキュリティを評価および強化するのを支援します。

2Dockerベンチセキュリティ

Docker Bench for Security[2]はオープンソースのスクリプトです。CIS Docker Benchmark v1.3.1[3]仕様に基づいており、本番環境でDockerコンテナを実行するための一般的なベストプラクティスに基づく数十の検査を自動化するために使用されます。

検査は、testsディレクトリ内の以下のスクリプトを呼び出すことで実行されます。検査の詳細については、スクリプトを参照してください。

  1. 1_ホスト_configuration.sh
  2. 2_docker_daemon_configuration.sh
  3. 3_docker_daemon_configuration_files.sh
  4. 4_コンテナ_イメージ.sh
  5. 5_コンテナ_ランタイム.sh
  6. 6_docker_security_operations.sh
  7. 7_docker_swarm_configuration.sh
  8. 8_docker_enterprise_configuration.sh
  9. 99_community_checks.sh

docker-bench-securityでは、関数内のスクリプトを修正することでチェック対象項目を選択したり、コマンドラインオプションを使ってチェック不要な項目を除外したりできます。サポートされているコマンドラインオプションを見てみましょう。

3つのコマンドオプション

docker-bench-セキュリティ

  1. -b (オプション)カラーを印刷しません
  2. -h (オプション) このヘルプメッセージを印刷する
  3. -l FILE (オプション) - ログ出力  Docker を使用して実行している場合、ログ出力ファイルはコンテナー内にあります
  4. -u USERS (オプション)信頼できる Dockerユーザーコンマ区切りリスト。信頼できる Docker ユーザーのコンマ区切りリスト。
  5. -c CHECK (オプション)特定のチェックIDコンマ区切りリスト指定されたチェックIDのコンマ区切りリスト
  6. -e CHECK (オプション)除外する特定のチェックIDコンマ区切りリスト
  7. -i INCLUDE オプションコンテナまたはイメージ内のパターンコンマ区切りリスト  カンマ区切りのコンテナ名またはイメージ名のパターンのリストを確認します
  8. -x EXCLUDE オプションコンテナまたはイメージ内のパターンカンマ区切りリスト 除外する コンテナまたはイメージ名から除外するパターンのコンマ区切りリストを確認します
  9. -n LIMITオプションJSON出力でアイテム(コンテナ、イメージなど)リストを報告する際に報告されるアイテム数をLIMIT制限しますデフォルトは0(制限なし)。
  10. JSON出力でアイテム(コンテナ、イメージなど)のリストを報告する場合、報告するアイテムの数はLIMITに制限されます。デフォルトは0(無制限)です。
  11. -p PRINT(オプション)修復措置の印刷を無効にしますデフォルト:修復措置を印刷します。

各CIS検査項目は、スクリプト内でcheck_<section>_<number>という形式で命名されます。特定の検査項目を除外するには、…を使用します。

  1. sh docker-bench-security.sh -e check_2_2 # これは check_2_2 以外のすべてをチェックすることを意味します (2.2 ログレベルを確認する)   セット   '情報'

1つの項目のみチェックすることもできます。

  1. sh docker-bench-security.sh -c check_2_2

とても使いやすいです。

使用時には、`--help` を使用するとサポートされているコマンドラインオプションを確認できます。Docker イメージでサポートされているオプションは、Git リポジトリに記載されているオプションと一致していないことがわかりました。もちろん、独自のイメージをビルドすることもできます。

ビルドイメージ

  1. git クローン https://github.com/docker/docker-bench-security.git
  2. cd docker-bench-security
  3. docker ビルド--no-cache -t docker-bench-security 。  

以下は、Mac で検査を実行するデモです。

Mac用Dockerデスクトップ

  1. docker 実行--rm --net ホスト --pid ホスト --userns ホスト --cap-add 監査制御 \  
  2. -e DOCKER_CONTENT_TRUST=$DOCKER_CONTENT_TRUST \
  3. -v /var/lib:/var/lib:ro \
  4. -v /var/run/docker.sock:/var/run/docker.sock:ro \
  5. -v `pwd`:/usr/ローカル/bin/log/ \
  6. --label docker_bench_security \  
  7. docker/docker-bench-security -t devops.v1
  8. # --------------------------------------------------------------------------------  
  9. # Docker Bench for Security v1.3.4
  10. #
  11. # Docker, Inc. (c) 2015-
  12. #
  13. # Docker コンテナを本番環境デプロイする際の一般的なベストプラクティス多数チェックします
  14. # CIS Docker Community Edition ベンチマーク v1.1.0からヒントを得ました。
  15. # --------------------------------------------------------------------------------  
  16.  
  17. 2021年9月2日(木) 04:55:59 UTC に初期化中
  18.  
  19. イメージ devops.v1探しています
  20.  
  21. [INFO] 1 - ホスト構成
  22. [警告] 1.1 - コンテナ用の別のパーティションが作成されていることを確認してください
  23. [注意] 1.2 - コンテナホストが強化されていることを確認する
  24. …[余分な内容は省略]
  25. [合格] 7.10 - 管理プレーンのトラフィックがデータプレーンのトラフィックから分離されていることを確認する(Swarm モードは有効になっていません
  26.  
  27. [INFO] チェック: 105
  28. [情報] スコア: 7

参考文献

[1]インターネットセキュリティセンター(CIS): https://www.cisecurity.org/

[2]Dockerベンチセキュリティ: https://github.com/docker/docker-bench-security

[3]CIS Dockerベンチマーク: https://www.cisecurity.org/benchmark/docker/