セクションを選択

ソフトウェア開発ライフサイクルにおけるセキュリティ

URL をコピー

ソフトウェア開発ライフサイクル (SDLC) は、ソフトウェアの開発、デプロイ、保守に使用されるフレームワークです。このフレームワークは、プロセスに重点を置いてソフトウェアの品質を改善することを目的として、タスクやアクティビティを形式化して 6 から 8 段階に分けます。手順の形式化は、進捗状況とコストを監視しながら改善に使用できる測定と分析を可能にするために行います。 

SDLC の段階は以下のとおりです。

  • 計画:ソフトウェアの範囲と目的を決定する
  • 要件:ソフトウェアが実行する機能を定義する
  • 設計:アーキテクチャ、プラットフォーム、ユーザー・インタフェースなどの主要なパラメーターを決定する
  • 構築:ソフトウェアを作成して実装する
  • 文書化:ユーザーと関係者がソフトウェアの使用方法と操作方法を理解するのに役立つ情報を作成する
  • テスト:ソフトウェアが要件を満たしていることを検証する
  • デプロイ:ソフトウェアを対象ユーザーが利用できるようにする
  • 保守:ソフトウェアで発見されたバグや脆弱性を解消する

一見、SDLC とアプリケーション・ライフサイクル管理 (ALM) は極めて似ています。それは、どちらもソフトウェアの開発と管理のプロセスを扱うからです。SDLC は ALM の一部と見なすことができ、主に開発段階に焦点を当てています。ALM は通常、ソフトウェア・ポートフォリオの管理をより広い視点で捉えるために使用されますが、SDLC のドメインは単一のアプリケーションです。  

SDLC が特定のソフトウェア開発手法と結び付いているというのは、よくある誤解です。一連の順序で実行される SDLC の 8 つの段階はウォーターフォール型のソフトウェア開発プロセスを表すように見えますが、ウォーターフォール、アジャイルDevOps、リーン、反復、スパイラルはすべて SDLC 手法であることを理解することが重要です。SDLC 手法は、段階の名前、含まれる段階、またはそれらが実行される順序が異なる場合があります。計画や要件分析などのアクティビティは、1 つの段階にグループ化される場合があります。そうした違いはあるものの、SDLC は、必要なソフトウェア開発アクティビティの理解と分析に使用できるフレームワークを提供します。

アジャイルや DevOps などの SDLC 手法では、ウォーターフォールの直線的なアプローチではなく、ソフトウェア開発の反復的な性質が重視されています。

ソフトウェア開発でよくある問題は、重要な設計と実装がほぼ完了した後、セキュリティ関連のアクティビティが、SDLC の後半にあるテスト段階まで先送りされることです。テスト段階で実行されるセキュリティチェックは表面的なもので、スキャンと侵入テストに限定され、より複雑なセキュリティの問題が明らかにならない場合があります。SDLC プロセスの後半になって発見される問題は、多くの場合、プロダクションへの移行に遅れを生じさせます。これらの問題は、再開発と再テストが必要になることがあり、修正に時間と費用がかかります。

効果的なセキュリティプロセスを実装するには、チームが「シフトレフト」する必要があります。つまり SDLC の各段階にセキュリティに関する考慮を含め、プロジェクトの開始時に始まりプロジェクト全体を通じて継続させます。セキュアなソフトウェア開発ライフサイクル (SSDLC) を導入するには、SDLC の各段階でセキュリティ手順を追加する必要があります。たとえば、次のようなものが含まれます。

SDLC の段階

セキュリティのアクティビティ

計画

  • リスクとセキュリティ脅威の状況を評価する

  • 風評リスクなどのセキュリティインシデントがビジネスに及ぼす潜在的な影響を評価する

要件

  • 機能要件の定義の一部としてセキュリティ要件を含める

  • コンプライアンスおよび規制要件を理解して組み込む

設計

  • 脅威のモデル化に取り組む

  • セキュリティに関する考慮事項をアーキテクチャ計画の不可欠な要素にする

  • プラットフォームや UI などの設計段階の選択がセキュリティに与える影響を評価する

開発

  • 安全なコーディング手法について開発者を教育する

  • 開発プロセスにセキュリティテストツールを組み込む

  • ソフトウェアの依存関係を評価し、潜在的なセキュリティリスクを緩和する

文書化

  • セキュリティコントロールとプロセスを文書化する

  • 監査、コンプライアンスチェック、セキュリティレビューに備えるための情報を収集する

