DUICUO

Dockerのセキュリティを確保するためのオープンソースツール10選

[51CTO.com クイック翻訳] コンテナセキュリティに関しては、TeslaのKubernetesクラスタで発生したようなデータ侵害を防ぐのに役立つオープンソースツールが数多く存在します。しかし、コンテナセキュリティは依然として複雑なため、ツールボックスに追加すべきユーティリティを把握しておく必要があります。

もちろん、市場には商用のコンテナセキュリティ製品が数多く存在しますが、オープンソースプロジェクトも非常に役立ちます。CIS、国家脆弱性データベース、その他の組織によって確立された共通脆弱性識別子(CVE)データベースとベンチマークの監査と追跡に重点を置く人が多くいます。ツールはコンテナイメージをスキャンし、その内容を表示し、それらの内容を既知の脆弱性リストと比較します。

コンテナ監査を自動化し、その他のコンテナ セキュリティ プロセスを使用すると、パイプライン構築プロセスの早い段階でチームが問題を特定できるようになるため、企業にとって非常に有益です。

市場にはオープンソースのコンテナ セキュリティ ツールが数多く存在しますが、大規模なユーザー コミュニティを持つ、定評のある成熟したツールを次に示します。

[[238488]]

1.セキュリティのためのDockerベンチ

セキュリティベンチマークに対する Docker コンテナスクリプトの監査

Docker Bench for Securityは、Docker Community Editionを使用してコンテナを管理する開発者を対象としています。これは、一般的なセキュリティ攻撃手法に照らしてコンテナを監査するための、Docker用のオープンソーススクリプトです。

Docker Bench のテストは業界標準の CIS ベンチマークに基づいており、手動で脆弱性をテストするという面倒なプロセスを自動化するのに役立ちます。

DockerのセキュリティリーダーであるDiogo Mónica氏は、これを「コンテナをテストするためのコンテナ」と呼んでいます。コンテナは次のように起動できます。

  1. docker run -it --net host --pid host --userns host --cap-add audit_control \ -e DOCKER_CONTENT_TRUST=$DOCKER_CONTENT_TRUST \ -v /var/lib:/var/lib \ -v /var/run/docker.sock:/var/run/docker.sock \ -v /usr/lib/systemd:/usr/lib/systemd \ -v /etc:/etc --label docker_bench_security \ docker/docker-bench-security  

結果として、各セキュリティ構成ベースラインについて、Info、Warning、Pass などのログが生成されます。このユーティリティは、Docker ホストから実行することも、Docker Compose 経由でクローンすることも、ベースホストから直接実行することもできます。

欠点の一つは、出力が機械可読性に欠けることです。Docker Bench Test、drydock、Actuaryなど、多くのコミュニティパッケージがDocker Benchの機能を強化しています。

2.クレア

大規模な CVE データベースを備えた API 駆動型の静的コンテナ セキュリティ分析ツール。

CoreOSが開発したClairは、コンテナの脆弱性を静的に解析します。Docker Hubの代替となるパブリックコンテナレジストリであるQuay.ioでも使用されています。

Clairは、Debian Security Bug Tracker、Ubuntu CVE Tracker、Red Hat Security Dataなど、多数の脆弱性データソースにアクセスできます。Clairは多数のCVEデータベースを使用しているため、監査は非常に包括的です。

Clairはまず、コンテナイメージ内の一連の機能をインデックス化します。その後、開発者はClair APIを使用してデータベースをクエリし、特定のイメージに関連する脆弱性を見つけることができます。

Clairを使い始めるには、「Clairの実行」ガイドを参照してください。Kubernetesクラスターへのデプロイは非常に簡単です。

  1. git clone https://github.com/coreos/clair cd clair/contrib/helm cp clair/ values ​​.yaml ~/my_custom_values.yaml vi ~/my_custom_values.yaml helm dependency update clair helm install clair -f ~/my_custom_values.yaml

Clairは非常に柔軟性が高く、独自のドライバーを追加することで動作を追加できます。さらに、特定のコンテナイメージを監査するためのAPI呼び出しは、スムーズで機械主導のアプローチであるため、膨大なレポートログを検索する必要がなくなります。

3.繊毛

カーネル対応APIネットワークおよびセキュリティツール

Ciliumの使命は、ネットワーク接続を保護することです。CiliumはDockerやKubernetesなどのLinuxコンテナプラットフォームと互換性があり、セキュリティの可視性と制御ロジックを追加します。

これはLinuxカーネル技術であるBPF(旧称Berkeley Data Filter)に基づいています。この低レベル実装の興味深い点は、アプリケーションコードやコンテナ設定を変更することなく、Ciliumのセキュリティポリシーを適用および更新できることです。

