• 検索結果がありません。

アジャイルソフトウェア開発による Web アプリケー ション開発とセキュリティ保証の課題のまとめション開発とセキュリティ保証の課題のまとめ

第 2 章 技術背景及び関連研究

2.6 アジャイルソフトウェア開発による Web アプリケー ション開発とセキュリティ保証の課題のまとめション開発とセキュリティ保証の課題のまとめ

Webアプリケーションの開発プロセスが、ウォーターフォール型から、アジャ イル型に変化する中で、アジャイルソフトウェア開発と整合性の高いセキュリティ 保証の整備が必要とされている。ここでは次の4つの課題を取り上げる。

課題1 設計の検証に必要となるセキュリティ要求定義と保守。

課題2 テスト駆動開発に適したセキュリティテストの実現による、開発者のセキュ リティ保証への関与。

課題3 体系的なセキュリティ保証を実現するための、セキュリティ知識の共有と 利用の仕組みの構築。

課題4 様々な変化への迅速な対応。

第3章では、ここで指摘した課題を解決する提案手法について詳しく述べる。

2.6.1 課題 1: セキュリティ要求の定義と保守

アジャイルソフトウェア開発とセキュリティ保証手法の各種手法の整合性を見 た場合に、まず課題となるのは、文書化や計画性に依存したセキュリティ保証手 法である。アジャイルソフトウェア開発では、機能要求の変化に伴い、セキュリ ティ要求も変化する。この変化を正しく捉え、実装が最新のセキュリティ要求を 反映していることを保証する仕組みが必要である。

一般に、アジャイルソフトウェア開発では、文書化よりもコード実装作業を優 先する。これはセキュリティの要求定義についても同様である。つまり、文書化 されたセキュリティ要求がないか、あったとしても古く、最新の実装を反映してい ない。

今回の研究を通してGithubで公開されているRailsを用いて開発された様々な Webアプリケーションを調査した。その中でセキュリティ要求が明文化され管理 された例は存在しなかった。これは公開されているのが実装コードのみであり、そ うした文書は非公開であることも考えられる。しかしながら、一般的には、Web アプリケーション開発はある程度成熟しており、ガイドラインや、開発者が持つ 暗黙のセキュリティ要求により、実装が進められているのが現状と考えられる。

アジャイルソフトウェア開発プロセスのフローは図2.4となる。例えば、テスト 駆動開発を進める場合には、そのテストケースが要求から導き出された仕様を表 す。しかしながら、セキュリティのような非機能要件を、すべてテストケースの 形で仕様化することは現実的ではない。おそらく、セキュリティ要求は開発者の

念頭にあり、コード実装に反映されているはずであるが、それを客観的に検証す ることは難しい。セキュリティ保証を実施するためには、最新の実装に対応する セキュリティ要求を明確に定義(文書化)する必要がある。

また、開発の過程で、セキュリティ要求の変更が必要となり、その変更をテスト ケースや実装コードに反映させる必要が生じるケースも想定されるが、セキュリ ティ要求が暗黙のまま変更されると、それに伴うセキュリティ実装の変更を検証 する手立てが無い。

このように、アジャイルソフトウェア開発におけるセキュリティの一つの大き な課題は不明確なセキュリティ要求である。結果として、実装が対応すべきセキュ リティ機能を十分には検証できない事である。開発プロセスの柔軟性とセキュリ ティ保証の十分性が相反する要素となっている。

2.6.2 課題 2: テスト駆動開発に合致した網羅的なセキュリティテ

スト

つぎに、アジャイルソフトウェア開発で、能動的にセキュリティ機能の実装を扱 うには、セキュリティテスト駆動開発が重要である。その際に、テスト駆動開発の 利点を阻害しない戦略的な手法が必要となる。具体的にはセキュリティテストの 網羅性を確保しつつ、開発者が扱える量のテストケースの自動生成が必要である。

セキュリティテストとは、特定の脆弱性に対する攻撃と、その対応を確認する ことである。ただし、脆弱性スキャナでは、すべての箇所に可能性のある全ての 攻撃を想定するため、組み合わせが膨大となり、実行に非常に長い時間がかかる ため、アジャイルソフトウェア開発において開発者が日常的に用いるセキュリティ チェックのツールにはならない。

効率的なテストケースを自動生成するためには、場所の特定と、その場所で考 慮すべき脆弱性の限定が必要である。これには、モデル駆動開発をベースとした セキュリティ保証の様々な取り組みが有望であると考える。ただし、要求、モデ ル、実装の過程が独立しているとアジャイルソフトウェア開発では適用が難しい。

2.6.3 課題 3: セキュリティに関する情報の共有

セキュリティ要求が文書化されないことも、セキュリティに関する情報の共有の 課題の一つである。実際のセキュリティ保証では様々な判断を開発者は求められ ている。例えば、セキュリティ要求やセキュリティ機能選択の妥当性や有効性、テ スト・ツールの出す警告への対応などである。これらは非常に手間のかかる作業で あるため、知識として開発チームで共有し、有効に再利用することが、アジャイル ソフトウェア開発でセキュリティ保証を効率的に進めるうえで重要である。2.1節 でとりあえげたセキュリティ知識を開発者が自然に活用できる仕組みが望ましい。

2.6.4 課題 4: 変化への迅速な対応

アジャイルソフトウェア開発では、様々な変化への対応が求められている。こ れにはセキュリティ要求の変化も含まれる。

アジャイルソフトウェア開発では、短い開発サイクルで顧客の要望をくみとり ながら、差分的に機能を追加、変更してゆく。セキュリティ保証では、要求の変 化、実装の変化に伴うセキュリティの問題を的確に検出し、修正方法をナビゲー トする仕組みが必要である。具体的には、セキュリティ保証は開発者が使いやす いツールの形で実現される必要がある。動作速度、扱いやすさ、実装作業との整 合性の高さが実用上重要である。

Outline

関連したドキュメント