Skip to main content

Snyk Container 2021年の振り返り:コンテナセキュリティをさらに開発の早期段階へ

blog feature snyk container party

2021年12月22日

0 分で読めます

コンテナやKubernetesの利用は、どのような指標で見ても増加し続けています。また、最近大きく報道された名前を口にするのもはばかられる脆弱性によって、アプリケーションセキュリティプログラム全体においてコンテナセキュリティがいかに重要かが明らかになりました。自社コードや依存関係、そして利用するコンテナ化サービスを保護することは、すべて欠かせません。

コンテナの急速な普及が続いている兆しは、至るところで見られます。2021年、Snykのお客様はコンテナテストを1億3,000万回以上実施しました。これは2020年の10倍です。DatadogとSysdigは、それぞれ10億を大きく超えるコンテナを監視していると報告しています。また、Gartnerの予測によると、2022年には世界の組織の75%超が本番環境でコンテナ化アプリケーションを実行する見込みです。わずか昨年の30%未満から大きく増加しています。

2021年も終わりに近づくなか、Snyk各製品に追加された新機能を振り返ります。この記事ではSnyk Containerに焦点を当てます。

2021年、Snyk Containerの利用が急増

前述のとおり、2021年にはSnyk Containerで1億3,000万回以上のコンテナテストが実施されました。しかし、コンテナをテストすること自体がSnyk Containerの最終目標ではありません。目指すのはコンテナの問題を修正することです。Snyk Containerでは、次のような成果がありました。

  • 2021年、Snyk Containerユーザーが5,600万件の脆弱性を修正しました。

  • これは、200万を超えるイメージに対して1億3,300万回以上のコンテナスキャンを実施し、1億1,100万件を超える固有のコンテナ脆弱性を検出した結果です。

    * 脆弱性の数がテスト数より少ないのは、同じイメージに対するテストを繰り返しても、検出された脆弱性は1回だけカウントされるためです。

パイプラインやレジストリ内のイメージをスキャンするだけではありません。Snyk Containerは、47,000件のKubernetesプロジェクトと、Dockerfileを含む352,000件のGitリポジトリも監視しました。

Snyk Containerの開発者向け機能強化

2021年、Snyk Containerには、開発者のワークフローに適合する複数の機能が追加されました。コンテナの問題を簡単に検出して修正できるようにすることが目標です。誰でも迷わず使えるほどシンプルにすることで、問題を修正しないという選択が難しくなることを目指しています。

特に重要な新機能の一つは、ソースコードリポジトリ内のDockerfileをスキャンし、検出された問題を修正するプルリクエストを作成する機能です。これはコンテナセキュリティ製品として初めての取り組みです。アプリケーションに適した安全なベースイメージを選ぶことは、比較的少ない労力でコンテナの脆弱性を最大90%削減できる方法です。

脆弱性の件数と深刻度別にRubyイメージのアップグレードを比較し、修正プルリクエストを作成するオプションを示したSnyk Containerのベースイメージ推奨
Snyk ContainerはDockerfileをスキャンし、ベースイメージの推奨と修正PRを提供します。

ベースとなる親イメージの選択が非常に重要なため、コンテナライフサイクルのどの段階でスキャンするかにかかわらず、できるだけ多くのユーザーがSnykのベースイメージに関するガイダンスを受け取れるようにしたいと考えました。そのため、コンテナ内の親イメージの検出方法を変更しました。12月を迎える時点で、テスト対象となったコンテナの80%超にベースイメージのガイダンスが提供されています。1月の約25%から大幅に増加しました。

「親イメージの推奨」というタイトルの折れ線グラフ。割合が12月の25%から、翌年12月には約81%に上昇しています。
親イメージの自動アップグレードに関するアドバイスが提供されるコンテナプロジェクトの割合。

興味深いことに、Snyk Containerのベースイメージ判定ロジックはDockerの公式イメージを基盤としています。そのため、親イメージのガイダンス提供率の高さは、コンテナの世界におけるDockerの根強い人気と重要性をはっきりと示しています。

また、SnykConではSnyk ContainerのIDEサポートの開発中機能を紹介しました。Dockerとのパートナーシップを継続していることとあわせて、コンテナセキュリティをさらに開発の早期段階へ移行していく今後の展開を期待させるものです。

コンテナのワークフローとエコシステムを改善

2021年は、問題の修正を複雑にする、コンテナベースのワークフローにおける厄介な課題の解決にも取り組みました。また、拡大を続けるエコシステムで広く使われているコンテナツールへの対応も強化しました。

