DevSecOpsは 開発(development)、セキュリティー(security) 、 運用(operation) を略したもので、ソフトウェア開発ライフサイクルのすべてのフェーズ(初期設計から統合、テスト、実装、ソフトウェア・デリバリーまで)でセキュリティーの統合を自動化します。
DevSecOpsは、開発組織のセキュリティーへのアプローチ方法が自然に必要な進化を遂げたものだと言えます。 セキュリティーはかつて、開発サイクルの最後に(まるで後知恵のように)個別のセキュリティー・チームによってソフトウェアに「追加」され、個別の品質保証(QA)チームによってテストされていました。
ソフトウェアの更新が1年に1、2回リリースされていたときは、上記の方法で管理ができていました。 しかし、ソフトウェア開発者が、ソフトウェア開発サイクルを数週間、さらには数日間に短縮することを目的に、アジャイルや DevOps のプラクティスを採用するに従い、 従来型の「追加型」のセキュリティーへのアプローチでは、容認できないボトルネックが生じるようになりました。
DevSecOpsは、アプリケーションとインフラストラクチャーのセキュリティーを、アジャイルとDevOpsのプロセスやツールにシームレスに統合します。 DevSecOpsでは、セキュリティー問題が発生したときに、すなわち、問題により簡単に、迅速に、少ないコストで(実動に入る前に)対応できるタイミングで、その問題に対処します。 さらに、DevSecOpsでは、アプリケーションとインフラストラクチャーのセキュリティーは、独立したセキュリティー部門の単独の責任ではなく、開発チーム、セキュリティー・チーム、IT 運用チームの共同の責任となります。 ソフトウェア開発サイクルを減速させることなく、セキュアなソフトウェアのデリバリーを自動化することで、「ソフトウェアをより安全かつ迅速に」というDevSecOpsのモットーを実現します 。
DevSecOpsの2つの主なメリットは、スピードとセキュリティーです。 開発チームは、より優れた、より安全なコードをより迅速に、そして結果的に、より安く提供できるようになります。
「DevSecOpsの目的と意図は、必要な安全性を犠牲にすることなく、高いレベルで共通認識を持つ人たちにセキュリティーに関する意思決定を迅速かつ大規模に安全に配分することを目標として、誰もがセキュリティーに責任を持つという考えを構築するものです」と、「DevSecOps Manifesto」の共著者のShannon Lietz氏が述べています。
DevSecOpsではない環境でソフトウェアを開発する場合、セキュリティー上の問題が発生すると、大幅な遅延につながることがあります。 コードとセキュリティーの問題を修正するには、時間とコストがかかる可能性があります。 DevSecOpsの迅速でセキュアなデリバリーであれば、セキュリティーの問題が起こってしまった後の対応プロセスを繰り返す必要性を最小限に抑えることで、時間とコストを節約します。
そして、統合されたセキュリティーによって重複するレビューや不要な再構築が削減され、よりセキュアなコードになるため、効率とコスト効果が高くなります。
DevSecOpsは、開発サイクルの始めからサイバーセキュリティー・プロセスを導入します。 開発サイクル全体を通して、コードは、セキュリティー問題について検討、監査、スキャン、テストされます。 これらの問題は、特定されるとすぐに対処されます。 セキュリティー問題は、追加の依存関係が導入される前に修正されます。 保護テクノロジーが特定され、サイクルの早い段階で実装される場合、セキュリティー問題の修正のコストは低くなります。
また、開発、セキュリティー、運用の各チーム間のコラボレーションが向上すると、インシデントや問題の発生時の組織の対応力が向上します。 DevSecOpsプラクティスは、脆弱性にパッチを適用する時間を短縮し、セキュリティー・チームを解放して、より価値の高い作業に集中できるようにします。 これらのプラクティスはまた、コンプライアンスの確保と簡素化を行い、セキュリティーのためにアプリケーション開発プロジェクトを変更しないで済むようにします。
DevSecOpsの主要なメリットは、新たに特定されたセキュリティーの脆弱性をいかに迅速に管理できるかにあります。 DevSecOpsは、脆弱性スキャニングとパッチ適用をリリース・サイクルに統合しているため、共通脆弱性識別子(CVE)を特定してパッチを適用する機能はあまり使用されなくなっていきます。 これにより、脅威アクターが一般に公開されている実動システムの脆弱性を利用できる時間を制限することにつながります。
組織が 継続的インテグレーション/継続的デリバリー のパイプラインを使用してソフトウェアを出荷する場合、サイバーセキュリティー・テストを運用チームの自動テスト・スイートに統合することができます。
セキュリティー・テストの自動化には、プロジェクトと組織の目標が大きく影響します。 自動化されたテストによって、組み込まれたソフトウェアの依存関係が適切なパッチ・レベルにあるようにし、ソフトウェアがセキュリティー・ユニット・テストに合格することを確認できます。 さらに、最終更新が実動にプロモートされる前に、静的分析と動的分析を使用してコードをテストして保護することができます。
組織が成熟するにつれて、セキュリティー体制が成熟します。 DevSecOpsは反復可能で適応性のあるプロセスに適しています。 これにより、環境が変化し、新しい要件に適合するのに合わせて、動作環境全体に一貫したセキュリティーが確実に適用されます。 成熟したDevSecOpsの実施によって、強力な自動化、構成管理、オーケストレーション、 コンテナ、イミュータブル・インフラストラクチャー、さらに サーバーレス のコンピューティング環境を実現します。
DevSecOpsは、開発、デリバリー、運用の各プロセスにセキュリティー管理を自然に組み込む必要があります。
「シフト・レフト」はDevSecOpsの信条です。 これは、ソフトウェア・エンジニアに、セキュリティーをDevOps(デリバリー)プロセスの右側(終盤)から左側(序盤)へ移動することを促すものです。 DevSecOps環境においては、セキュリティーは開発プロセスの序盤から不可欠な部分です。 DevSecOpsを使用する組織は、サイバーセキュリティーのアーキテクトとエンジニアを開発チームの一員として参加させます。 彼らの仕事は、すべてのコンポーネントとスタック内のすべての構成アイテムについて、パッチ適用、セキュアな構成、文書化が確実に行われるようにすることです。
シフト・レフトにより、DevSecOpsチームは、セキュリティー・リスクと機密漏れを早期に特定し、これらのセキュリティーの脅威に必ず即時に対応できるようになります。 開発チームは、製品を効率的に構築することを検討するだけでなく、製品を構築する際にセキュリティーも実装しているのです。
セキュリティーは、エンジニアリングとコンプライアンスの組み合わせです。 組織は、開発エンジニア、運用チーム、およびコンプライアンス・チームの間の連携を形成し、組織内のすべての人が会社のセキュリティー体制を理解し、同じ基準に従うようにする必要があります。
デリバリー・プロセスに関わる全員が、アプリケーション・セキュリティーの基本原則、Open Web Application Security Project(OWASP)Top 10、アプリケーション・セキュリティー ・テスト、およびその他のセキュリティー・エンジニアリングの実践に精通している必要があります。 開発者は、スレッド・モデルとコンプライアンス検査を理解し、リスクと機密漏れの測定方法とセキュリティー管理の実装方法に関する実用的な知識を備えている必要があります。
優れたリーダーシップは、組織内の変化を促進する優れた文化を育てます。 プロセスおよび製品の所有権に関わるセキュリティーの責任について伝達することは、DevSecOpsにとって重要で不可欠なことです。 そうすることで初めて、開発者とエンジニアがプロセス所有者となり、それぞれの作業の責任を負うことができます。
DevSecOps運用チームは、チームと現在のプロジェクトに適したテクノロジーとプロトコルを使用して、チームのために機能するシステムを構築する必要があります。 チームがニーズに適したワークフロー環境を構築できるようにすることで、それらのチームはプロジェクトの結果に貢献する利害関係者になります。
DevSecOpsプロセスに追跡可能性、監査適合性、可視性を導入することで、より深い洞察とよりセキュアな環境を実現することができます。
必要なROIを実現するために設計された、統合機能、AI機能、および自動化機能の包括的なIBMのポートフォリオについて詳しくご覧ください。
IBM UrbanCode®によって、オンプレミス、クラウド、メインフレーム・アプリケーションの任意の組み合わせのソフトウェア・デリバリーをスピードアップし最適化できます。
強力なDevOpsソフトウェアにより、複数のデバイス、環境、クラウドにわたって、セキュリティー機能が充実したクラウドネイティブ・アプリを構築、導入、管理することができます。