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

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

投稿日:2025年6月23日 更新日:

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

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

関連記事

セキュリティ・アーキテクチャ

対象システム/ソフトウェアにとって、インターネットのような”信頼のないネットワーク”を介して行われる攻撃が「脅威」となります。セキュリティを実現するためのアーキテクチャは、外側(防御システム)と内側( …

セキュリティプログラミング

セキュリティプログラミングとは、ソフトウェア開発において、脆弱性を作り込まないように安全な実装を行うことを意味します。目的は、外部からの攻撃や内部不正による情報漏えい、改ざん、サービス停止を防ぐことで …

セキュリティのためのテスト

セキュリティテストとは、システムやアプリケーションのセキュリティ対策が適切に機能しているかを検証し、脆弱性や設定不備を特定するプロセスです。目的は、攻撃を受ける前に弱点を見つけ、対策を講じることです。 …

リリースと外部認証

本番環境への移行前には、単にコードをデプロイするだけでなく、リスクを最小化しつつ安定稼働を確保するための準備が必要です。 ■ 最終テスト システムテストが完了した後、ユーザによる受け入れテスト(UAT …

要求定義フェーズにセキュリティを組み込む

多くのセキュリティインシデントは、実装や運用以前の「要求定義フェーズ」での見落としから始まります。セキュリティは後付けできるものではなく、製品・サービスの企画段階から明示的に設計に組み込む必要がありま …

Chinese (Simplified)Chinese (Traditional)EnglishFilipinoFrenchGermanHindiJapaneseKoreanMalayThaiVietnamese