Docker Desktop と Docker Hub で Snyk スキャンを組み合わせて安全なコンテナをデプロイする

先週、 Docker Desktop Stable リリースに、パートナーの Snyk と構築しているコンテナセキュリティソリューションの最新のマイルストーンである脆弱性スキャンが含まれていることを発表しました。 Snyk 脆弱性スキャンを Docker デスクトップ CLI から直接実行できるようになりました。 この機能を 10 月にリリースした Docker Hub スキャン機能と組み合わせることで、開発内部ループの複数のポイントに沿って脆弱性スキャンを柔軟に含めることができ、セキュリティで保護されたアプリケーションをデプロイするためのより優れたツールが提供されます。

最初のスキャンをデスクトップCLI側から実行するか、ハブから実行するかを決定できます。 Docker をしばらく使用しているお客様は、ハブから始めることを好む傾向があります。 ジャンプする最も簡単な方法は、イメージをそのリポジトリにプッシュするたびにスキャンを自動的にトリガーするように Docker Hub リポジトリを構成することです。 このオプションはリポジトリごとに構成できるため、これらのスキャンをセキュリティプログラムにオンボードする方法を決定できます。 (Docker Hub イメージは Docker Pro および Team サブスクライバーのみが使用でき、サブスクリプションの詳細については、 Docker の価格に関するページを参照してください)。

ドッカーデスクトップ1でのSnykスキャン

スキャンを有効にすると、この ブログで説明されているように、Docker Hub で、または Docker デスクトップ アプリから直接スキャン結果を表示できます。 

ドッカーデスクトップ2でのSnykスキャン

スキャン結果の概要からドリルダウンして、最初に各スキャンのより詳細なデータを表示し、各脆弱性タイプに関する詳細情報を取得できます。 脆弱性データで最も有用な情報は、検出された脆弱性を修復する方法と、特定の脆弱性がすでに対処されているより高いパッケージバージョンが利用可能かどうかに関するSnykの推奨事項です。  

ドッカーデスクトップ3でのSnykスキャン

検出してから修復する 

Docker デスクトップから脆弱性データを表示している場合は、CLI から直接脆弱性の修復と修復のテストを開始できます。 Docker Desktop からのスキャンのトリガーは簡単で、 を実行する docker scanだけで、イメージをハブにプッシュする前に修復が成功したことを確認する反復テストを実行できます。  

ドッカーデスクトップ4でのSnykスキャン

新しいDockerユーザーの場合は、デスクトップCLIから最初のスキャンを実行することを検討してください。 Dockerデスクトップ脆弱性スキャンCLIチートシート は、始めるための素晴らしいリソースです。  

ドッカーデスクトップ5でのSnykスキャン

CLI チートシートは、 Docker ローカル・イメージの脆弱性 スキャンに関する Docker ドキュメンテーション・ページにも記載されている基本事項 (最初のスキャンを実行する手順、各スキャン結果に含まれる脆弱性情報の説明、 docker scan 表示するスキャン結果の指定に役立つフラグなど) から始まります。 これらの docker scan フラグのいくつかは次のとおりです– 

  • --dependency-tree - 報告された脆弱性を含むすべてのパッケージの基になる依存関係のリストを表示する
  • --exclude base - ベースレイヤーに関連する脆弱性を報告せずにイメージスキャンを実行する
  • --f - 関連する Dockerfile の脆弱性データを含む 
  • --json - 脆弱性データをJSON形式で表示する

このチートシートの本当にクールな点は、これらのフラグを組み合わせてデータを表示するためのいくつかのオプションを作成する方法を示していることです。 

  • 基本イメージ以外のレイヤーの重大度の高い脆弱性のみを表示します。 
    • $ docker scan myapp:mytag --exclude-base \ --file path/to/Dockerfile --json |\ jq '[.vulnerabilities[] | select(.severity=="high")]' 
  • CVSSv3ネットワーク攻撃ベクトルで重大度の高い脆弱性を表示します。 
    • $ docker scan myapp:mytag --json |\ jq '[.vulnerabilities[] | select(.severity=="high") |選択(.CVSSv3 |contains("AV:N"))]' 
  • 重大度の高い脆弱性と利用可能な修正を表示します。 
    • $ docker scan myapp:mytag --json |\ jq '[.vulnerabilities[] | select(.nearestFixedInVersion) |select(.severity=="high")]' 

イメージをハブにプッシュする前にCLIスキャンを実行し、脆弱性を修復することで、ハブスキャンで報告される脆弱性の数が減り、チームはより迅速で合理化されたビルドサイクルを得ることができます  

Docker イメージで脆弱性スキャンを実行する方法の詳細については、SnykCon で紹介された 「Docker デスクトップから直接コンテナーを保護する」 セッションをご覧ください。 これは、DockerのセキュリティリードであるJustin CormackとSnykプロダクトマネージャーのDanielle Inbarによる共同プレゼンテーションであり、組織のセキュリティプログラムでこの新しいソリューションを活用するために何ができるかについて説明します