DevSecOpsとは?DevOpsとの違いや導入のメリット・課題をわかりやすく解説
| 執筆者: | ニュートン・コンサルティング 編集部 |
Webサービスやスマートフォンアプリ提供では、継続的かつスピーディーな機能追加や改修、リリースが求められます。同時に品質も求められるため、開発と運用を組み合わせた「DevOps」の浸透が進みました。しかし、アプリ完成後のセキュリティ確保では手戻りが多くボトルネックとなってしまう点が課題です。
そこで注目されているのが「DevSecOps」です。DevSecOpsではプロダクトの開発プロセスからセキュリティを織り込むことで、セキュリティ性能を確保しながらハイペースなサイクルでアプリリリースを可能とします。
本記事では、DevSecOpsの概要やメリットについて解説します。
1. DevSecOpsとは
DevSecOpsとは、アプリケーションやサービス構築・提供におけるDevelopment(開発)、Security(セキュリティ)、Operations(運用)を組み合わせて作られた言葉です。開発と運用チームが密接に連携してアプリのリリースサイクルを早める「DevOps」に、開発時からセキュリティに関する設計や実装を組み込むことで、開発スピードと安全性を両立するアプローチです。
Webサービスやスマートフォンアプリの提供では、短いサイクルで機能の追加や改修、リリースが求められます。もちろん、安全性も同時に求められるため、セキュリティに関するテストや実装なども必要となります。
従来はアプリケーションの開発後にセキュリティに関するテストを行い、問題があれば対処するケースが一般的でした。しかし、セキュリティ上の問題が発覚した場合には手戻りが大きく、迅速なリリースサイクルを実現する妨げとなりがちです。
そこで要件定義や設計などの早期段階からセキュリティを組み込む「シフトレフト」という考え方に沿って、DevSecOpsが取り入れられています。シフトレフトとは、アプリケーションやサービスの開発において、要件定義や設計などの早期の段階で品質やセキュリティを確保する考え方で、大幅な手戻りを防ぐことにもつながります。
より具体的には、機能実装後にまとめてセキュリティ上の欠陥を確認するのではなく、ソフトウェア開発サイクルの中で脆弱性を早期に発見し、修正します。また、開発・運用・セキュリティの担当が分かれていることによる連携上の負担や手戻りも軽減させることが可能です。
DevSecOpsの実現には、CI(※1)/CD(※2)パイプラインへのセキュリティ対策の実装・統合、セキュリティルールの整備、開発プロセスの見直しなどを組み合わせます。
※1:Continuous Integration:継続的インテグレーション
※2:Continuous Delivery/Continuous Deployment:継続的デリバリー/継続的デプロイ
1.1. DevOpsとの違い
DevOpsは品質が高いアプリケーションを迅速なサイクルで継続的にリリースすることの実現を目的として、アプリケーションの開発(Development)と運用(Operations)のチームが密に連携をとる手法です。開発と運用のチームの連携強化や統合、CI/CDツールによる開発・テスト・リリースの自動化などが用いられます。
DevSecOpsは、セキュリティ確保についても開発とリリースのサイクルに組み込むという、DevOpsが拡張された考え方といえます。
2. 導入のメリットと課題
DevSecOpsをアプリケーション開発・運用の流れに導入することにより得られるメリットには以下が挙げられます。
主なメリットは、迅速なリリースサイクルとセキュリティ確保の両立です。また、脆弱性の早期発見と対処コストの削減も期待できます。さらには、DevSecOpsによるルール作りや工程管理を通じて、セキュリティ関連のコンプライアンス対応を進めやすくなる点もメリットです。開発・運用・セキュリティでチームが分かれている場合には、チーム間連携の円滑化が見込めます。
DevSecOpsには大きなメリットがありますが、その分導入においては課題も発生しやすい点に注意が必要です。
代表的な課題として、組織内での定着の難しさがあります。新たな取り組みへの違和感、変化への抵抗、責任の所在などが組織内での定着へのボトルネックとなる可能性があります。また、開発プロセスの中でセキュリティ対策を組み込むには、技術的なノウハウや知見も新たに必要になります。他にも、DevSecOpsには欠かせないセキュリティ人材の不足も多くの組織で課題となります。
3. DevSecOpsで使われる代表的なツール
DevSecOpsの実現に向けては、各種のツールの活用が前提となります。
まず、DevOpsでも利用されるCI/CDパイプラインを形成するツールはDevSecOpsでも必須です。CI、CDは、DevSecOpsを支える重要な構成要素であるためです。
これに加えて、セキュリティ性能を確保するために利用されるのが下記のツールです。
SAST(Static Application Security Testing:静的アプリケーションセキュリティ検査)は、開発の初期段階でソースコードを解析し、脆弱性や欠陥となり得る箇所を検出するツールです。また、OSSなどのライブラリを解析するSCA(Software Composition Analysis:ソフトウェア構成分析)と組み合わせて利用されます。
DAST(Dynamic Application Security Testing:動的アプリケーションセキュリティ検査)は稼働しているアプリケーションに対して疑似的な攻撃を行い、脆弱性を発見するテストです。攻撃者の視点から脆弱性となり得る点を突いて行うブラックボックステストの一つです。
IAST(Interactive Application Security Testing:対話型アプリケーションセキュリティ検査)は、アプリケーション内部で動作をモニタリングすることで潜在的な脆弱性を検出するテスト・ツールです。アプリケーションの動作を確認する他のテスト工程と並行して脆弱性を検出できるため、開発の初期段階から利用しやすい点が特徴です。開発の流れに沿ってセキュリティチェックを組み込めることから、DevSecOpsとも相性が良いといえます。
4. DevSecOpsの活用例
DevSecOpsが必要とされるシーンには、下記の例があります。
迅速なサイクルで高品質かつ高い安全性が求められるWebサービスは、セキュリティ自動化を含むDevSecOpsを活用する代表的なケースです。CI/CDを取り入れ、アジャイルで継続的な開発を行うプロダクトでは、DevSecOpsとの親和性が高いといえます。また、このWebアプリケーションには、クラウドネイティブな構成やAPI、マイクロサービスも含まれます。
変更とリリースが繰り返され、セキュリティが求められるのはアプリだけでなく、コンテナなどのインフラ環境もその対象です。特にIaC(Infrastructure as Code)を用いた構成管理は、DevSecOpsの運用に適しています。
法令や業界基準の変化への迅速な対応が求められるアプリケーション開発などでも、DevSecOpsは有効です。DevSecOpsに基づいて開発段階からセキュリティ要件を組み込むことにより、規制対応を進めやすくなります。認証方式・暗号設定・ログ要件の頻繁な変化と即時リリースが求められる金融・決済系アプリケーション、セキュリティ要件が厳しい医療・ヘルスケア系システムなどが代表的な適用例です。
BCPの観点では、安否確認や災害情報共有といった災害対策システムや社会インフラ系アプリケーションもDevSecOpsが適用される例の一つです。これは、システム変更時においても可用性や冗長構成、セキュリティ設定を同時に検証し「非常時であっても安全に変更できる状態」を維持する必要があるためです。
また、DevSecOpsの中でもSCAはサプライチェーン攻撃対策としても適用されます。SCAは開発プロセスの中でOSSやライブラリをスキャンするため、依存関係のリスクを継続的に確認できます。サプライチェーン全体でDevSecOpsの一環としてSCAを取り入れることにより、外部ライブラリ経由のサプライチェーン攻撃のリスク低減につながります。
5. まとめ:開発・運用・セキュリティを統合するDevSecOps
DevSecOpsは、アプリケーション・サービスの開発・運用・セキュリティを統合したアプローチです。セキュリティを確保しながら迅速なサイクルで継続的なリリースを実現することを目的としています。
また、DevSecOpsは開発の早期段階から品質・セキュリティを考慮した対策を行うことにより手戻りを防ぐ、シフトレフトの考え方に基づいています。実現には、各種ツールの活用やプロセス・ルールの整備などを組み合わせることが必要です。