DevOpsからDevSecOpsにステップアップするには?
まずはDevOpsやDevSecOpsについて確認しよう。もともとDevOpsとは、ソフトウェア開発ライフサイクルを短いサイクルで回し続けることで、開発のスピードを高めることを目的とする。しかしDevOpsにセキュリティを後付けしようとすると、オーバーヘッドが生じてしまい開発がスローダウンしてしまう。あるいはセキュリティが疎かになってしまう。開発スピードとセキュリティがトレードオフになってしまうのだ。そこでDevSecOps。開発ライフサイクル全体でセキュリティを組み込み、開発スピードとセキュリティの両立を目指す。
ではDevOpsからDevSecOpsに移行するにはどうしたらいいか。相澤氏はポイントを3つ挙げた。1点目はシフトレフト。下流(時間軸では右側)で取り組んでいたセキュリティの工程を全体で取り組むようにする。しかしそれでは先述したようにオーバーヘッドが生じてしまう。そこで2点目はSCA(ソフトウェア コンポジション解析)ツールなどを活用して自動化すること。さらに3点目はガバナンス。異なるチームが同じ目標へコラボレーションしていくのだから、セキュリティの基準を決めて守り、守られていなければ何らかの手を打つようにする。ここはシステム化で確実に実行することが重要になる。
ここで相澤氏は「DevSecOpsでセキュリティを担うのは誰か」と問いかけた。「全員」も正解だ。しかし誰が主役と思われているか。2020年にSnykが実施したアンケートによると、ソフトウェアに関しては開発者が85%となった。
人口も念頭に置いておきたい。世界全体で開発者は2700万人もいるのに対して、セキュリティ担当者(専門家)は400万人と言われている。相澤氏は「セキュリティの専門家に頼っていてはスケールできません。開発者がやらなかったら誰がやるのでしょうか」と呼びかける。
もう1つ、過去10~15年の変遷を振り返ってみよう。クラウドが浸透する前は、運用担当者がデータセンターでネットワークやサーバーを設定し、OSやミドルウェアをインストールして、ようやくアプリケーションをデプロイできた。ところが今はクラウドなので、OSをインストールしているのは実質的には開発者となる。なぜなら開発者がDockerfileで「FROM debian・・」などと書けばOSのインストールが終了したことになるからだ。かつてIT/Opが担っていた部分を開発者が行っているのだ。今では脆弱性の修正も開発者がコードを通じて行っている。
「DevOpsからDevSecOpsに移行するための重要なポイントはシフトレフトすること。そこでは自動化は欠かせません。そして共通の指標やガバナンスを持つことが非常に重要となります。そこでの主役は開発者の皆さんです」(相澤氏)
Snykを脆弱性の発見と修正をどのように行うか
これまで述べてきたことをSnykを使うとどうなるかを見ていこう。もともとSnykは「開発者がセキュリティにおいて重要な役割を担えるべきだ」という信念から創業した企業だ。単に開発者用のツールを提供しているだけではなく、開発者ファーストの目線で開発者が使うツールを提供しているスタンスに特徴がある。
クラウド時代のアプリケーションは下図のように表すことができる。最上位にアプリケーションコードがあり、そこから参照されるオープンソースライブラリーがある。今ではコンテナとしてパッケージ化されてデプロイされており、デプロイはIaC(Infrastructure as Code)で実行される。
これら4つの領域に対して、SnykはSnyk Code、Snyk Open Source、Snyk Container、Snyk IaCとして開発者向けセキュリティプラットフォームを提供している。共通しているのは開発者の体験を重視しており、開発者にアプリケーションの知見とセキュリティの知見を提供していると言える。
Snykならではの特徴は3つある。1点目は開発者へのエンパワーメント。言い換えると開発者を強力にサポートするということ。開発者はSnykを使うために従来のワークフローを変えることなく、親しみやすいツールでセキュアな開発ができる。2点目は自動修正機能。脆弱性を発見するツールは多くあるものの、Snykは発見だけではなく修正も可能であり、修正を自動適用することも可能だ。3点目はセキュリティの知見(脆弱性データベース)。脆弱性を修正するなら脆弱性情報が欠かせない。Snykはセキュリティ研究チームやAIに多額の投資をするほど力を入れている。
Snykの脆弱性データベースは脆弱性情報を大規模に収録してあり、正確かつ最新、修正に必要な情報も含まれている。相澤氏は「脆弱性データベースの親玉にあたるCVEは研究者や専門家向けで、どう修正するのかを知りたい開発者にとって親切ではありません。一方Snykは膨大な情報量、更新頻度の高さゆえに、Google、AWS、IBM、トレンドマイクロなどにご利用いただいています」と説明する。