Snyk ContainerのレジストリセキュリティインテグレーションをGitHub、GitLab、Nexus、DigitalOceanなどに拡大
Danielle Inbar
2021年9月23日
0 分で読めますSnyk Containerで、より多くのコンテナレジストリに保存されたコンテナイメージをスキャンできるようになりました。新たに追加されたのは、GitHub Container Registry、Nexus、DigitalOcean、GitLab Container Registry、およびGoogle Artifact Registryです。最近追加されたHarborとQuayに加え、従来からサポートしているDocker Hub(Docker Hub内で唯一のファーストパーティインテグレーションも提供)、Amazon Elastic Container Registry(ECR)、Microsoft Azure Container Registry(ACR)、JFrog Artifactory、Google Cloud Registry(GCR。Googleが以前提供していたレジストリサービス)も利用できます。
Snyk Containerはコンテナイメージの脆弱性を検出・修正します。さらに、イメージが保存されている幅広いソースからコンテナプロジェクトをインポートし、脆弱性を監視できるようになりました。

Snykは、コンテナレジストリからインポートしたプロジェクトに既知のセキュリティ脆弱性がないか監視します。再テストの頻度は自由に設定でき、スキャン済みのイメージに影響する新たな脆弱性が公開された場合も検出できます。Harborを除くすべてのコンテナレジストリとのインテグレーションは、無料のSnykアカウントを含む各種プランで利用できます。(注:プライベートコンテナレジストリを利用していて、独自の環境内でイメージをスキャンする必要がある場合は、Snyk Brokerが必要です。Snyk Brokerは有料プランでのみご利用いただけます。)

GitLab Container Registry、GitHub Container Registry、Harbor、Nexusに保存されたイメージのSnyk Containerスキャン結果。
コンテナレジストリのイメージスキャンで脆弱性を削減
Snyk Containerはコンテナイメージ内の脆弱なパッケージをすべて特定します。問題をより効率的に修正できるよう、コンテナのベースとなる親イメージも特定し、コンテナイメージ全体の脆弱性を減らすための代替ベースイメージを提案します。この機能は、新たに追加されたすべてのコンテナレジストリインテグレーションでも利用できます。Snyk Containerは現在使用中のベースイメージを判定し、脆弱性の少ないバージョンへのアップグレードを推奨します。
以下は、ruby:2.7.0をベース(DockerfileのFROM行)に使用したイメージのSnyk Containerスキャン結果です。SnykはRubyの親イメージを自動的に検出し、そのイメージに含まれる脆弱性を表示したうえで、脆弱性の数を減らせる新しいRubyイメージや別のRubyイメージを推奨します。これにより、開発者が551件もの脆弱性を一つずつ調べたり、重大度がCriticalまたはHighの157件を確認したりする必要はありません。代替イメージを選び、互換性をテストするだけで、Dockerfileを一度変更するだけで脆弱性を最大88%削減できます。

Snyk Containerは、プロジェクトに応じて複数の推奨事項を提示し、脆弱性の修正方法を選べるようにします。
マイナーアップグレード – 小規模なアップグレードは手早く簡単に適用でき、ビルドを壊す可能性も低いという考えに基づく推奨です。フレームワーク(この例ではNode.js)とOSディストリビューションのメジャーバージョンを維持したままアップグレードできます。
メジャーアップグレード – フレームワークまたはOSディストリビューションの新しいメジャーバージョンへの移行が必要です。
代替アップグレード – 別のイメージを使うための代替案を提示します。フレームワークとディストリビューションの両方が変わる可能性があります。上の例のように、脆弱性を大幅に減らせる一方で、コードに影響がないことを確認するために、より多くのテストや検討が必要になることもあります。
コンテナの脆弱性修正に向けた優先順位付け
使用しているコンテナレジストリにかかわらず、ベースイメージを最適化した後は、Snyk Containerを使って修正に取り組む問題の優先順位を付けられます。Snykでは、次のような観点から分析できます。
コンテナがKubernetesクラスター上で実行されている場合、実行中のコンテナをスキャンして監視できます。また、ワークロード設定の詳細を活用して、安全でない設定が原因で特にリスクが高い脆弱性に優先順位を付けることもできます。さらに、Snyk Infrastructure as Code(Snyk IaC)を使って、こうした安全でない設定を発生源で検出・修正できます。
Dockerfileのコンテキストを利用すると、脆弱性をコンテナに持ち込んだ命令と照合できます。
Snykは依存関係の詳細情報を提供し、脆弱性の原因となったパッケージを簡単に追跡できるようにします。
悪用の成熟度、ソーシャルメディアでの話題性、悪意のあるパッケージの有無をわかりやすく表示し、標準的な重大度やCVSSスコアとあわせて優先順位付けに活用できます。
Snykは、一般的なNVDデータベースの情報を補完するLinuxディストリビューションのメンテナーによる詳細情報を提供します。
たとえば、以下の画像では、Snykに組み込まれた優先度スコアで問題の重要度を示しながら、リスク要因も確認できます。また、必要な脆弱性だけを表示するためのフィルターもいくつか利用できます。

Snyk Containerを使い始める
新たに追加されたコンテナレジストリインテグレーションは、すべてSnyk Containerでご利用いただけます。Snyk Brokerによる接続が必要なプライベートホスト型レジストリを除き、ほとんどのインテグレーションは無料プランを含むすべてのSnykプランで利用できます。API経由、またはSnyk組織内のインテグレーションページから設定すれば、コンテナイメージの脆弱性を検出・修正する準備が整います。
開発者ファーストのコンテナセキュリティ
Snykは、コンテナイメージとKubernetesワークロードの脆弱性を検出し、自動的に修正します。


