概要
ソフトウェア開発ライフサイクル (SDLC) は、ソフトウェアの開発、デプロイ、保守に使用されるフレームワークです。このフレームワークは、プロセスに重点を置いてソフトウェアの品質を改善することを目的として、タスクやアクティビティを形式化して 6 から 8 段階に分けます。手順の形式化は、進捗状況とコストを監視しながら改善に使用できる測定と分析を可能にするために行います。
SDLC の段階は以下のとおりです。
- 計画:ソフトウェアの範囲と目的を決定する
- 要件:ソフトウェアが実行する機能を定義する
- 設計:アーキテクチャ、プラットフォーム、ユーザー・インタフェースなどの主要なパラメーターを決定する
- 構築:ソフトウェアを作成して実装する
- 文書化:ユーザーと関係者がソフトウェアの使用方法と操作方法を理解するのに役立つ情報を作成する
- テスト:ソフトウェアが要件を満たしていることを検証する
- デプロイ:ソフトウェアを対象ユーザーが利用できるようにする
- 保守:ソフトウェアで発見されたバグや脆弱性を解消する
一見、SDLC とアプリケーション・ライフサイクル管理 (ALM) は極めて似ています。それは、どちらもソフトウェアの開発と管理のプロセスを扱うからです。SDLC は ALM の一部と見なすことができ、主に開発段階に焦点を当てています。ALM は通常、ソフトウェア・ポートフォリオの管理をより広い視点で捉えるために使用されますが、SDLC のドメインは単一のアプリケーションです。
SDLC と DevOps およびアジャイルとの関連性
SDLC が特定のソフトウェア開発手法と結び付いているというのは、よくある誤解です。一連の順序で実行される SDLC の 8 つの段階はウォーターフォール型のソフトウェア開発プロセスを表すように見えますが、ウォーターフォール、アジャイル、DevOps、リーン、反復、スパイラルはすべて SDLC 手法であることを理解することが重要です。SDLC 手法は、段階の名前、含まれる段階、またはそれらが実行される順序が異なる場合があります。計画や要件分析などのアクティビティは、1 つの段階にグループ化される場合があります。そうした違いはあるものの、SDLC は、必要なソフトウェア開発アクティビティの理解と分析に使用できるフレームワークを提供します。
アジャイルや DevOps などの SDLC 手法では、ウォーターフォールの直線的なアプローチではなく、ソフトウェア開発の反復的な性質が重視されています。
SDLC でセキュリティが重要な理由
ソフトウェア開発でよくある問題は、重要な設計と実装がほぼ完了した後、セキュリティ関連のアクティビティが、SDLC の後半にあるテスト段階まで先送りされることです。テスト段階で実行されるセキュリティチェックは表面的なもので、スキャンと侵入テストに限定され、より複雑なセキュリティの問題が明らかにならない場合があります。
「シフトレフト」と「シフトライト」は、SDLC 全体を通じてセキュリティを重視することの必要性を強調するために出現した用語です。シフトレフトとシフトライトの原則を採用することで、チームはセキュリティ上の欠陥を早期に修正することができ、本来であればコストのかかる再作業に費やされるはずの費用を節約し、また本番稼動に遅れが生じることを回避できる可能性が高くなります。
セキュア SDLC (SSDLC) とは
効果的なセキュリティプロセスを実装するためには、プロジェクト開始時からプロジェクト全体を通じ、SDLC の各フェーズにおけるセキュリティの懸念も含め、チームが「シフトレフト」することが求められます。セキュアなソフトウェア開発ライフサイクル (SSDLC) を導入するには、SDLC の各段階でセキュリティ手順を追加する必要があります。たとえば、次のようなものが含まれます。
SDLC の段階 | セキュリティのアクティビティ |
---|---|
計画 |
|
要件 |
|
設計 |
|
開発 |
|
文書化 |
|
テスト |
|
デプロイ |
|
保守 |
|
SSDLC の実装方法:DevSecOps と自動化
増え続けるセキュリティの脅威に備えるために、組織には継続的に更新される一連のセキュリティプラクティスとプロセスが必要です。セキュリティゲートとセキュリティコントロールは、SSDLC の一部として、開発とデプロイのプロセスの初期段階で実装する必要があります。迅速に反復するために、組織は DevOps プロセスと自動化された継続的インテグレーションおよび継続的デプロイメント (CI/CD) パイプラインを利用するようになっています。ボトルネックを回避するには、セキュリティも継続的で自動化されたプロセスである必要があります。開発チームは、設計、構築、運用、保守に加えて、アプリケーションのセキュリティにも責任を持つ必要があります。
DevSecOps は、人、プロセス、テクノロジーを含む一連のプラクティスで、より優れたセキュリティと、一貫性、再現性、およびコラボレーションの向上を実現しながら、ソフトウェア開発の速度と効率を向上させることを目的としています。DevSecOps では、開発、運用、セキュリティの部門間で責任を共有することが重要です。DevSecOps の目標は次のとおりです。
- 安全性の向上とリスクの最小化:アプリケーション開発やインフラストラクチャのライフサイクルの早い段階でセキュリティの脆弱性を排除することで実現します。これにより、潜在的なプロダクションの問題を減らすことができます。
- DevOps リリースサイクルの効率とスピードの向上:従来のセキュリティプラクティスとツールを排除し、DevOps リリースサイクルの効率とスピードを実現します。自動化の使用、ツールチェーンの標準化、および、Infrastructure as Code、Security as Code、Compliance as Code の実装により、再現性と一貫性を確保することで、開発プロセスを改善できます。
- リスクの軽減と可視性の向上:アプリケーション開発とインフラストラクチャのライフサイクルの初期段階でセキュリティゲートを実装し、ヒューマンエラーの可能性を低下させ、監査の懸念を削減しながらセキュリティ、コンプライアンス、予測可能性、再現性を向上させることで実現します。
DevSecOps 成熟度モデルの 4 つの段階を経ることで、CI/CD パイプラインを介してセキュリティを組み込み、ビジネスや世界的な状況の変化に合わせて調整できるようになります。Open Web Application Security Project® (OWASP) は、ソフトウェアセキュリティと IT セキュリティの意識を向上させるために、コミュニティ主導のオープンソースソフトウェア・プロジェクトを促進している非営利団体です。OWASP は、セキュリティ開発ライフサイクルの改善に使用できるプロジェクト、ツール、ドキュメントを無料で提供しています。
ソフトウェア・サプライチェーンのセキュリティと SDLC
ソフトウェア・サプライチェーンのセキュリティは、リスク管理とサイバーセキュリティのベストプラクティスを組み合わせて、ソフトウェア・サプライチェーンを潜在的な脆弱性から保護します。ソフトウェア・サプライチェーンは、アプリケーション開発から CI/CD パイプライン、デプロイメントまで、SDLC においてコードに関わるすべてのものや人で構成されています。
ソフトウェア・サプライチェーンのセキュリティは、組織、顧客、そしてオープンソースのコントリビューションに依存するすべての組織にとって重要です。どの組織も侵害されることを望んでいませんし、また他の組織が同様の事象に遭遇した場合の原因にもなりたくありません。そのために重要なのが、ソフトウェア・サプライチェーンを保護することです。
セキュリティチームが考慮すべきサプライチェーンのセキュリティのベストプラクティスには、次のようなものがあります。
- サプライチェーン全体のリソース (開発者ツール、ソースコードリポジトリ、その他のソフトウェアシステムなど) に対して最小権限のアクセスを付与し、多要素認証を有効にし、強力なパスワードを使用します。
- 接続されたすべてのデバイスと機密データのセキュリティを強化します。
- 一次サプライヤーから順に、サプライヤーとその取引先を把握します。リスクアセスメントを実施し、各サプライヤーのサイバーセキュリティ態勢と脆弱性に関する公共政策を評価します。
Red Hat® の SDLC のセキュリティを選ぶ理由
Red Hat は信頼されるオープンソースソフトウェアを提供し、インフラストラクチャ、アプリケーションスタック、およびライフサイクルにわたって階層化されたセキュリティアプローチを実装し、オンプレミス、クラウド、またはエッジサイトでのセキュリティを向上できるように支援します。Red Hat テクノロジーは、ソフトウェア・サプライチェーンの保護に重点を置いたプロセスで開発されています。このセキュリティ重視の基盤により、ハイブリッド環境の構築、管理、および制御、自動化戦略の実装、DevSecOps 手法を使用した SDLC でのセキュリティ開発に焦点を当てることができます。
Red Hat と当社のセキュリティ・パートナー・エコシステムが包括的な DevSecOps アプローチの実践を可能にし、セキュリティを犠牲にすることなくイノベーションを継続できるように支援します。Red Hat は、オープン・ハイブリッドクラウド全体でセキュリティを重視したアプリケーションを構築、デプロイ、実行するための堅牢なポートフォリオを提供するのに必要な専門知識と能力を備えており、お客様が DevSecOps 導入のどの段階にあっても適切にお手伝いできます。