コンテナのワークフローで悩ましい問題の一つは、Dockerfileと、そこから作成されたイメージを関連付けて管理し続けることです。コンテナイメージには、作成に使われたDockerfileを追跡する仕組みが標準で備わっていません。そのため、特定のコンテナの担当者や、問題の修正時に編集すべきDockerfileを特定するのが難しくなることがあります。Snyk Containerではこの作業を簡単にするため、2つの成果物を関連付けられるOCI標準のコンテナラベルに対応しました。これらのOCIラベルを使うと、Snykでテストしたコンテナイメージのうち、特定のDockerfileからビルドされたものを自動で表示できます。コンテナテスト同士を関連付けるだけでなく、変更を加えるDockerfileにすぐアクセスできます。

標準規格への対応についてもう一つご紹介します。オープンポリシー標準を使用して、SnykがKubernetesクラスター内で監視する対象を指定できるようになりました。Open Policy Agent(OPA)は、クラウドネイティブ環境で広く使われているポリシーベースのコントロールプレーンです。KubernetesモニターでOPAを活用することで、自動的に監視するワークロードを選択できます。また、ワークロードがクラスター内で稼働しなくなった場合に、削除するかどうか、いつ削除するかも指定できます。

さらに、コンテナエコシステムで広く使われているツールとの新しいインテグレーションを追加しました。

コンテナのノイズを減らし、セキュリティ情報を拡充

一見すると、セキュリティ情報を増やしながら、コンテナの脆弱性に関するノイズを減らすのは矛盾しているように思えるかもしれません。しかし2021年、Snyk Containerでそれを実現しました。

コンテナに関するセキュリティアラートのノイズを減らし、修正すべき重要な脆弱性を優先できるよう、脆弱性情報にソーシャルトレンドデータを追加しました。ソーシャルメディア上の話題の増加は、脆弱性をめぐって悪意ある動きがある可能性を示すシグナルとなり、優先順位付けに大きく役立ちます。

また、Snykプラットフォームのセキュリティポリシー機能も強化し、組織全体で脆弱性への対応の優先度を一括して調整する新たな方法を提供しました。たとえば、本番環境で稼働するアプリについて、メモリ関連の脆弱性の優先度を上げたい場合があります。Snykのセキュリティポリシーインターフェースでは、次のようなポリシーを設定できます。

  • Production属性またはタグが付いたアプリで…

  • CWE 125(範囲外読み取り)またはCWE 787(範囲外書き込み)を悪用する脆弱性がある場合…

  • 重大度をCriticalに引き上げる

メモリの問題がある重要なフロントエンドプロジェクト向けのSnykセキュリティポリシーフォーム。CWE-125およびCWE-787に重大度「重大」を適用。
メモリ関連の脆弱性を抱えるクリティカルなフロントエンドプロジェクトの重要度を引き上げるSnykセキュリティポリシー。

コンテナセキュリティ情報をさらに充実させる取り組みとして、Alpine、Debian、Ubuntu、新しいCentOS Streamなど、コンテナで使われている主要なLinuxディストリビューションの最新版に、メンテナーのリリース後速やかに対応しました。また、Red Hat Enterprise Linux、Amazon Linux、CentOS Streamの脆弱性レポートの方法を変更し、各CVEの詳細をより細かく提示できるようにしました。重大度についても、ディストリビューション固有の詳細を追加しています。

2022年のSnyk Containerに期待できること

Danielがブログ記事「Snyk Open Sourceの2021年を振り返る」で述べたように、セキュアなサプライチェーンの重要性と注目度は高まっており、コンテナはその大きな要素です。独自のビルドプロセスで作成したコンテナに含まれるすべてのコンポーネントを把握することは、ますます重要になっています。また、利用するサードパーティ製のコンテナパッケージアプリに何が含まれているかを知ることも重要です。データベース、ログ記録ツール、検索ツール、ロードバランサー、ゲートウェイなどのコンテナは、多くの場合、アプリケーションと並行してデプロイされ、重要な機能を提供します。しかし、危険な脆弱性が潜んでいる可能性もあります。脆弱性を把握し、メンテナーが新バージョンを公開したらすぐに導入できるようにする必要があります。

脆弱性の優先順位付けについても、さらに取り組むべきことがあります。特定のパッケージや脆弱性がより危険であることを示す新たなシグナルに加え、開発者が本当に関係のある脆弱性に集中できるよう、ノイズの多い脆弱性を除外するためのインテリジェンスと、大規模に適用できるポリシーも必要です。この2つを組み合わせることで、Snyk Containerユーザーがスキャンで検出された何百もの脆弱性を、最も緊急性の高いものを修正するためのわずかな手順に絞り込めるよう支援できると考えています。過重な負担を抱えるセキュリティチームから、脆弱性管理の手作業を減らすことにもつながります。

2022年が皆さまにとって、幸せで安全な一年になりますように!

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

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