テスト

  • コードレビュープロセスを実装する

  • 静的分析や IAST (インタラクティブ・アプリケーション・セキュリティ・テスト) などのセキュリティテストを実行する

デプロイ

  • デプロイメント環境のセキュリティ評価を行う

  • セキュリティの構成を確認する

保守

  • 脅威を検出するためにモニタリングを実装する

  • 修正によって脆弱性や侵入に対応する準備を整える

増え続けるセキュリティの脅威に備えるために、組織には継続的に更新される一連のセキュリティプラクティスとプロセスが必要です。セキュリティゲートとセキュリティコントロールは、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 は、セキュリティ開発ライフサイクルの改善に使用できるプロジェクト、ツール、ドキュメントを無料で提供しています。

ソフトウェア・サプライチェーンのセキュリティは、リスク管理とサイバーセキュリティのベストプラクティスを組み合わせて、ソフトウェア・サプライチェーンを潜在的な脆弱性から保護します。ソフトウェア・サプライチェーンは、アプリケーション開発から CI/CD パイプライン、デプロイメントまで、SDLC においてコードに関わるすべてのものや人で構成されています。 

ソフトウェア・サプライチェーンのセキュリティは、組織、顧客、そしてオープンソースのコントリビューションに依存するすべての組織にとって重要です。どの組織も侵害されることを望んでいませんし、また他の組織が同様の事象に遭遇した場合の原因にもなりたくありません。そのために重要なのが、ソフトウェア・サプライチェーンを保護することです。 

セキュリティチームが考慮すべきサプライチェーンのセキュリティのベストプラクティスには、次のようなものがあります。

  • サプライチェーン全体のリソース (開発者ツール、ソースコードリポジトリ、その他のソフトウェアシステムなど) に対して最小権限のアクセスを付与し、多要素認証を有効にし、強力なパスワードを使用します。
  • 接続されたすべてのデバイスと機密データのセキュリティを強化します。
  • 一次サプライヤーから順に、サプライヤーとその取引先を把握します。リスクアセスメントを実施し、各サプライヤーのサイバーセキュリティ態勢と脆弱性に関する公共政策を評価します。

Red Hat は信頼されるオープンソースソフトウェアを提供し、インフラストラクチャ、アプリケーションスタック、およびライフサイクルにわたって階層化されたセキュリティアプローチを実装し、オンプレミス、クラウド、またはエッジサイトでのセキュリティを向上できるように支援します。Red Hat テクノロジーは、ソフトウェア・サプライチェーンの保護に重点を置いたプロセスで開発されています。このセキュリティ重視の基盤により、ハイブリッド環境の構築、管理、および制御、自動化戦略の実装、DevSecOps 手法を使用した SDLC でのセキュリティ開発に焦点を当てることができます。

Red Hat と当社のセキュリティ・パートナー・エコシステムが包括的な DevSecOps アプローチの実践を可能にし、セキュリティを犠牲にすることなくイノベーションを継続できるように支援します。Red Hat は、オープン・ハイブリッドクラウド全体でセキュリティを重視したアプリケーションを構築、デプロイ、実行するための堅牢なポートフォリオを提供するのに必要な専門知識と能力を備えており、お客様が DevSecOps 導入のどの段階にあっても適切にお手伝いできます。

関連資料

記事

DevSecOps とは

DevOps によるアジリティと応答性を存分に利用したいのであれば、アプリケーションのライフサイクル全体を通じて重要な役目を果たす IT セキュリティが不可欠です。

記事

クラウドセキュリティの特徴とは

高度なセキュリティ問題は、従来の IT システムとクラウドシステムの両方に影響します。クラウドセキュリティの特徴をご覧ください。

記事

SOAR とは

SOAR とは、セキュリティチームが使用する 3 つの主要なソフトウェア機能を指します。すなわち、ケースおよびワークフロー管理機能、タスクの自動化機能、および脅威インテリジェンスへのアクセス、クエリ、共有を一元化する手段が含まれます。

DevOps の詳細はこちら

製品

Red Hat のエキスパートによる徹底的かつ集中的な研修。アジャイルの方法論とオープンソースツールを使用して、社内業務の課題に対処する方法について学びます。

Red Hat の戦略的アドバイザーが、企業組織の全体像を把握しながら課題を分析し、包括的かつコスト効率に優れたソリューションで課題を解決できるようお手伝いします。

リソース