現代のマイクロサービス開発に求められる、不安定なライフサイクルと迅速なコンテナデプロイを考慮して、CoreOSはCiliumを開発しました。Kubernetesとの統合はシンプルで直感的です。以下はCiliumのデプロイ方法を示しています。

  1. $ kubectl create -f ./cilium.yaml clusterrole "cilium"が作成されました serviceaccount " cilium"が作成されました clusterrolebinding "cilium"が作成されました configmap "cilium-config"が作成されました secret "cilium-etcd-secrets"が作成されました daemonset "cilium"が作成されました $ kubectl get ds --namespace kube-system NAME DESIRED CURRENT READY NODE-SELECTOR AGE cilium 1 1 1 2m  

Ciliumには素晴らしいサポートとコミュニティがあります。豊富なガイドやドキュメント、専用のSlackチャンネル、そしてプロジェクトメンテナーとの毎週のつながりもご利用いただけます。

4.アンカー

CVE データとユーザー定義ポリシーを使用してコンテナのセキュリティをチェックするツール

Anchore Engineはコンテナイメージを分析するためのツールです。CVEベースのセキュリティ脆弱性レポートに加え、Anchore Engineはカスタム戦略を用いてDockerイメージを評価することもできます。

このポリシーは、ホワイトリストまたはブラックリスト、ログイン情報、ファイルの内容、設定の種類、あるいはユーザーが生成したその他の手がかりに基づいて、合格または不合格の判定結果を生成します。

AnchoreはDockerコンテナイメージとしてパッケージ化されており、単独で実行することも、Kubernetesなどのオーケストレーションプラットフォーム上で実行することもできます。また、JenkinsやGitLabと統合することで、継続的インテグレーション/継続的デリバリー(CI/CD)を実現します。

Anchoreコマンドラインインターフェース(CLI)は、Anchore Engineを操作するためのシンプルな方法です。例えば、このCLIコマンドはイメージの内容に関する詳細情報を返します。

  1. anchore-cli 画像コンテンツ INPUT_IMAGE CONTENT_TYPE

この例のコマンドは、イメージの脆弱性スキャンを実行します。

  1. anchore-cli イメージの脆弱性 docker.io/library/debian:最新の OS

Anchoreは、詳細な脆弱性情報、脅威レベル、CVE識別子、その他の関連情報を出力します。ユーザー定義ルールはAnchore Cloud Serviceのグラフィカルユーザーインターフェース(GUI)を使用して作成されるため、SaaSと同様の機能を提供します。

5. OpenSCAP ワークベンチ

さまざまなプラットフォームのセキュリティ ポリシーを作成および維持するための環境。

OpenSCAP は、多くのオープン セキュリティ ベンチマーク ガイドライン、構成ベンチマーク、オープン ソース ツールを含む、IT 管理者およびセキュリティ監査人向けのエコシステムです。

Fedora、Red Hat Enterprise Linux、CentOS、またはScientific Linuxをご利用の場合、OpenSCAP WorkbenchをGUIとしてインストールし、仮想マシン、コンテナ、イメージのスキャンを実行できます。OpenSCAP Workbenchは、以下のコマンドでインストールできます。

  1. #yum で scap-workbench をインストールします

SCAP ポリシー ガイドラインおよび CVE に対してコンテナーを検証するには、OpenSCAP に付属する oscap-docker ユーティリティを使用します。

OpenSCAPは、NIST認定のセキュアコンテンツ自動化プロトコル(SCAP)を中心とし、機械可読なセキュリティポリシーを幅広く提供しています。OpenSCAPのセキュリティガイドラインでは、プロジェクトの目標は「冗長性を回避することで、複数の組織がセキュアなコンテンツを効率的に開発できるようにする」ことであると述べられています。

OpenSCAP はこの記事で紹介した他のツールよりも広く使用されているため、プラットフォーム全体のセキュリティ ポリシーを作成しようとしているチームにとって良い選択肢となります。

6.ダグダ

Docker コンテナ内の脆弱性、トロイの木馬、ウイルス、マルウェアをスキャンするためのツール。

Dagdaは、コンテナセキュリティの静的解析ツールです。CVEソースには、OWASP依存性チェック、Red Hat Oval、Offensive Security脆弱性データベースが含まれます。

Dagdaを使用してDockerコンテナをスキャンするには、まずMongoDBデータベースに脆弱性データを入力する必要があります。次のコマンドを実行すると、単一のDockerイメージが分析されます。

  1. Python3 dagda.pyチェック  --docker_image jboss/wildfly  

