GNU/Linux >> Linux の 問題 >  >> Panels >> Docker

DockerScanを使用して画像の脆弱性を見つける方法

Dockerには、セキュリティスキャンサポートが組み込まれています。コンテナイメージをローカルでスキャンして、考えられる脆弱性を特定できます。これにより、CIパイプラインやクラウドサービスと比較してより迅速なフィードバックが提供されるため、開発サイクルが加速されます。

scan コマンドは、Dockerバージョン20.10でデフォルトで使用できます。 DockerはSnykと提携して、CLIにセキュリティスキャンを提供します。コマンドを初めて実行すると、1回限りの同意プロンプトが表示されます。 「y」と入力し、Enterキーを押して、Snykの統合を確認します。

Snykに同意することに加えて、コンテナスキャンにはDockerHubログインも必要です。 docker loginを実行します スキャンを開始する前に、ユーザー名とパスワードを入力してください。

docker scan --versionを実行してみてください インストールを確認します。 scanのバージョン番号が表示されます プラグイン。この出力には、scanするセキュリティスキャンプロバイダーの名前も含まれています。 (現在はSnyk)を使用します。将来、プロバイダーが追加される可能性があります。

スキャンの仕組み

docker scan パラメータとして画像名を受け入れます。コンテナの脆弱性のSnykデータベースに対してイメージをスキャンします。古いベースイメージから、使用しているオープンソースソフトウェアライブラリに対するエクスプロイトまで、幅広い問題がカバーされています。

SnykはDockerfileを表示できます 脆弱性を導入する行。これにより、各問題を解決する際の開始点がすぐに得られます。スキャンが完了すると、結果が端末に表示されます。

Snykデータベースは、新しい脆弱性で継続的に更新されます。一度スキャンに合格した画像が、将来常に同じ結果になると思い込まないでください。ワークロードを安全に保つために、定期的に画像をスキャンすることをお勧めします。

画像のスキャン

画像をスキャンする最も簡単な方法は、タグをdocker scanに渡すことです。 :

docker scan hello-world:latest

スキャンが完了するまでに数秒かかる場合があります。画像が大きいほど時間がかかります。結果は、利用可能になると端末に表示されます。成功したスキャンからの出力例を上に示します。

完全にクリアにするのは快適かもしれませんが、docker scan 脆弱性が検出された場合、出力ははるかに興味深いものになります。これがいくつかの問題を見つけたスキャンです。

各問題には、簡単な説明、重大度の表示、およびSnykWebサイトで詳細情報を入手するためのリンクがあります。

より高度なスキャン

docker scan 上記の基本的な例よりもはるかに多くの機能があります。いくつかのフラグを使用して、スキャンの動作をカスタマイズできます。

間違いなく、最も有用なフラグは--fileです。 。これにより、画像のDockerfileへのパスが取得されます 。 SnykにDockerfileを提供すると、その内容に基づいてより詳細な分析を実行できます。古いベース画像の検出など、一部のスキャン機能は、画像のDockerfileを指定した場合にのみ使用できます。 。

docker scan hello-world:latest --file Dockerfile

これにより、次のような出力が生成されます。

Tested 100 dependencies for known issues, found 50 issues.

According to our scan, you are currently using the most secure version of the selected base image.

最後の行は、ベースイメージ(FROM)かどうかを示します Dockerfileの指示 —安全です。画像が古くなっているか、その後解決された脆弱性が含まれている場合は、代替のタグ候補が表示されます。

ベースイメージの脆弱性を無視するスキャンを実行したい場合があります。 --exclude-baseを渡します これを達成するためのフラグ。これは、ベースイメージに重大度の低い問題が多数含まれていて、利用可能なアップグレードパスがない場合に役立ちます。ノイズを除外すると、画像レイヤー内の解決可能な問題に集中するのに役立ちます。

スキャン出力のカスタマイズ

docker scan いくつかの異なるフォーマットオプションを受け入れます。これまでのところ、デフォルトの出力を見てきました。これは、端末内の人間が読める形式のリストとして問題を提示します。

--jsonを渡す flagは、受信した生のJSONを出力するようにコマンドに指示します。これは、docker scanを使用している場合に理想的です プログラムでCIスクリプトまたはサードパーティツールで。 JSONを自分で処理して、必要な情報だけを抽出できます。

別のオプションは--dependency-treeです 。これにより、脆弱性のリストの上に画像の依存関係のツリービューが表示されます。これは、さまざまなパッケージがどのように取り込まれるかを視覚化するのに役立ち、問題が発生する場所を特定できます。

最後に、--severityを使用できます フラグを立てて、不要な脆弱性を除外します。 lowを使用する 、medium 、またはhigh 関心のある重大度を示します。このコマンドは、指定されたレベル以上の脆弱性のみを報告します。

制限

docker scan 現在、AlpineLinuxディストリビューションのサポートはありません。さらに、プラグインバージョン0.7には重大なバグがあり、ローカルスキャンが「イメージが見つかりません」エラーで失敗します。 v0.7は、DockerHubおよびその他のパブリックレジストリに存在するイメージのみをスキャンできます。この問題はv0.8で修正されていますが、v0.7は、Linux上のDockerリリースで広く配布されているバージョンのままです。

技術的な問題を超えて、Snykサービスはdocker scanの使用に厳しいレート制限を課します 。毎月10回のスキャンを無料で実行できます。 Snykでログインすると、1か月あたり200スキャンに増加します。

docker scan --loginを実行します 一意のログインURLを取得します。それをブラウザにコピーし、プロンプトに従って自分自身を認証します。 DockerHubまたはいくつかのサードパーティプロバイダーを使用してログインできます。ログインすると、[認証]ボタンが表示されます。これをクリックして、ターミナルに戻ります。 「Snykを使用する準備ができました」というメッセージが表示されます。

概要

Dockerの組み込みの画像スキャンにより、コンテナの脆弱性の発見と解決が容易になります。 Docker CLIとコンテナイメージにアクセスできる開発者は、レジストリにプッシュしなくても脆弱性をスキャンできるようになりました。

定期的なスキャンは、潜在的な脅威からコンテナを保護するのに役立ちます。古くなったベースイメージと依存関係の脆弱性は、セキュリティ体制に大きな影響を与えますが、簡単に見過ごされる可能性があります。 docker scan 他の方法では見落としていた問題を明らかにすることで、コンテナに対する自信を高めることができます。


Docker
  1. LinuxでFINDを使用する方法

  2. 専用サーバーの使用方法

  3. Minikube でローカル docker イメージを使用するには?

  1. Dockerイメージ、コンテナー、およびDockerファイルを詳細に使用する方法

  2. DockerComposeの使用方法

  3. Dockerfileを使用してDockerイメージを構築する方法

  1. DockerInspectコマンドの使用方法

  2. Dockerイメージを変更する方法

  3. プロキシを使用するように docker を構成する方法