コロナ禍においてもサービス需要の高まりにより、
さらに高速化が求められるWebアプリケーション開発

現在、私たちの生活は様々なWebアプリケーションにより支えられています。例えば、銀行の預金額はWebアプリを通じて確認することができますし、電気・ガス・水道といったインフラの切り替えもオンラインで手続きができるようになっています。

img01_service

新型コロナウイルス感染拡大防止の観点から非対面のサービス提供が推奨されたことで、2020年4月以降はネットショッピングの需要が高まり※1、Webアプリケーションの利活用はさらに加速しています。「コロナ禍で急遽Webインターフェイスを用意した」という企業やサービスも少なくないのではないでしょうか。

このようにインターネットを通じたサービス提供により私たちの生活がますます便利になっていく一方で、適切にセキュリティ検査を実施しなければバグや不具合などが埋め込まれ、拡散・悪用されることにより企業にとって大きなダメージに繋がるリスクもあります。企業は開発~検証~リリースのスピードを高めながら、安全で安心な最良のアプリケーションを提供し続けなければなりません。

高速化されたCI/CDパイプラインを維持しながら
セキュリティを組み込むためのDevSecOps

アプリケーションをスムーズに開発し、リリース頻度を高めるため、開発を高速化・自動化するCI/CD (継続的インテグレーション/継続的デリバリー)パイプラインの構築が多くの企業で行われています。

img02_devsecops

CI/CDパイプラインにより開発プロセスが確実かつ、高速化されたものの、「セキュリティスキャンに時間がかかるため、高速化されたCI/CDパイプラインへ組み込むのが難しい」といった声や「スキャン結果の理解や精査、対策の判断~方針決定に時間がかかってしまう」といった課題に悩む企業は少なくありません。本記事ではそれらのセキュリティ課題を解消しながら、アプリケーション開発の高速化を維持するCI/CDパイプラインの在り方について解説します。

アプリケーション開発の高速化には、開発担当者と運用担当者が連携して協力する開発手法「DevOps」の導入が効果的です。DevOpsを導入している組織は、リリースの高速化と提供品質の向上を実現し、高品質なデリバリーができるという特徴があります。

DORA(DevOps Research and Assessment)が公開しているDevOpsの導入状況に関する調査※2によると、DevOpsを導入している組織とそうでない組織では、ソフトウェアの提供パフォーマンスにおいてコードのデプロイ頻度が208倍多く、コミットからデプロイまでのリードタイムが106倍速く、インシデントからの復旧時間については2604倍速く、変更失敗率については7倍低いという比較結果が発表されています。

img03_devops

しかし、DevOpsを導入し開発を高速化できる体制・環境を作ったとしても、リリース前のセキュリティチェックに時間がかかってしまっては、リリース頻度を上げることはできません。そこで高速で高品質なデリバリーを実現するためにはDevOpsにセキュリティプロセス(Sec)を組み込んだ「DevSecOps」が効果的です。要件定義~設計、実装、運用まで、すべての開発工程にセキュリティプロセスを組み込むことで、下流工程にたどり着くまでに脆弱性を発見することができるため、十分なセキュリティを担保しながら、開発と同じスピードでのセキュリティチェックを実施することができます。

こちらも読む

診断用データの準備不要でUIテストと同時にセキュリティチェック。検査~結果取得までの時間が大幅に短縮できるContrast Assess

今回は、ソフトウェアの脆弱性検査を行うセキュリティ・テスト・ソリューションで「IAST(Interactive Application Security Testing)」と呼ばれる脆弱性検査機能を提供するContrast Assessについて説明していきます。

Contrast Assessは検査用モジュールを検査対象のWebアプリケーションにインストールし、検査対象アプリケーションへのHTTPリクエスト発生時、プログラムの実際の挙動や振る舞いを収集し、アプリケーション内の脆弱性の有無を統合的に判断するツールです。

Webアプリケーションを動かすだけで検査ができるので、わざわざ診断のために大量のテスト用パラメータなどを用意する必要がなく、UIテストなどと同時にセキュリティチェックを行え、検査~結果を得るまでのリードタイムが極めて短いという点が大きな特徴で、セキュリティチェックを開発段階から都度実施し、脆弱性が埋め込まれてしまっていないかシームレスに確認をしながら進めることが可能です。

