【特集】セキュア・ソフトウェア開発ガイド

プロジェクトマネジメントとセキュア開発プロセス

投稿日:

PMBOK、ウォータフォール、アジャイルなどをフレームワークとする今のプロジェクトマネジメントにおいて、セキュリティの観点は特に触れられていません。

セキュリティを観点とした代表的な開発基準には、「NIST SP 800-218」があります。
プロジェクトマネジメントで開発プロセスを考える際に、サブセットとしてこのような開発基準を組み込み、セキュア開発プロセスとして定義します。

NIST SP 800-218

NIST SP 800-218 は、正式名称を “Secure Software Development Framework (SSDF) Version 1.1” といい、アメリカ国立標準技術研究所(NIST) が発行した、ソフトウェア開発におけるセキュリティ強化のためのフレームワークです。

ソフトウェアのセキュリティを向上させるために、開発ライフサイクル全体にわたってベストプラクティスを体系化。以下の 4つの主要カテゴリー に分類された プラクティス群 から構成されます。

  1. Prepare the Organization (PO)
    組織としてセキュア開発を可能にする基盤づくり。

例:セキュア開発方針の定義、役割と責任の明確化、トレーニング。

  1. Protect the Software (PS)
    ソースコードやコンポーネントの保護。

例:コードのアクセス制御、依存関係の管理、署名・整合性チェック。

  1. Produce Well-Secured Software (PW)
    セキュアなソフトウェアを開発・テストする活動。

例:脆弱性スキャン、静的解析、セキュリティ要件の実装、レビュー。

  1. Respond to Vulnerabilities (RV)
    発見された脆弱性への対応と、ソフトウェアの改善。

例:脆弱性管理プロセス、修正の優先順位づけ、ユーザーへの通知。

PO(Prepare the Organization)カテゴリのプラクティス一覧

番号プラクティス IDタイトル(英語)概要(日本語要約)
1PO.1Define Security Requirements for Software Developmentソフトウェア開発におけるセキュリティ要件(組織ポリシー、法規制、契約など)を明文化し、開発工程に統合する。
2PO.2Implement Roles and Responsibilitiesセキュリティに関連する責任と役割を明確にし、開発関係者に割り当てる。例:セキュリティ責任者、レビュー担当者など。
3PO.3Implement Supporting Toolchainsセキュア開発に必要なツールやサービス(静的解析、依存関係管理など)を整備し、標準化・共有する。
4PO.4Define and Use Criteria for Software ReuseOSSなど再利用コンポーネントを安全に活用するための選定・承認・管理基準を策定し、適用する。
5PO.5Establish and Maintain a Secure Development Environment開発環境(ネットワーク、認証、アクセス制御など)を保護し、不正アクセスや改ざんのリスクを低減する。
6PO.6Protect All Forms of Code from Unauthorized Access and Tamperingソースコードや構成ファイル、スクリプト等をあらゆる段階で不正アクセス・改ざんから保護する。
7PO.7Provide Security Awareness and Training開発者や関係者に対し、セキュア開発に関する教育・トレーニングを継続的に実施する。内容は役割に応じて調整する。

PS(Protect the Software)カテゴリのプラクティス一覧

番号プラクティス IDタイトル(英語)概要(日本語要約)
1PS.1Protect Code from Unauthorized Accessソースコード・スクリプト・設定ファイルなどを、保存・転送・利用のすべての段階で不正アクセスから保護する。アクセス制御、認証、ログの活用などを含む。
2PS.2Provide a Mechanism for Verifying Software Integrityソフトウェアや構成ファイルに改ざんがないことを検証できる仕組み(例:署名、ハッシュ値の照合)を導入し、整合性を担保する。
3PS.3Archive and Protect Each Software Release各ソフトウェアリリースのバージョンや構成情報を記録し、信頼性ある形で保存・保護する。将来の検証や復元にも活用可能にする。

・PW(Produce Well-Secured Software)カテゴリのプラクティス一覧

