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

URL をコピー

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

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

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

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

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

アジャイルや DevOps などの SDLC 手法では、ソフトウェア開発作業の反復的な性質が重視されており、直線的に進めるウォーターフォールとは異なるアプローチになっています。

DevOps の詳細はこちら

Red Hat Advanced Developer Suite の追加のセキュリティ機能

ソフトウェア開発でよくある問題は、セキュリティ関連のアクティビティが、重要な設計と実装がほぼ完了した後にある SDLC 後半のテスト段階まで先送りされることです。セキュリティチェックをテスト段階で実施すると、その内容がスキャンと侵入テストに限定されて表面的なものに終始してしまうことがあり、複雑なセキュリティ上の問題が見過ごされる可能性があります。 

「シフトレフト」と「シフトライト」は、SDLC 全体を通じてセキュリティを重視することの必要性を強調するために出現した用語です。シフトレフトとシフトライトの原則を採用することで、チームはセキュリティ上の欠陥を早期に修正することができ、従来であれば再作業が発生して必要になっていたであろう高額なコストを節約できるのに加え、本番稼動への移行の遅れを回避できる可能性が高くなります。

シフトレフトとは、プロジェクトの開始から全体を通してすべての段階でセキュリティに関する懸念に対応することを言います。効果的なセキュリティプロセスを実装するためには、このシフトレフトが欠かせません。セキュアなソフトウェア開発ライフサイクル (SSDLC) を導入するには、SDLC の各段階でセキュリティ手順を追加する必要があります。これには次のものが含まれます。

SDLC の段階

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

計画
  • リスクとセキュリティ脅威の状況を評価する
  • 風評リスクなどのセキュリティインシデントがビジネスに及ぼす潜在的な影響を評価する
要件
  • 機能要件の定義の一部としてセキュリティ要件を含める
  • コンプライアンスおよび規制要件を理解して組み込む
設計
  • 脅威のモデル化に取り組む
  • セキュリティに関する考慮事項をアーキテクチャ計画の不可欠な要素にする
  • プラットフォームや UI などの設計段階の選択がセキュリティに与える影響を評価する
開発
  • 安全なコーディング手法について開発者を教育する
  • 開発プロセスにセキュリティテストツールを組み込む
  • ソフトウェアの依存関係を評価し、潜在的なセキュリティリスクを緩和する
文書化
  • セキュリティコントロールとプロセスを文書化する
  • 監査、コンプライアンスチェック、セキュリティレビューに備えるための情報を収集する
テスト
  • コードレビュープロセスを実装する
  • 静的分析や IAST (インタラクティブ・アプリケーション・セキュリティ・テスト) などのセキュリティテストを実行する
デプロイ
  • デプロイメント環境のセキュリティ評価を行う
  • セキュリティの構成を確認する
保守
  • 脅威を検出するためにモニタリングを実装する
  • 修正によって脆弱性や侵入に対応する体制を整える

増え続けるセキュリティの脅威に備えるために、組織には継続的に更新される一連のセキュリティプラクティスとプロセスが必要です。SSDLC の一部として、早期から開発とデプロイのプロセス全体に対してセキュリティゲートとセキュリティコントロールを実装する必要があります。迅速に反復するために、DevOps プロセスと自動化された継続的インテグレーションおよび継続的デプロイメント (CI/CD) パイプラインを導入する組織が増えています。セキュリティが障害となってしまうことを防ぐには、セキュリティも継続的で自動化されたプロセスとして組み入れる必要があります。開発チームは、設計、構築、運用、保守に加えて、アプリケーションのセキュリティにも責任を持つことが必要です。 

DevSecOps は、人、プロセス、テクノロジーを含む一連のプラクティスであり、より優れたセキュリティと、一貫性、再現性、およびコラボレーションの向上を実現しながら、ソフトウェア開発の速度と効率を向上させることを目的としています。DevSecOps では、開発、運用、セキュリティの部門間で責任を共有することが重要です。DevSecOps の目標は次のとおりです。

  • 安全性の向上とリスクの最小化:アプリケーション開発やインフラストラクチャのライフサイクルの早い段階でセキュリティの脆弱性を除去し、プロダクション環境で問題が発生する可能性を減らすことができます。
  • 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 テクノロジーは、ソフトウェア・サプライチェーンの保護に重点を置いたプロセスによって開発されています。 

当社のポートフォリオの基盤である Red Hat Enterprise Linux® は、イミュータブルなイメージ、自動化された構成、信頼できるサプライチェーン、ランタイム保護により、「シフトレフト」のコンプライアンスを組織に組み込めるように構築されています。このセキュリティ重視の基盤により、ハイブリッド環境の構築、管理、制御、自動化戦略の実装、および DevSecOps 手法を使用した SDLC でのセキュリティ開発に焦点を当てることができます。

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

Red Hat の DevSecOps を選ぶ理由はこちら

製品

Red Hat Advanced Developer Suite

プラットフォームエンジニアが開発者の生産性とアプリケーションのセキュリティを強化するための一連のソリューション。

すべての Red Hat 製品のトライアル

Red Hat の無料トライアルは、Red Hat 製品をハンズオンでお試しいただける無料体験版です。認定の取得に向けた準備をしたり、製品が組織に適しているかどうかを評価したりするのに役立ちます。

関連情報

脆弱性管理とは

脆弱性管理は、デバイス、ネットワーク、アプリケーションのセキュリティ上の欠陥を特定、評価、修正する IT セキュリティプラクティスです。

セキュリティの自動化とは

セキュリティの自動化では、テクノロジーを使用して、人間による作業を削減しつつ、セキュリティプロセス、アプリケーション、インフラストラクチャを統合するタスクを実行します。

インサイダー脅威とは

インサイダー脅威とは、偶然か意図的かにかかわらずデータが漏洩あるいは不適切な使い方をされることを言い、それによりデータが悪用されたり正当なアクセス権を持たない人物に閲覧されたりする可能性が生じます。

セキュリティリソース

関連記事