リモートから実行することも、継続的に起動してアクティブなDockerコンテナを監視することもできます。出力には脆弱性の数、重大度、その他の詳細情報が表示されるため、修復に役立ちます。

Dagdaのメリットの一つは、その豊富な脆弱性データです。これは、大規模で最新の包括的な脆弱性データベースに直接アクセスできることを意味します。また、CLIおよびREST API経由で制御できるため、柔軟性も優れています。

7.公証人

サーバーを使用してコンテナのセキュリティを強化するフレームワーク。暗号化された方法で責任を委任するために使用されます。

NotaryはDockerイメージ署名フレームワークの事実上のデファクトスタンダードであり、現在はオープンソースです。Docker社が開発し、2017年にCloud Native Computing Foundationに寄贈されました。

Notaryの使命は、責任の分離を確保することです。Notaryを使用することで、開発者はコンテナ間の役割を委任し、責任を定義することができます。このパッケージはサーバーコンポーネントとクライアントコンポーネントの両方を提供し、コンテンツの公開と検証のための暗号的に安全な方法を提供します。

Notaryをローカルにデプロイするには、まずリポジトリをクローンします。次に、Docker Composeを使用してローカル構成をデプロイします。

  1. $ docker-compose ビルド $ docker-compose アップ -d $ mkdir -p ~/.notary && cp cmd/notary/config.json cmd/notary/root-ca.crt ~/.notary

更新フレームワークと Go 言語に依存することで、Notary はコンテナ アプリケーション イメージの暗号整合性を検証できます。

8.グラファエス

内部セキュリティポリシーの管理に役立つメタデータAPI

Grafaesは、独自のコンテナセキュリティスキャンプロジェクトの作成に役立ちます。このコンテナセキュリティツールは2017年後半にリリースされ、IBMとGoogleによって開発されました。

開発者はGrafaes(「コンポーネントメタデータAPI」として知られる)を使用して、仮想マシンとコンテナのメタデータを定義できます。IBMの脆弱性アドバイザーもこのプロジェクトに統合されています。

実例として、ShopifyがGrafeasを用いて50万個のコンテナイメージのメタデータを管理している方法をご覧ください(https://cloudplatform.googleblog.com/2018/04/exploring-container-security-digging-into-Grafeas-container-image-metadata.html?m=1)。チームはKritisを活用し、Grafeasメタデータを使用してKubernetesクラスタにセキュリティポリシーを適用しています。

コンテナのメタデータを迅速に取得できるため、修復作業が迅速化され、脆弱性の悪用から修復までの時間が短縮されます。Grafaesはオープンソースですが、大手ソフトウェアベンダーによってメンテナンスされているため、長期的なサポートが可能です。

9. Sysdig ファルコ

コンテナを詳細に理解するための動作アクティビティ監視を提供します。

Falcoは、Sysdigが開発したKubernetes向けのセキュリティ監査ツールで、コンテナ、ホスト、ネットワークアクティビティの挙動監視に重点を置いています。Falcoを使用することで、開発者は継続的なインフラストラクチャ検査のメカニズムを構築し、異常を検出し、あらゆる種類のLinuxシステムコールに対してアラートを設定できます。

Falcoのドキュメントでは、FalcoをDockerコンテナとして実行することを推奨しています。Dockerコンテナは、以下のコマンドでインストールできます。デプロイ後、Falcoの標準出力アラートは次のようになります。

  1. stdout_output: enabled: true 10:20:05.408091526: 警告信頼できないプログラムによって機密ファイルが読み取り用に開かれました

Falcoは、コンテナ内でシェルが実行されているかどうか、コンテナがマウントされている場所、機密ファイルの予期せぬ読み取り、ネットワークからの発信試行、その他の疑わしい呼び出しなどを監視できます。Sysdigは、コンテナに関する詳細なトラブルシューティング情報をこちら(https://github.com/draios/sysdig)で提供しています。

10.バンヤノプスコレクター

Dockerコンテナイメージの静的解析フレームワーク

BanyanopsがサポートするCollectorは、Dockerコンテナイメージの内部を「監視」できるオープンソースユーティリティです。開発者はCollectorを使用することで、コンテナデータの収集やセキュリティポリシーの適用などを行うことができます。

まず、BanyanopsはプライベートレジストリまたはDocker Hub上のコンテナとして実行できます。Banyanopsはより詳細なデータ分析のためのSaaS製品も提供しているため、機能が制限されている場合はアップセルにご注意ください。

原題: Docker セキュリティのための 10 以上のオープンソースツール、著者: Bill Doerrfeld

[この記事は51CTOによって翻訳されました。提携サイトへの転載の際は、元の翻訳者と出典を51CTO.comとして明記してください。]