バックナンバーはこちら

today&tomorrow

Technology Update

  • T&T HOME
  • Technology Update
  • アプリケーション・セキュリティ・マネージャーのためのアジャイル開発

2017 May Spring vol.106

アプリケーション・セキュリティ・マネージャーのためのアジャイル開発

シノプシス ソフトウェア・インテグリティ・グループ スタッフ

頻繁なコード変更を受け入れる

アジャイルではコードが頻繁に変更されるだけでなく、頻繁な変更自体が推奨されています。

このため、セキュリティ・テストも同じ基準に合わせることが重要です。アジャイル手法の中では、アプリケーション・セキュリティも同じスピードで変化する必要があります。こうしたニーズに対応したアプリケーション・セキュリティによってセキュリティ保護機能を実現すれば、設計者の作業が複雑になったり、いろいろな障害が発生したり、開発者がアジャイルの原則から逸脱した作業を強いられたりすることがありません。

つまり、実行時間の長いツールや結果を人手で解釈しなくてはならないツールはこのような環境には適していません。コードがプロダクション・フェーズに移行する数日ないし数週間までの間に、テストが完了、またはセキュリティ・チームによるレビューが完了しない可能性があるためです。

セキュリティ・ストーリーを作成する

ほとんどのチームが少なくとも何らかのレベルで要件をユーザー・ストーリーという形にして作業を進めています。アプリケーション・セキュリティも同じようにユーザー・ストーリーの形にすれば、アジャイル・プロジェクトの枠組みの中で、なじみのあるフローのまま作業できます。そして忘れてはならないのは、セキュリティとは全員が取り組むべきジョブであり、特定の人員やチームに丸投げできるものではないということです。セキュリティをユーザー・ストーリーとして記述することにより、セキュリティも通常の開発およびテスト・サイクルの一環として提示され、開発者はセキュリティが各自の重要な作業の一部であることを認識できます。

アジャイルなアプリケーション・セキュリティ・ワークフローの構築に協力する

アジャイル開発者に対し、セキュリティの観点から何が期待されているのかをご説明します。次に、開発者と直接協力して現在の習慣、イタレーション、期日に見合ったワークフローを構築します。一般に、開発チームからは次のような質問が寄せられます。

  • セキュリティ・テストは誰が実行するのか。開発者が各自のコードを実行するのか、それともQAチームのセキュリティ・テスト責任者が実行するのか。
  • どのくらい頻度でセキュリティ・テストを実行するのか。最小単位のコードに対して実行するのか、それとも統合した後に実行するのか。
  • テスト結果を誰に報告するのか。開発チームなのか、それともセキュリティ・チームなのか。
  • 最終承認は誰が行うのか。

アジャイルなアプリケーション・セキュリティ・ワークフローの意義、それはアジャイルの原則である「リーン」と「スピード」を維持したまま、アプリケーション・セキュリティをすべてのフェーズに組み込んだ開発プロセスを構築することにあります。

トレーニング・プログラムを実施する

アプリケーション・セキュリティを適切に理解してテストを実行するにはトレーニングが必要ですが、そのような訓練を受けている開発者は多くありません。たとえトレーニング・プログラムが実施されていたとしても、開発者の離職率の問題もあって、全員の習熟度を常に高めておくのは非常に困難な状況です。開発チームに責任を持たせる前に、プロセスを容易に進められるだけの情報を提供することが大切です。

アプリケーション・セキュリティ・ツールは、プロセスを通じてトレーニングの役割も果たせるものを使用する必要があります。このトレーニングは現在のプロジェクトで役立つだけでなく、同じような開発手法による将来のプロジェクトにも通用します。プロジェクトを重ねていくうちに作業が楽になっていくというのが、アジャイル開発の利点の1つです。

トレーニングといっても、2週間ほどかけて幅広いトピック(その中には現在のプロジェクトに直接関係ないものも含まれるでしょう)について講義を行って試験を実施するという方法では、開発者は習った内容のほとんどを忘れてしまうのが普通です。そうではなくて、たとえば現在のコードで脆弱性が見つかったら、その脆弱性について短い講義を受ける、あるいは現在作業しているアプリケーションに関係のある脆弱性全般について講義を受けるといった方法をとるのがよいでしょう。

ミスを恐れず、開発を進めながら改善していく

アジャイル開発の本質は、プロジェクトを進めながら学習していくことにあります。最終成果に至るまで、イテレーションを繰り返して改善と変化を重ねていきます。アプリケーション・セキュリティのプロセスも同様に、変化と改善を重ねながら完了を目指します。

どんな開発手法を採用するにせよ、セキュアなソフトウェアを開発するには適切なテストを実施し、適切なセキュリティ措置を講じる必要があります。一般に、アジャイル開発手法はセキュアなコーディング手法およびアプリケーション・セキュリティ・テストとは相容れないと思われていますが、こうした認識は基本的に間違っています。わずかな柔軟性を持たせるだけで、アプリケーション・セキュリティをアジャイル開発システムに組み入れることは可能です。

セキュリティを無視したアジャイル開発には大きなリスクがあることを開発者は十分に認識する必要があります。ソフトウェアのセキュリティ・テストが不適切なためにセキュアでないソフトウェアを開発してしまった場合、データの盗難やハッカーからの攻撃に遭うリスクがあります。セキュリティ・テストにはコストがかかりますが、不適切なテストによって生じるコストに比べればそれは微々たるものです。

カテゴリートップ