Skip to main content

SnykでRed Hat Quayレジストリのイメージをスキャンして脆弱性を検出

Blog Design Red

2021年4月1日

0 分で読めます

Red HatのQuayコンテナレジストリと、ホスト型サービスのQuay.ioに保存されたコンテナイメージを、Snyk Containerでスキャンできるようになりました。Snyk Containerは、コンテナイメージ内の脆弱性の検出と修正を支援します。また、コンテナレジストリとしてQuayと連携することで、プロジェクトをインポートし、コンテナの脆弱性を監視できます。詳しくはSnyk Containerのドキュメントをご覧ください。Snykは、インポートしたプロジェクトに既知のセキュリティ脆弱性がないか、設定した頻度でテストします。Quayとの連携は、無料のSnykアカウントを含むすべての料金プランでご利用いただけます。(注:プライベートQuayレジストリを利用しており、ご自身の環境内でイメージスキャンを実行する必要がある場合は、Snyk Brokerが必要です。Snyk Brokerは有料プランでのみご利用いただけます。)

コンテナイメージの追加と脆弱性の深刻度別件数の確認に向けて、Red Hat Quayが選択されたSnykプロジェクトダッシュボード。
Snykでの脆弱性スキャンに向けて、Red Hat Quayからコンテナイメージを追加します。

Quayとの接続を設定してイメージを追加すると、Snyk Containerがベースイメージのアップグレードを提案します。コンテナのビルド方法をすばやく最適化できるほか、優先順位付けや依存関係分析の機能も備えているため、イメージ内の特に問題の大きい脆弱性に集中して対処できます。それぞれの機能を見ていきましょう。

SnykとQuayで脆弱性を減らす

Snykを使うと、代替のベースイメージを特定して選択し、コンテナイメージの脆弱性を全体的に減らせます。特に人気のある公式Dockerイメージには、多くの場合、複数のベースイメージの選択肢があります。Snyk Containerは現在使用しているベースイメージを特定し、脆弱性の少ないアップグレードを提案します。

以下は、node:14.1をベースにビルドされたコンテナイメージに対する、ベースイメージの推奨例です。

Node.jsベースイメージのアップグレードと脆弱性の削減に関する推奨事項を示す、Quayコンテナイメージの概要。
Quayでホストされているイメージのコンテナアップグレードに関する推奨事項。

Snyk Containerは、プロジェクトに応じて利用可能なさまざまな推奨事項を提示し、脆弱性の修正方法を柔軟に選べるようにします。

  • マイナーアップグレード - 小規模なアップグレードはより速く簡単に適用でき、ビルドを壊す可能性も低いという考え方に基づく提案です。フレームワーク(この例ではnode)とOSディストリビューションのメジャーバージョンを維持したままアップグレードできます

  • メジャーアップグレード - フレームワークまたはOSディストリビューションの新しいメジャーバージョンへの移行が必要です

  • 代替アップグレード - 別のイメージを代わりに使用する選択肢を提示しますが、フレームワークとディストリビューションの両方が変わる可能性があります。上の例のように脆弱性の数を大幅に減らせる場合がある一方、コードへの影響がないことを確認するため、追加のテストや検討が必要になることもあります。

コンテナの脆弱性修正に優先順位を付ける

ベースイメージを最適化した後も、Snyk Containerを使ってコンテナイメージに脆弱性が持ち込まれる箇所を特定し、修正に取り組む問題の優先順位を付けられます。DockerfileをSnykに追加すると、脆弱性と、それをコンテナに持ち込む命令を照合できます。また、Snykは依存関係の情報を網羅しているため、脆弱性の原因まで簡単にたどれます。コンテナでは脆弱性の数の多さに圧倒されがちですが、Snykを使えば、特に重要またはリスクの高い問題に集中できます。

たとえば下の画像では、同じ基本的な問題一覧を表示する方法が2つあります。ここでは「修正可能で、深刻度が高く、何らかの形で既にエクスプロイトが存在する脆弱性をすべて表示する」方法を見てみましょう。左側の画面では、Snykのフィルターで条件を選択しています。右側の画面では、Snykに組み込まれた優先度スコアによって、同じ問題が一覧の先頭に表示されています。これらの要因はいずれも、脆弱性の潜在的なリスクを高めるためです。

Snykの問題一覧を並べて表示。深刻度、優先度スコア、修正可能性、悪用の成熟度によるフィルターと、優先度スコア順に並べられた問題を確認できます。
フィルター(左)と優先度スコア(右)を使って課題に優先順位を付ける。

利用を開始する

Quayとの連携は、すべてのSnykプランでご利用いただけます。連携方法は2種類あります。

  • Snyk.ioのSnyk Containerサービスと直接連携する[すべてのSnykプランで利用可能]

  • Snykのサービスに直接接続したくないセルフホスト型レジストリをオンプレミスでスキャンする[ProプランとEnterpriseプランでのみ利用可能]

Snyk.ioと直接連携する場合は、簡単に利用を開始できます。必要なのは適切な認証情報(少なくとも読み取りアクセス権限)だけで、数分もあればスキャンを始められます。

Quayをプライベートネットワークでセルフホストしている場合は、Snyk Brokerをインストールし、アカウントでこの機能が有効になっていることを確認してください。Snyk Brokerをまだ利用したことがない場合は、Snykのカスタマーサクセスチームが利用開始をサポートします。

開発者が作業の流れの中で簡単に問題を修正できるよう、Red Hatとの取り組みを続けています。利用開始に役立つ資料をいくつかご紹介します。

安全な開発を!

開発者ファーストのコンテナセキュリティ

Snykは、コンテナイメージとKubernetesワークロードの脆弱性を検出し、自動的に修正します。