img04_contrastassess

リポジトリ(GitHub)に対して開発者によるソースコードのコミット
コミットを受け取ったらGitHubからAWS CodePipelineに通知
通知を受け取ったタイミングでAWS CodeBuildがソースコードをもとに自動ビルドを実施
自動ビルド後、AWS CodeDeployにより自動デプロイ
デプロイ完了後、Seleniumによる自動UIテスト。同時にContrastエージェントによるセキュリティ診断が開始
見つかった脆弱性はContrast サーバへ報告
Contrast サーバを通じて、チケット管理ツールやチャットツールへ情報連携
開発者はVSCode、Slack、Jiraといったアプリケーション上で情報を確認

 

Contrast Assessは検査対象となるアプリケーションのUI操作のみでセキュリティ検査が可能であり、診断ツール操作などの習熟が不要なため、誰でも検査ができます。また、日本語も自然で非常に分かりやすい表現になっており、「何が起こったか」「どんなリスクであるか」の説明だけなく、修正方法の提案もなされます。また、スタックトレースも確認可能なため、開発者の方はより詳細を確認しながら該当箇所の修正を行うことができます。

こちらも読む

高速サイクルを回すために残存する課題

ここまでCI/CDパイプラインへのセキュリティチェックの組込みについて説明してきましたが、セキュリティが足かせとなり、開発がスピードダウンしてしまう課題は他にもあります。

1.経営層と現場のすれ違いにより、導入したツールが有効活用されない

よくあるのが、マネジメント層が選定したセキュリティツールが、導入された現場で有効活用されていないというケースです。
マネジメント層はセキュリティ品質を高めるために必要なツールを選定したはずなのに、現場側では「よく分からないものを強制的に使わされている」という状態になってしまうと、「セキュリティを含む品質を高めたい」という共通の思いがあったとしても前に進むことができません。

良いツールを、適切なユーザーが適切なシーンで利用し、適切な効果を発揮することができるよう、ユービーセキュアでは双方の課題をとらえて、導入時の障害を取り除くための支援も提供しています。

img05

2. リリース前動的検査とCI/CDパイプラインとの連携の難しさ

2000年頃からセキュリティのさまざまな課題が認識されるようになり、開発者に対するセキュリティ教育や、設計レビュー、コーディング規約などによる脆弱性や不具合の混入防止、フレームワーク導入による安定的なプログラム作成など様々な手法が取り入れられてきました。
2010年頃からはリリース前の動的検査が一般化し、2016年頃までは、年1度のサイクルで実施されていましたが、最近では開発サイクルが常に回っているため、検査ニーズも常に高い状態にあります。

動的検査はアプリが結合テスト段階にないとできず、リリース直前になってからセキュリティチェックのためだけに別の環境を用意し、外部での検査が完了するまでに3~10営業日待たされた後に、検査で発見された脆弱性によっては大きな手戻りが発生してしまうこともあります。そのため場合によっては「修正せずにリリース」という判断をし、重大なインシデントに繋がってしまうことも少なくありません。可能な限り早く、また頻繁にテストを行い、セキュアな開発サイクルを回すという目標の下、セキュリティ内製化に取り組む企業が増えていますが、まだまだ少数です。

せっかく開発サイクルを高速化しているのにセキュリティチェックによってそのサイクルがスローダウンしてしまうのは、開発者にとっても「面倒臭い」状態だと思います。Contrast Assessを利用することで既存のCI/CDパイプラインにセキュリティの要素を追加し、面倒な問題を解消しながら、高速化されたアプリケーション開発、「DevSecOps」の実現をしていきましょう。

 

※1…総務省「家計消費状況調査 ネットショッピングの状況について」https://www.stat.go.jp/data/joukyou/pdf/n_joukyo.pdf
※2…DevOps Research and Assessment 「State of DevOps 2019」 https://cloud.google.com/devops/state-of-devops/

詳細・お問い合わせはこちら