セキュリティテストを開発時に行いCI/CD連携を加速するDevSecOps
吉井氏は、「DevOpsとセキュリティの間には、越えられないギャップが存在している」と指摘する。アプリケーション開発のテストは、大きく開発段階の「静的解析」とデプロイ以降の「動的解析」の2つのフェーズに分けられる。静的解析では主にコードを見る「SAST(静的アプリケーションセキュリティテスト)」や「SCA(ソフトウェア・コンポジション解析)」が行われ、動的解析では「DAST(動的アプリケーションセキュリティテスト)」や「Pen-test(侵入テスト)」などが実施される。
テストの中でも特に重要な「脆弱性の発見」などは、実際にアプリケーションを実行してみないと難しいため、DASTの段階で行われる。しかし運用開始後に出てきたセキュリティ課題は、開発者が単独で修正を判断できるものでもなく、また現場で見つかった課題をそのまま開発者にフィードバックしてしまうのも難しい。
「アプリケーションのライフサイクルが前後に分断されてしまうので、CI/CD(継続的インテグレーション/継続的デリバリー)連携が行えず、せっかくのDevOpsのサイクルが円滑に回りません。特にセキュリティの課題は、スペシャリストが見てトリアージするので、仮にテスト結果をすぐに開発側に戻せたとしても、専門知識を持たない開発者は独断では動けません」(吉井氏)
そこで最近急速に浮上してきたのが、「DevSecOps」の考え方だ。これまでは「アプリケーションの完成後にセキュリティテストを実施」という流れが、CI/CDのライフサイクルを妨げてきた。それならば、セキュリティテストを開発プロセスのより早い段階にシフトし、問題をすべて解決してからデプロイ~運用に入ればよい、といった発想の転換である。
インタラクティブテストツール「Seeker」がDevSecOps実現の障壁をクリア
DevSecOpsの発想そのものは画期的だが、実現には多くのハードルがあるのも事実だ。もっとも大きな阻害要因として、吉井氏は以下の3つの課題を挙げる。
(1)テスト結果に誤検知が多くトリアージに時間を要する
DevOpsではセキュリティの専門家がテスト結果を見て、問題点を開発者にフィードバックするケースがほとんどだ。しかし既存のツールは誤検知が非常に多く、正しい結果を確定するまでに時間がかかってしまう。
(2)セキュリティテスト用の環境を用意するのが困難
開発者がセキュリティテストを行うためには、別に専用の環境を用意しなくてはならず、開発プロセスの変更やコストの増加が避けられない。
(3)セキュリティテストの結果を見ても問題点がわからない
セキュリティ課題は専門家でないと詳細がわからず、開発者自身がDASTの結果を見ても、なかなか問題を発見できない。
では、これらの課題をどう解決すればよいのか。吉井氏は、(1)正確性:誤検知が極めて少ないこと、(2)連携:別環境を設けずに、通常の機能テストのバックグラウンドで同時にセキュリティテストを実行できること、(3)対応可能:開発者が指摘された課題を自分で理解・対応できることの3つが重要なポイントだと指摘。それを可能にするのが、日本シノプシスの提供するIAST(インタラクティブアプリケーションセキュリティテスト)ツールである「Seeker」だと紹介する。
「IASTとは従来のSASTとDASTのギャップを埋める考え方で、Seekerは両者の間をつなぎ、CI/CD連携を可能にします。このツールを利用することで、開発フローの変更や工数を増やすことなく、誰でも容易にDevSecOpsを実現できる点が、開発者にとって最大のメリットです」(吉井氏)