番号プラクティス IDタイトル(英語)日本語要約
1PW.1Define and Maintain Secure Software Development Standardsセキュアコーディング標準(例:入力検証、エラー処理、認証の実装ルールなど)を定義・整備し、開発において継続的に活用する。
2PW.2Perform Threat Modeling設計段階で脅威分析(例:STRIDE、DREAD)を行い、セキュリティ対策を事前に計画・実装する。
3PW.3Use Approved Software Architecturesセキュリティ要件を満たすことが確認されたアーキテクチャや設計パターンを採用する(例:ゼロトラスト、最小特権)。
4PW.4Perform Security Testingセキュリティテスト(静的解析、動的解析、ファジングなど)を実施して脆弱性を検出し、修正する。
5PW.5Configure the Compilation, Build, and Packaging Processes to Improve Executable Securityビルド時にセキュリティ強化設定(例:ASLR, DEP, stack canaries)を有効化して、実行ファイルの安全性を高める。
6PW.6Provide a Mechanism for Verifying Software Release Integrity配布物に対して署名やハッシュなどの整合性検証機構を付与する。利用者が正当性を確認可能にする。
7PW.7Verify the Provenance of All Software Components自社・サードパーティ・OSSを含むすべてのソフトウェアコンポーネントについて、出所・信頼性・整合性を確認する。SBOM(ソフトウェア部品表)の活用が推奨される。
8PW.8Perform Code Reviews手動または自動でコードレビューを行い、セキュリティ上の問題を早期に発見・修正する。ピアレビューやツール(Lint等)を活用。

・RV(Respond to Vulnerabilities)カテゴリのプラクティス一覧

番号プラクティス IDタイトル(英語)日本語要約
1RV.1Identify and Confirm Vulnerabilities on an Ongoing Basis脆弱性を継続的に把握・確認する体制を確立。社内報告、脆弱性データベース(NVD, JVN)、ツールによる検出、第三者報告などを活用。
2RV.2Assess and Prioritize the Remediation of Vulnerabilities発見された脆弱性の重大度・影響度を評価し、対応の優先順位を決定。CVSSスコア、脅威モデル、ビジネスインパクトなどを考慮。
3RV.3Remediate Vulnerabilities実際に脆弱性の修正(パッチ適用、コード修正、構成変更など)を行い、再発防止策も検討する。修正後の検証も実施。
4RV.4Analyze Vulnerabilities to Identify Their Root Causes発生した脆弱性の原因を根本的に分析(例:再発防止のための設計改善、レビュー強化など)し、組織的な改善につなげる。

ソフトウェア開発ライフサイクルとの対応

NIST SP 800-218(SSDF)は、ソフトウェア開発ライフサイクル(SDLC)における各フェーズに対して、セキュリティプラクティスを統合することを目的としています。以下に、一般的なSDLCの工程と SSDF の4カテゴリ(PO, PS, PW, RV)との対応関係を示します。

プラクティスID 名称 企画・
要件定義
設計 実装 ビルド・
統合
テスト リリース・
配布
運用・
保守
PO.1セキュリティ要件の定義
PO.2役割と責任の実装
PO.3支援ツールチェーン整備
PO.4チェック基準の整備
PO.5セキュアな開発環境
PO.6コード保護
PO.7セキュリティ教育
PS.1コードの改ざん防止
PS.2整合性確認機構
PS.3リリースの保護
PW.1リスク低減設計
PW.2設計レビュー
PW.4ソフトウェア再利用
PW.5セキュアコーディング
PW.6セキュアビルド
PW.7コードレビュー・解析
PW.8実行コードのテスト
PW.9セキュアな初期設定
RV.1脆弱性の継続的特定
RV.2脆弱性評価と対応
RV.3原因分析と再発防止

・企画・要件定義では、PO・PWを反映:

セキュリティ要求は最初から定義(PO.1, PW.2)しておくことで後工程の修正コストを削減。

・実装・ビルドでは、PS・PWが重要:

実装時にセキュアコーディング(PW.1)やアクセス制御(PS.1)を徹底。

ビルド時に署名・ハッシュなど整合性確保(PW.5, PS.2)。

・運用後は、RVの役割が中心:

脆弱性検出・修正・再発防止(RV.1〜RV.4)が、ソフトウェアの信頼性と継続性を担保。

-【特集】セキュア・ソフトウェア開発ガイド

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

関連記事はありませんでした

Chinese (Simplified)Chinese (Traditional)EnglishFilipinoFrenchGermanHindiJapaneseKoreanMalayThaiVietnamese