DevSecOps は、ソフトウェア開発ライフサイクル (SDLC) の早い段階でセキュリティを導入するアプリケーション・セキュリティ (AppSec) プラクティスです。DevSecOps は、セキュリティ・チームをソフトウェアのデリバリ・サイクルに統合することで、開発チームと運用チームのコラボレーションを拡大します。これにより、セキュリティは共有責任となり、これらのコア機能グループ全体でカルチャー、プロセス、ツールの変更が必要になります。SDLC に関与するすべての人が、DevOps の継続的インテグレーションと継続的デリバリ(CI/CD) ワークフローにセキュリティを組み込む役割を担っています。
SDLC 全体に継続的にセキュリティを組み込むことで、DevOps チームは、迅速かつ高品質で安全なアプリケーションを提供できます。ワークフローにセキュリティを組み込むのが早ければ早いほど、セキュリティ上の弱点や脆弱性を、より早い段階で特定して修正できます。この概念は、セキュリティ・テストを開発者側に移すことで、従来のようにサイクルの終わりまで待つことなく開発中にコードのセキュリティ問題を修正できるため、「シフトレフト」と呼ばれることもあります。そして、DevSecOps は、計画と設計からコーディング、構築、テスト、リリースまで、リアルタイムの継続的なフィードバック・ループと知見を用いて、SDLC 全体を対象としています。
簡単に言えば、DevOps とは、従来サイロ化されていたチーム間の壁を取り除くことです。DevOps モデルでは、開発チームと運用チームが、開発とテストから、さらにデプロイから運用まで、ソフトウェア・アプリケーションのライフサイクル全体にわたって連携します。
DevOps は、組織の文化、プロセス、テクノロジーの 3 つの柱からなる思想です。これら 3 つの柱はすべて、開発チームと IT 運用チームが協力して、従来のソフトウェア開発プロセスよりも迅速に、アジャイルかつ反復的な方法でソフトウェアを構築、テスト、リリースできるようにすることを目指しています
DevOps ハンドブックによれば、「理想的な DevOps では、開発者は作業に関するフィードバックを迅速かつ継続的に受け取り、コードを迅速かつ独立して実装、統合、検証し、コードを本番環境に展開できます。」
現代のソフトウェア組織はほぼすべて、アジャイル・ベースの SDLC を使用して、アップデートや修正を含むソフトウェア・リリースの開発と配信を加速しています。DevOps と DevSecOps は、異なる目的でアジャイル・フレームワークを使用します。DevOps はアプリ配信のスピードに重点を置いていますが、DevSecOps は、可能な限り迅速に、可能な限り安全なアプリを配信することで、スピードとセキュリティを高めます。DevSecOps の目標は、安全なコードベースの迅速な開発を促進することなのです。
DevSecOps は、ビルドから本番環境まで、SDLC のあらゆる部分にセキュリティを統合します。DevSecOps では、セキュリティは DevOps バリュー・チェーンのすべての関係者の共同責任です。DevSecOps には、開発、リリース管理 (または運用)、およびセキュリティ・チーム間の継続的で柔軟なコラボレーションが含まれます。つまり、DevOps はスピードを重視し、DevSecOps はスピードを重視したセキュリティに重点を置いています。
Black Duck の「世界のDevSecOps の現状 2023」レポートは、世界中の 1,000 人以上の IT プロフェッショナルを対象にした調査に基づいており、回答者の 53% がビジネス・クリティカルなアプリケーションのセキュリティを少なくとも週に 1 回テストし、31% が少なくとも毎日テストしていると報告しています。これは、DevOps ツールを使用した統合型自動セキュリティ・テストが標準になりつつあることを示しています。さまざまな業界の組織が DevSecOps を使用して開発、セキュリティ、運用チーム間のサイロを解消し、開発のスピードとセキュリティを維持しています。
DevSecOpsは、以下の業界すべてに適用されます。
開発組織が最初からセキュリティを考慮してコードを作成すると、本番環境へ展開する前やリリース後に、脆弱性の検出と修正が、より簡単で低コストで済むようになります。
DevOps から DevSecOps に移行するメリットは次のとおりです。
DevSecOpsを実装するには、CI/CDプロセスに統合するさまざまなアプリケーション・セキュリティ・テスト(AST)ツールを検討する必要があります。一般的に利用されているASTツールの一部を以下に示します。
[1] https://www.csoonline.com/article/3245748/what-is-devsecops-developing-more-secure-applications.html
[2] https://itrevolution.com/the-devops-handbook/
[3] https://blogs.cornell.edu/react/devops-vs-devsecops-what-is-the-difference/
[4] https://enterprisersproject.com/article/2018/1/why-devsecops-matters-it-leaders
[5] https://jaxenter.com/dast-devops-166973.html
[6] https://www.channele2e.com/investors/exits/synopsys-buys-tinfoil-security/
DevSecOps の導入を開始する際、組織にいくつかの課題がもたらされる可能性があります。ソフトウェア開発には、独自の運用方法と開発方法を持つフレームワーク、言語、アーキテクチャなど、さまざまなテクノロジが関係します。このため、セキュリティ・チームが求めるスピードで継続的にテストおよび監視することが困難になる可能性があります。
これらの開発ツールやテクニックを、不適切に構成されたセキュリティ・テスト・メカニズムと組み合わせると、容易にパイプラインが脆弱になる可能性があります。脆弱なパイプラインは、一部が故障したり自動化が失敗したりすると、破損する可能性があります。セキュリティ・チームが、複雑で時間がかかる可能性のあるトリガーされたすべてのイベントとそれらを制御するポリシーの管理に失敗した場合、残念ながらこのような結果になる可能性が高くなります。
最後に、リスクはパイプラインのどこにでも発生する可能性があるため、パイプライン内で発生する新しい問題をできるだけ早く検出できるように、ソフトウェア開発プロセス全体にわたってセキュリティ チェックを実装することが重要です。ただし、上記の複雑な条件や、分散開発や DevSecOps の組織的なニュアンスから生じる可視性と優先順位の障害により、チームが必要なさまざまなセキュリティ チェックを調整および管理することは困難になります。
DevSecOps モデルへの移行は複雑である必要はありません。Black Duck の今日の最先端の AppSec ソリューションを使用すると、組織は開発チームのスピードを落とすことなく、セキュリティを簡単にシフトレフトできます。
Black Duck Polaris™ Platform は、統合されたクラウドベースのアプリケーション・セキュリティ・テスト・ソリューションであり、開発者を簡単にオンボードし、数分でコードのスキャンを開始できます。また、セキュリティ・チームは、数千のアプリにわたる AppSec テスト・アクティビティとリスクを一元的に追跡および管理して、パイプライン、チーム、ビジネス・ユニット全体で完全なセキュリティ・カバレッジを確保できます。
Black Duck は、開発者がリアルタイムで安全なコードを記述し、将来的にパイプラインの柔軟性を確保できるようにするための幅広い拡張機能とプラグインも提供しています。Code Sight™ は、IDE ベースの迅速なテストを提供するため、開発者はより安全なコードを記述し、ソフトウェアをダウンストリームにプッシュする前に脆弱なコンポーネントを修正できます。開発者は、IDE を離れることなく、セキュリティ上の不具合を迅速かつ正確に検出し、詳細な修正ガイダンスを表示できます。
Blak Duck GitHub Action、GitLab テンプレート、Azure DevOps 拡張機能、Jenkins プラグインは、テスト・サーバーへのシームレスな接続を確立し、開発者と DevOps チームが既存のワークフローにセキュリティ・テストを組み込むことを可能にします。これらのプラグインは、構成が完了すると、自動セキュリティ・チェックを実行し、開発者による追加の設定を必要とせずにポリシーとリスク許容度を適用します。
Polaris プラットフォームは、幅広いプラグインや拡張機能とともに、ビジネスに合わせて拡張および成長できる包括的で柔軟なソリューションを提供します。AppSec チームの制御と可視性を一元化し、開発者が既存のワークフロー内でセキュリティ・テストの知見を活用できるようにすることで、開発中のソフトウェアが安全かつ効率的に展開されることを保証できます。
- This glossary was reviewed by Masato Yoshii.