安全なコードを書いただけでは「セキュアコーディング」にならないのはなぜ?:失敗しないセキュアコーディング【後編】
ソフトウェア開発ライフサイクルにおいて、リスクを削減、管理するために「セキュアコーディング」に取り組むことは重要だが、その方法を誤解してはいけない。コーディング以外にも注意すべきこととは。
「セキュアコーディング」は、ソフトウェアの安全を確保する上で欠かせない取り組みだ。だが文字通り「セキュリティを意識したコーディング」を指すと考えるのは誤りだ。セキュアなソフトウェアを実現するには、ソフトウェア開発とリスク管理のプロセス全体において、セキュリティを確保するための取り組みを実施することが鍵となる。前編「『セキュアコーディング』に取り組んでもセキュアにならない本当の理由」は「セキュア」という言葉の本質を探った。次に注目するのは「コーディング」という言葉だ。
コーディングだけを気にすればよいわけではない
併せて読みたいお薦め記事
連載:失敗しないセキュアコーディング
セキュアコーディングのヒント
もちろん、コーディングは重要だ。だが「セキュリティ」と同様に、コーディングはソフトウェア開発の大きな要素だとしても、ソフトウェア開発ライフサイクルの一部に過ぎない。セキュアコーディングにおけるコーディングは何を目指すのかを考えるには、ソフトウェアをどう設計するのか、どれほどの手順を費やすのかといったことを念頭に置く必要がある。ソフトウェア開発ライフサイクル(SDLC)は大まかには以下の手順を踏む。
- 要件の特定
- 概念化
- 着手
- 要件収集
- 設計
- 開発
- テスト
- 展開
- サポート
- 保守
- 廃止
各手順はさらに下位手順に細分化される。例えば「テスト」の段階では、以下をはじめとする個別テストを実施する。
- 単体テスト
- 機能テスト
- 回帰テスト
- パフォーマンステスト
- セキュリティテスト
これらの手順のうち、コーディングだけに関係する手順と、コーディングとは無関係でも堅牢(けんろう)なソフトウェアを開発する上で欠かせない手順はそれぞれどれだけあるだろうか。つまりソフトウェア開発プロセスの各段階において、各関係者が実行するプロセス、受けたトレーニング、持っている意識といったさまざまな要因によって、リスクが増減する可能性は大いにある。リスクを管理、軽減した設計のソフトウェアを開発するには、これらの要因全てを考慮して、リスクの低減という成果を得るための行動を関係者に促さなければいけない。コーディングはソフトウェア開発プロセスにおいて目立つ手順だが、それだけを重視すべきではないということだ。
これまでの話をまとめると、ソフトウェアのリスク管理では、ソフトウェア開発ライフサイクル全体を扱う必要があると言える。そのためには2つのことを実施しなければならない。1つ目は、ライフサイクル全体を総合的に理解して考慮すること。2つ目は、開発以外の領域でも関連領域を対象として計画を立てることだ。以下に示す領域を取り込んで、それぞれの代表者を選任し、メンバーとチームが一体となってソフトウェアのセキュリティを向上させることが重要になる。
- テスト担当者
- ビジネスアナリスト
- プロジェクトマネジャー/プロダクトマネジャー
- サポート担当者
- 営業担当者
- マーケター
- 人事担当者
- 法務担当者
リスクとは、ソフトウェア開発プロセス全体の影響を受けるものであり、従来のセキュリティ対策で重視しがちだった領域よりも広い領域に影響が及ぶ。「目的は手段を正当化しない。その理由は単純かつ明白だ。使う手段によって結果の性質が決まるためだ」――。作家のオルダス・ハクスリー氏は、著作『Ends and Means』でそう述べた。言い換えると、何かをする方法によって最終的な状態が決まるということだ。この考え方をソフトウェア開発に当てはめると、まとまりがなく未熟でぞんざいな開発プロセスに従うと、規律が取れた堅牢な開発プロセスに従う場合に比べ、粗悪な設計かつ粗末な実装のソフトウェアが生み出されることになる。セキュアコーディングを実現するには、「セキュア」を上回る目標を定め、「コーディング」だけではなく開発プロセス全体を考慮する必要がある。
Computer Weekly発 世界に学ぶIT導入・活用術
米国TechTargetが運営する英国Computer Weeklyの豊富な記事の中から、海外企業のIT製品導入事例や業種別のIT活用トレンドを厳選してお届けします。
Copyright © ITmedia, Inc. All Rights Reserved.