CodeZine(コードジン)

特集ページ一覧

DevOpsのセキュリティ面も考慮した「DevSecOps」で、リリース期間短縮・性能と安全性の担保を実現【デブサミ2021】

【18-A-5】セキュアなDevOpsを実現するために今すべきこと

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2021/03/18 12:00

目次

FortifyでDevSecOpsを文化として定着させる

 続いてマイクロフォーカスエンタープライズ株式会社のプリセールス統括本部 Solutions Architect 森泰人氏が「Fortifyを使ったアプリケーションセキュリティ」と題したスライドを掲げて登壇。森氏によると、2021年はDevSecOpsの年とされており、マイクロフォーカスではDevSecOpsを「文化」として捉えていると切り出した。その文化とは、開発・運用・セキュリティの各チームが素早く安全なアプリケーションを提供できるように協力できる環境を構築することとしている。

 一般的に開発者とセキュリティがなかなか結びつかないことも多い。そこで森氏は悪意のある攻撃「HTTP Response splitting」を例に説明した。この攻撃は、HTTPがキャラクターベースのプロトコルである事を悪用して、正規のレスポンスに改行コードを挟む事で2つのレスポンスを連続でブラウザに送り、後半のレスポンスで悪意あるサイトへ誘導してキャッシュサーバーに登録。以降サイトにアクセスした人はキャッシュから汚染されたレスポンスを受け取るといったもの。

 例えば、入力した内容によってベージの遷移先を動的に制御するなど、入力されたデータをレスポンスのヘッダーに利用して返すような実装をしていれば簡単に悪用されてしまう。開発者が対応していなくても運用側でカバーできるという考え方もあるが、この攻撃はURLエンコーディングして改行コードを無効化するコードを1行追加するだけで対処できるのだ。

 ただし、このような対処法ばかりしていたら、対応する開発者に負担がかかる。コロナ禍もあり開発側への要求が高まるなか、機能実装だけでも大変なのに脆弱性の修正は難しい。そこで森氏は、DevSecOps文化を形成するために重要なアプリケーションテストのソリューションであるFortifyを推奨すべく説明を始めた。

 Fortifyには、さまざまな局面に応じたテストツールがラインアップされている。ソースコードを読み込んで解析する静的解析や、アプリケーションを動作させて解析を行う動的解析、動的解析の一種であるIAST(Interactive Application Security Testing)、そして本番環境において不正な動作を排除し記録するRASP(Runtime Application Self Protection)もサポートする。

 では開発者はFortifyをどのように活用するのだろうか。開発者は自分の端末でコーディングし、ソースコードのリポジトリにコミットする。そこから先はJenkinsのようなツールでさまざまなテストが自動化される。ビルドサーバではコードの静的診断が行われ、ビルドが終わればQAサーバで動作させ、動的診断を行う。それぞれの診断結果は、「Fortify Software Security Center」に送られ、開発者はその結果を見て修正の対応をする流れだ。

 森氏は、「FortifyのIDEプラグインもあり、開発者はIDE上で結果を見ることもできるので、現在の運用に組み入れていく形式がいいと思います。Fortify Software Security Centerがハブになるような形で、セキュリティ担当者も結果の確認や問題の選別、レポート出力ができます。このような運用を習慣化していくことを推奨します」と語った。

Fortifyによって、開発にセキュリティテストを無理なく組み入れることができる
Fortifyによって、開発にセキュリティテストを無理なく組み入れることができる

 そして森氏は「幸せな開発者の1日」として、セキュリティテストの自動化を組み入れた開発者のモデルケースを紹介した。開発者は、コーディングした1日の終わりにリポジトリにアップロードして帰宅する。その後、静的テスト、ビルドとデプロイ、動的テストや各種テストから不具合が発生した場合などのチケット登録まで自動化されて進行する。開発者は翌朝に登録されたチケットを処理し、次の新規コーディングを行う、というライフサイクルが実現できるとした。

テストの工程を自動化できるので、開発者はコーディングに集中できる
テストの工程を自動化できるので、開発者はコーディングに集中できる

 森氏は「セキュリティチェックがあるからといって、開発者の仕事が増える訳ではありません。どのみち不具合は解消しなければならないものですが、数か月間に書いたコードをあとから修正するよりは前日のコード修正のほうが容易ですね。このようなサイクルで開発していくと安全なシステムができ、開発者も幸せになります」と、そのメリットを説明した。

 このあと松尾氏が再び登壇し、継続的ビルド&テストのデモンストレーションを行った。開発メンバーがALM Octaneにログインし、IDE上からユーザーストーリーを確認、コードを変更・コミットし、Jenkinsの方でパイプラインを実行。セキュリティテストとしてFortifyが自動実行され、脆弱性情報などの結果がALM Octaneに登録されるという一連の流れが説明された。松尾氏は最後に講演を振り返りとして次のようにコメントした。

 「アプリケーションの脆弱性は、開発の大きな手戻りの要因となります。これを解決していくためには現在のDevOpsに継続的なセキュリティテストを組み込んでいくことが重要です。DevSecOpsにシフトすることでリリース期間の短縮、機能・性能・セキュリティを担保したアプリケーションの開発を実現できます」

 なお、FortifyチームではYouTubeでもDevSecOpsについて解説している。



  • LINEで送る
  • このエントリーをはてなブックマークに追加

バックナンバー

連載:【デブサミ2021】セッションレポート

もっと読む

著者プロフィール

  • CodeZine編集部(コードジンヘンシュウブ)

    CodeZineは、株式会社翔泳社が運営するソフトウェア開発者向けのWebメディアです。「デベロッパーの成長と課題解決に貢献するメディア」をコンセプトに、現場で役立つ最新情報を日々お届けします。

あなたにオススメ

All contents copyright © 2005-2021 Shoeisha Co., Ltd. All rights reserved. ver.1.5