現在の開発プロセスでは、ビジネス側からの変更要求への迅速な対応が求められており、それがDevOpsやアジャイルといった開発スタイルの広がりの背景にある。だがユービーセキュアの最首壮一氏(ソフトウェア事業部 事業部長)によると、「一方で課題もある。開発スピードと、セキュリティ診断のスピードが合わないことだ」という。
その解決策として注目を集めるキーワードが、DevOpsにセキュリティプロセスを組み入れ、開発のスピードや効率と、セキュリティ対策の両立を目指す「DevSecOps」だ。ポイントは、ツールを用い、自動化できるところはなるべく自動化して前倒しで問題を検出し、修正のコストを下げるところにある。
既に幾つか、セキュリティ診断を自動化するツールが提供されており、それらは大きく「SAST」(Static Application Security Testing:静的セキュリティ診断ツール)と「DAST」(Dynamic Application Security Testing:動的セキュリティ診断ツール)に大別できる。
SASTは導入準備が容易で検査時間も短くてすむが、過検知が多い傾向にある。一方DASTは比較的正確な診断結果が得られるが、環境構築にも、またテスト自体にも時間がかかる。最近ではさらに、ミドルウェアなど、ソフトウェアに含まれるサードパーティーのコンポーネントの脆弱(ぜいじゃく)性を解析する「SCA」(Software Composition Analysis)を組み合わせるケースも増えてきた。
これら複数の診断ツールを統合する新たな概念が、「ASTO」(Application Security Testing Orchestration)だ。SASTとDAST、SCA、それぞれのテスト結果を集約し、必要に応じて設定変更などをセキュリティ製品に通知する仕組みで、最首氏はこれを「DevSecOpsを具現化するためのツール」と表現する。そして、ASTOの一部を実現するプロセス管理ツールが、「AVC」(Application Vulnerability Correlation)だ。
「AVCを使うと、診断ツールの結果を取り込んでリスクを相関分析し、トリアージした上で、開発者側にフィードバックしたり、WAFなどのセキュリティ製品に反映したりすることができる。SASTをIDEに、DASTをCI/CDに組み込んで自動化し、それらの結果をAVCでまとめ、開発者に修正依頼を出すことでDevSecOpsを実現実現する。これによって短い時間で安全性の高いアプリケーションを開発できる。このゴールを目指し、DASTツール『VEX』では、JenkinsなどのCIツールとの連携を実現した」(最首氏)
先日、米国に訪問し「どんな開発スタイルが主流になっているか」について生の声を聞いてきたばかりという日本シノプシスの佐藤大樹氏(ソフトウェア・インテグリティ・グループ シニアセールスエンジニア)によると、「アジャイル」という言葉が強調される日本に対し、米国ではあえて言及するほどもないぐらいアジャイルが「当たり前」になっているそうだ。
こうしたトレンドを踏まえ、国内でもアジャイルに取り組み始める企業が増えてきた。ただ、PMI日本支部がまとめた「2016年度 アジャイルプロジェクトマネジメント意識調査報告書」によると、「一度はアジャイルを導入したものの、やめた」とする回答は11%ある。理由の1つは、ウオーターフォール型の請負開発と親和性がないこと。加えて、「思ったより品質が上がらないから」という声もあったという。
佐藤氏はこの調査結果を踏まえ、「アジャイルであろうとなかろうと、『品質をいかにして向上させるか』がポイントになる」と指摘した。
品質向上の鍵を握るのがCI/CDであり、DevOpsというスタイルだ。「毎日ビルドし、テストしてからリリースする」パイプラインを作り、ツールを組み合わせて自動化することで、品質の維持・確保を実現していく。
「米国では、特に、ユーザーインタフェースのテストを行う『Selenium』やセキュリティのペネトレーションテストを行うツールを活用し、全テストを自動で流すスタイルが珍しくない。また、セキュリティテストを最後に1回やって終わりというやり方はレガシーになりつつある。要件定義の段階からセキュリティを意識し、開発フェーズの中にセキュリティを入れ込む『セキュアプログアミング』という考え方が主流で、それを支えるのがCI/CDだ」(佐藤氏)
ただ現実には、どうしても手戻りのコストが発生したり、エビデンスに基づく品質保証が求められたりする。これに対し日本シノプシスでは、静的コード解析による品質の可視化を提案している。それを実現するツールが「Coverity」だ。
「オープンソースソフトウェア(OSS)の静的コード解析ツールもあるが、フルパス解析やプロシージャ間解析といった機能を備えて重要な不具合を検出し、桁違いの正確性を実現する」(佐藤氏)
Coverityには、多くの言語をサポートしている、GitやJenkins、Eclipseといった開発支援ツールとシームレスに統合できるといった特徴もある。
「脆弱性対応のコストは、QA段階でも10倍、市場に出た後に不具合が発覚すると30倍という具合に、後の段階になればなるほど高くつく。『シフトレフト』という考え方に基づいて、できるだけ早い段階で品質を可視化し、不具合を直す、それが一番安くすむ。Coverityによる静的コード解析を組み合わせたワークフローを組むことによって、不具合を早期に検出、修正でき、ひいてはアジャイル要素を組み込んだ開発を実現。自動化の恩恵を受けられる」(佐藤氏)
日本シノプシスでは他にも、複数のQA/セキュリティ製品やサービス群を提供している。佐藤氏は最後に「品質もセキュリティも、何か1つのツールだけで担保できるものではない。困ったことがあれば、ぜひ相談してほしい」と呼び掛けた。
今や、ほとんどの企業がOSSを利用していると言っていいだろう。実際、ガートナーの調査でも、グローバル企業トップ2000の全てにおいて、クリティカルなシステムでOSSが活用されている。
なぜOSSは、ここまで広く使われているのだろうか。ブラック・ダック・ソフトウェアの梶原史雄氏(シニアセールスエンジニア)が紹介した同社の調査によると、OSS活用の理由として、「コストの安さ」だけではなく、「自由に変更でき、改変速度が早く先進的な機能を取り入れられること」「優秀な開発者を集めやすいこと」が挙げられている。
「OSSを使うと、短い期間でリリースでき、しかもソフトウェア品質の改善が見られるというメリットが得られるが、良いことばかりではない。良いこともあれば悪いこともあり、そのリスク管理が必要だ。具体的にはセキュリティ、ライセンス、そして運用・サポートという3つのリスクが存在する」(梶原氏)
例えばセキュリティに関して言うと、2016年だけでさまざまなOSSから3623件もの脆弱性が見つかっており、その数は今後もさらに増加すると見込まれる。既知の脆弱性ならば「セキュリティ製品の導入で対応できる」と考える人も多いが、肝心なのはアプリケーション層での対応だ。だが、例えば2014年に指摘された「Heartbleed」「Poodle」といった脆弱性への対応を2016年以降に行った企業もあり、いまだに未対応のサイトもあると推測される。製品を導入しても、脆弱性修正までの間に攻撃を受けるリスクはゼロではない。
2つ目のライセンスに関しては、最近でこそ理解が広がり、目出つ訴訟は減ったものの、再配布を義務付けているライセンスは150種類以上あり、不用意に組み込むと著作権違反に問われる恐れもある。
そしてサポートについては、「ものによっては放ったらかしで、脆弱性が見つかっても誰も更新しないリスクがあることを念頭に置かなくてはならない」と梶原氏は指摘した。
こうしたリスクを管理するには、OSSの利用状況を可視化し、把握することが重要だ。リストを作成して管理している企業もあるが、どうしても抜け、漏れ、更新忘れなどが発生する。1つのソフトウェアに小さなOSSが多数含まれ、知らないうちにOSSが導入されていることもあり、人が管理するには限界がある。
ブラック・ダック・ソフトウェアでは、こうした問題の解決を「Black Duck Hub」というツールを通じて支援している。ビルドやテスト、最終試験、デプロイといった開発の各プロセスのタイミングで自動的にスキャンを行い、どんなOSSが含まれ、どんなリスクがあるかを可視化し、効果的に把握できるようにするもので、IDEやJenkinsなどのCI/CDツール、パブリッククラウドやオーケストレーションツールと連携できることも特徴だという。
デジタルトランスフォーメーションの鍵を握るのは「ソフトウェア」だ。マクニカネットワークスの根本竜也氏(営業統括部 アプリケーション営業部 第4課 課長)は、「ITやゲーム、Webサービスに限らず、モノ作りや金融、流通など、あらゆるところでソフトウェア開発の重要性が高まっている。そこでは、いかに開発力を高め、新しいスタイルを取り入れていくかがポイントになる」と述べた。
開発力の向上を実現するには、市場の要求に迅速に応える「Time to Market」はもちろん、速さと品質、ニーズに対応できる柔軟性といった要素が不可欠だ。さらに、開発者が開発作業のみに集中できる環境作りも重要になる。これを実現するには、「多種多様な開発支援ツールを使いこなすことだ」と根本氏は言う。
根本氏が紹介した開発支援ツールの1つ目は、おなじみの人も多い「GitHub」だ。チームで開発を進める際に、開発スピードを保ちながら情報共有し、品質を担保するために必要なコラボレーション環境を提供し、知識の共有化と透明性を確保する。
「主要なOSSの開発では、ほとんどGitHubが使われておりコミュニティーの成功につながっている」(根本氏)
このGitHubを、社内の環境にインストールして安全に使えるようにしたのが「GitHub Enterprise」だ。コードの修正、ブランチの作成とマージといった作業は、GitHub同様に行えるだけではなく、「誰が、どんな意図で何をしたか」「テストの結果はどうたったか」といった事柄を、時系列で後からきちんと追うことができる。既に国内でも100社を超える企業が導入している。
「中には導入自体が企業価値を上げ、転職サイトでGitHubを使っていることをアピールし、優秀なエンジニアの獲得につなげているケースもある」(根本氏)
根本氏はさらに、手作業に頼るのではなく、属人性を排除しながら少ない手間でCI/CDを実現する「CircleCI」「Nomad」「Vault」「TerraForm」といったHashicorpのソリューションを紹介した。
「いずれにも共通するのは、人手を介すると複雑で面倒なものを、ツールを使って自動化するということ。マクニカネットワークスでは、そうしたツール、すなわち“技術”に加え、“プロセス”、そして“人”を組み合わせ、開発力を高めていく手助けを行っている」(根本氏)
今回のセミナーでは、品質を維持しながらいかにしてスピーディーに開発を進めるかという課題に加え、セキュリティをどう担保するかにも言及する講演が目立った。属人性を極力排除してミスをなくし、開発・品質担保のプロセスを自動化する“仕組み”の重要性が今後も高まっていくことだろう。DevOpsではなく、DevSecOpsが当たり前になっていくのかもしれない。
Copyright © ITmedia, Inc. All Rights Reserved.