アジャイル開発

アジャイルなSDLC(ソフトウェア開発ライフサイクル)とは

アジャイル開発は、要求側と開発者側との協調による意思決定と、稼働するソフトウェアの循環的、反復的な開発の進行を基本にしています。作業はスプリントと呼ばれる定期的な反復サイクル(通常は2~4週間)で行われます。

アジャイル開発では、将来高い確率で求められるであろう要件であっても、合意がなければ開発はなされません。この点が開発チームとセキュリティ・チームとのフラストレーションにもなりえます。セキュリティ・チームは攻撃、攻撃者、リスクの想定を志向します。時がたつにつれ要件がより明確化し、、開発プロセスの初期段階では想定されなかったセキュリティ要件が顕在化する可能性があります。ですが想定される様々な攻撃の可能性に対して、具体的な修正などの措置ができずセキュリティ担当者がどうしてよいか混乱してしまう場合があります。

セキュリティの観点からの重要なポイントは、アジャイル開発ではスプリントが基本だということです。バックログに存在しないセキュリティ要件はスプリントでのデリバリーの対象になりません。スプリントで予定されていない作業は行われません。バックログに明記されているセキュリティ要件は他の要件と共に優先順位が付けられます。

アジャイルによるセキュア開発の推進

アジャイル宣言が発表されてから15年が経ちますが、ソフトウェア開発におけるアプリケーション・セキュリティ対策では相変わらずの非効率が蔓延しています。セキュリティはソフトウェア開発とは切り離された外部のプロセスとみなされがちですが、今こそ、このような見方を改めて、アジャイル手法を用いたセキュアなソフトウェア構築を行う時期に来ています。

アジャイル環境でセキュアなソフトウェアを構築する場合、4つの原則に着目する必要があります。これらの原則は、「左記のことがらに価値があることを認めながらも、私たちは右記のことがらにより価値をおく」というオリジナルのアジャイル宣言を踏襲してパターン化したものです。

その目的は、新しいアクティビティの開発に関する指針を示し、セキュリティを当然のものとしてアジャイル・プロセスに効率的に組み込むように既存のアクティビティを調整することにあります。以下の4つの原則は、アジャイルな方法によるセキュア・ソフトウェアの構築を奨励するものです。

  1. セキュリティのスペシャリストだけでなく開発チームとテスト・チームも巻き込む
  2. 開発後にセキュアにするのでなく、開発中にセキュアにする
  3. セキュリティ機能の追加よりも機能のセキュアな実装を志向する
  4. バグ修正よりもリスク軽減に、価値をおく

セキュアなソフトウェアのアジャイルな開発は、一般的なソフトウェアのアジャイル開発と基本的に同じプロセスでなされるべきです。

 

アジャイル・セキュリティ宣言

今すぐダウンロード

アジャイルSDLCは列車の様

アジャイルのSDLCは列車にたとえられます。車輪の1回転が1スプリントを表します。スプリントが1回転するたびに、バックログから新しい要件が乗車し、アジャイル・ソフトウェア開発ライフサイクル(SDLC)の計画、実装、テスト、評価、デプロイの各フェーズへと進行していきます。

アジャイルSDLC手法のサイクル

スプリントの1回転に含まれるアジャイル開発の各フェーズは、ソフトウェア・セキュリティの線路に沿って、各フェーズに応じた一連のセキュリティ・アクティビティを通過していきます。セキュリティについて検討するために列車を停車する必要はありません。脆弱性が見つかった場合は、他のバグと同様に扱い、途中で解決します。