DevSecOpsを実現するための新たな仕組み:ASOC
マイクロサービスなどコンテナ化されたシステムについてはどうだろうか。
NIST SP800-190の「アプリケーションコンテナに関するセキュリティガイド」には、コンテナをセキュアに開発、運用するための論点がいくつかまとめられている。その中でソフトウェア開発について、コンテナに合ったセキュアな開発プロセスを用意することと、コンテナそのものの脆弱性を管理する必要があるとしている。
「コンテナでは、GitHubなどで公開されているイメージを利用するケースも多いが、これらに悪意のあるファイルが意図的に、または不注意で含まれていることがある」。そう述べる松岡氏は、InfoQが2021年に公開した調査レポートを取り上げ、400万近くのイメージを分析した結果、51%以上のイメージに悪用可能な脆弱性が見つかったほか、6432イメージにマルウェアが発見されたことに言及。2020年10月にDocker Hubが公開した脆弱性スキャン(有料オプション)などを活用して、コンテナ向けのセキュアな開発運用を心がけることが重要だ。
といっても、コンテナ開発のSDLCのフェーズがMicrosoft SDLのそれとやや異なるくらいで、組み込まれるセキュリティ施策は前述のものと変わりはない。たとえば、イメージをビルドする前にSAST/SCAなどのテストを実行。イメージビルド後には、IAST/DAST、ファジング、脆弱性スキャンを実行する。運用時は、IAST/DASTやファジング、ペンテストを実行するなどだ。Dockerではコンテナアプリケーション開発のベストプラクティスを公開しているので、そちらも合わせて参照してほしいと松岡氏は紹介する。
セキュリティテストを開発フェーズに組み込む際に課題となるスピードについては、ASOC(Application Security Orchestration and Correlation)で解決できると松岡氏は言う。ASOCは、ガートナーが提言する新しい仕組みで、セキュリティテストにオーケストレーションと相関付けを組み合わせてDevSecOpsの効率を向上させるというものだ。シノプシスでは、セキュリティテスト、オーケストレーション、相関付けでそれぞれ製品/ソリューションを提供している。
オーケストレーション製品「Intelligent Orchestration」は、DevOpsと協調したポリシー、アプリケーションのリスクプロファイル、コードの変更、SDLCイベントなどに基づき、適切なタイミングで最適なテストの組み合わせを自動実行するソリューションだ。IDEやパッケージマネージャ、CI、ワークフローなど、開発で利用する各種ツール群と連携するほか、マニュアルのコードレビューやペネトレーションテスト、脅威モデリングによるリスク分析などの結果も取り込み、セキュリティレポートツールに出力したり、SlackやTeamsなど各種コミュニケーションツールへリアルタイムにフィードバックしたりすることも可能だ。通常の開発パイプラインとは分離した形で構成するため、簡単に既存環境に組み込めるのが特長の1つだ。
一方の相関分析では、統合管理ダッシュボード「Code Dx」を提供する。Code Dxは、全テスト結果をもとに組織全体のセキュリティ状況やリスクの相関関係を整理し、網羅的に可視化。優先対応すべきリスクを提示し、対応の効率を上げる。
「ソフトウェア/アプリケーション/サービスの開発に求められるセキュリティテストは、マイクロサービスなどのコンテナ技術へ移行しても大きく変わらない。各種ガイドラインやベストプラクティスを参考に、それぞれの開発フェーズにセキュリティテストを組み込み、ASOCの考え方を取り入れたDevSecOpsを目指す。そして何よりも、セキュリティはビジネス課題であるという意識を組織全体で共有し、ソフトウェア品質の向上とビジネスリスクの軽減に取り組むこと。これがこれからますます重要になるだろう」(松岡氏)
日本シノプシスのブログには、開発に関わるガイドラインの解説やDevSecOpsの考え方などの記事を発信している。セキュア開発の一助になれば幸いと松岡氏は述べた。