「DevSecOpsという言葉を聞いたことがあるけど、どういう意味なのか?」

「DevSecOpsを導入したいけれど、どのような注意点があるのか?」

開発エンジニアやセキュリティエンジニア、フリーランスエンジニア等の方で、DevSecOpsというキーワードに注目しているが、具体的な内容や導入方法について悩んでいる方も多いでしょう。

最近のシステム開発におけるリリースサイクルの短縮により、DevSecOpsの注目度は徐々に高まってきており、実際に導入している企業も増えてきています。開発エンジニアやセキュリティエンジニア、フリーランスエンジニア等の方は、ぜひこの機会にDevSecOpsについて理解を深めておくことをおすすめします。

この記事では、DevSecOpsとは何かの紹介から、DevSecOpsの必要性、DevSecOpsの成功/失敗について紹介していきます。

開発エンジニアやセキュリティエンジニア、フリーランスエンジニア等の方でDevSecOpsに注目している方はぜひ参考にしてみてください。

1. DevSecOpsとは

DevSecOpsとは、「開発(Development)」、「セキュリティ(Security)」、「運用(Operations)」を組み合わせた言葉です。

従来から注目されていた「開発(Development)」と「運用(Operations)」を組み合わせた用語であるDevOpsに「セキュリティ(Security)」が追加されたものです。DevOpsは、開発チームと運用チームが連携しながらシステム開発をすることで、開発スピードを加速させ、信頼性の高いシステムをリリースさせるための開発手法です。このDevOpsにさらにセキュリティチームも連携し、DevOpsでの信頼性の高い開発スピードを活かしながら、セキュリティ向上も図ることができるのがDevSecOpsの特徴です。

具体的には、システム開発における要件定義、設計、実装、テスト、リリース、運用の各工程で、それぞれの工程に適したセキュリティ対策を組み込むことで、システム開発で脆弱性が含まれてしまうことを無くすことが可能となります。

2.DevSecOpsはなぜ必要なのか?

では、DevSecOpsはなぜ必要なのでしょうか。

最近のシステム開発では、リリースまでの期間が以前のシステム開発と比べて、大幅に短縮されています。従来は1年以上の期間をシステム開発にかけるのが一般的でしたが、近年は1年以内にリリースするものが多く、中には3か月程度でリリースするシステム開発も多くあります。

リリースするまでの期間が短く、リリース頻度も増えているため、開発チームだけではリリース納期を守りながら、セキュリティを確保することが難しくなってきました。このリリース期間やリリース頻度に対応するためには、DevOpsによる信頼性の高い開発スピードを実現し、さらにセキュリティ対策を講じる必要があります。

よって、DevOps+セキュリティであるDevSecOpsの必要性が高まってきています。DevSecOpsを継続的にシステム開発に適用することで、継続的インテグレーション/継続的デリバリー(CI/CD)の実現にもつながります。

3.DevSecOps実現にはシフトレフトが必要不可欠

DevSecOpsを実現させるためには、シフトレフトが重要となります。

シフトレフトとは、リリースのスケジュールを遅延させないために、システム開発におけるセキュリティに関わる工程を前倒しして実施するという概念です。リリースサイクルが短期間化している状況で、DevSecOpsを確実に実現していくためには、このシフトレフトを導入することが必要不可欠です。

一般的にシステム開発の工程で、セキュリティに関する作業やテストは後続工程で実施されるケースが多く、仮にテストで問題点が発覚すると、リリースに影響してしまう可能性が高いです。そのため、シフトレフトを導入し、早い段階からセキュリティを考慮したシステム開発を進める事で、リリース遅延のリスクを無くすことができます。

システム開発のスケジュールは、左から右に進むように記載されることがほとんどです。セキュリティに関する工程を前倒しするということは、スケジュール上では、セキュリティに関する工程が左側に移るということを意味しますので、シフトレフトと呼ばれるようになりました。

4.DevSecOps導入に失敗した例

DevSecOpsを導入しても残念ながら、うまくいかないケースもあります。失敗したのには必ず理由があり、失敗事例を多く知ることで、成功するために必要な情報を知ることができます。

ここでは、DevSecOpsを導入したが失敗してしまった事例をいくつか紹介します。まずは、失敗事例を知ることで、成功するために必要な情報を得ていきましょう。

ケース① SIer企業の場合

まず1つ目は、SIer事業をおこなっている会社でのケースです。

大規模プロジェクトでDevSecOpsを導入してシステム開発を実施しました。開発チームとセキュリティチームが連携しながらシステム開発を進めており、問題無いように見えました。しかし、開発工程において、本来、開発チーム側で判断すべき内容についても、セキュリティに関連する内容ということで、全てセキュリティチームに作業を投げる状態が続いてしまい、セキュリティチームがまわらなくなってしまい、スケジュール遅延を発生させてしまいました。

ケース② IT関連企業の場合

2つ目は、IT関連企業でのケースです。

DevSecOpsを導入した際に、セキュリティツールを利用して作業スピードの向上を図りました。ツールを利用して作業スピードの向上を図ることは、DevSecOpsを成功に導く上で正しい対応方法となります。

しかし、この企業のセキュリティチームでは「警告のしきい値以上の脆弱性は必ず即時に対応する」という既存ルールがありました。DevSecOps導入により、開発チームにもこのルールを適用した結果、開発工程ではすぐに対応する必要が無いような脆弱性も発見されることとなり、開発スピードが以前よりも格段に遅くなってしまいました。

5.DevSecOpsを成功させるには

では、DevSecOps導入を成功させるためには、何が必要になるのでしょうか。

DevSecOpsを成功させるには、単純に開発チームとセキュリティチームが連携するだけでは成功しません。

開発チームがセキュリティに対する知識を向上させ、セキュリティ対策の必要性を認識する必要があります。これらが不足していると、開発チームとセキュリティチームが連携してもうまくいかず、逆に開発スピードを低下させてしまい、失敗してしまうことがあります。開発チームの責任者が先頭に立って、開発チームのセキュリティ意識を強化することが成功への近道となります。

また、反対にセキュリティチームも開発チームの作業内容を理解しておく必要があります。どのようなステップで作業しているかを理解していないと、まだテスト不要な段階で、セキュリティテストを実施してしまったり、過剰なテスト項目でスケジュールを遅延させてしまったりするリスクがあります。

スケジュール状況を見ながら、開発チームの作業内容や作業量を把握して、そのタイミングにおいて適切な対応を検討していくことがセキュリティチームに求められます。

まとめ

DevSecOpsとは何かの紹介から、DevSecOpsの必要性、DevSecOpsの成功/失敗について紹介してきましたが、いかがでしょうか。

リリースサイクルの短縮により、DevSecOpsの注目度は徐々に高まってきており、実際に導入している企業も増えてきています。

DevSecOpsを導入して成功させるためにも、DevSecOpsについて理解を深めておくことをおすすめします。