DevOpsやシフトレフトとの関係、必要なツールを解説

DevSecOpsとは?

#エンジニアブログ

 

DevSecOpsは、DevOpsで提唱された開発チームと運用チームの連携を拡張し、セキュリティチームも含めた開発体制のことを指します。最近、DevSecOpsが注目されているのは、サイバー攻撃が非常に増えたためです。以前はセキュリティはソフトウェアにとって補足的なものでしたが、現在は必要不可欠なものへと変わっています。

 

DevSecOpsでは、ソフトウェア開発サイクルの初期からセキュリティ開発・テストを導入し、セキュリティを高めると同時に、プロダクトのリリースサイクルを早め、品質を向上することも目的としています。ここでは、DevSecOpsの基本的なコンセプトや注目されている理由、シフトレフトの概念との関係や、必要なツールなどを紹介します。

 

DevSecOpsのコンセプト

基本となるのは「DevOps

DevSecOps(デブセクオプス)はDevOps(デブオプス)が基本となります。そのため、まずDevOpsについて振り返りましょう。

 

DevOpsとは、開発(Development)チームと運用(Operations)チームが緊密に協力・連携するソフトウェア開発手法のことです。従来の開発手法では、開発チームと運用チームが立場の違いから対立することがしばしばありました。そこで、以下の4つのコンセプトに則って連携をスムーズにし、柔軟でスピーディーなソフトウェア開発を目指します。

 

DevOpsを構成する4つのコンセプト

1. 継続的インテグレーション(CI)

2.継続的テスティング(CT)

3.継続的デリバリ(CD)

4.継続的モニタリング(CM)

 

従来、開発は開発チームが行い、運用は運用チームが行っていました。しかし、DevOpsでは、開発に携わるエンジニアが運用の役割も担うことがあります。そのため、新しいアイデアをソフトウェアに実装するまでの時間が短くなる、バグにスピーディーに対応できるようになる、など、結果的としてインフラの安定性が向上するようになります。

 

以下の記事で、DevOpsについての詳しい解説をしています。DevSecOpsへの理解を深めるには、DevOpsのことを知るとスムーズです。ぜひ、ご覧ください。

 

 

DevSecOps=DevOps+セキュリティ

DevSecOpsとは、DevOpsにセキュリティの概念が融合されたものです。DevOpsを構成する4つのコンセプトに加え、「継続的セキュリティ(CS)」が追加されます。

 

DevSecOpsでも、開発チームがセキュリティテストに積極的に関わり、ソフトウェア開発のライフサイクルすべての段階でセキュリティ開発とテストが行われます。これらは一般的にセキュリティツールを用いて自動化され、特にDevOpsにセキュリティツールを統合することを「SaC(Security as Code)」と呼びます。

 

DevSecOpsの範囲は、アプリケーション開発そのものだけでなく、サーバーやネットワークなどのインフラストラクチャまで広く関わります。こうした仕組みによってり、従来より少ない負担でセキュリティの強化を行えるようになっています。

 

DevSecOpsが注目を集める理由

サイバー攻撃の増加

ネットワークを通じ、企業のサーバーやパソコンからデータを窃盗したり、改ざんしたりして、破壊活動を行うサイバー攻撃は、ここ数年で一層激しさを増しています。

 

情報通信研究機構の発表では、2021年には約5,180億パケットのサイバー攻撃が観測されたといいます。10年前の2012年はわずか約78億パケットでしたので、この10年で実に約72倍にも膨れ上がっており、世界での被害は約660兆円にも及ぶという計算もあります。

 

こうした状況から、今後ソフトウェア開発において、セキュリティを無視することは難しくなっています。その中で、効率的なソフトウェア開発手法として注目を集めているのがDevSecOpsなのです。

 

出典:NICTER観測レポート2021の公開|情報通信研究機構

 

品質向上のための概念「シフトレフト」が不可欠

シフトレフト(Shift-left)とは、開発の早い段階から、頻繁にテストを行うべきと考える概念のことです。すべての開発工程にテストプロセスを組み込むことで、品質を改善していく狙いがあります。

 

DevOpsでは、このような「シフトレフト」の概念が不可欠と考えられています。DevSecOpsはまさにシフトレフトの概念を体現した開発手法といえ、品質を損なわずにテスト工程を前倒しする(左へ移す)ことが可能です。

 

シフトレフトすることで、リリース直前に重大なバグや脆弱性が見つかることが少なくなり、プロダクト品質の向上や開発期間の短縮が期待できます。

 

 

DevSecOpsのメリット

 

プロダクトの品質とセキュリティが向上する

DevSecOpsは、今まで以上にプロダクトの品質とセキュリティの向上に重点を置き、セキュリティの開発とテストを早い段階からスタートします。ソフトウェアとセキュリティの開発を並行して行うため、根本的な脆弱性などを早期に見つけられます。

 

また、DevSecOpsではセキュリティテストなどの自動化も積極的に利用します。開発チームがコードを書いていくと同時にテストが実行されるため、より確実にセキュリティに関する問題を発見し、各フェーズで修正を行えます。

 

こうした積み重ねにより、リリース前に重大なインシデントが起こる可能性が少なくなり、ヒューマンエラーのリスクも削減できます。結果として、セキュリティを含めたプロダクト全体の品質向上が見込めます。

 

リリースサイクルが早くなる

DevOpsでは、セキュリティに関する開発やテストは、開発の終盤に行われるケースがほとんどでした。その間、開発チームはセキュリティの作業が終わるまで待つ必要があります。さらに、リリース直前に大きなバグや脆弱性が見つかった場合、リリースは必然的に先送りされます。

 

一方、DevSecOpsは開発の各フェーズでセキュリティに関する開発とテストを同時に行います。そのため、リリース前にセキュリティの開発・テストのために開発チームが待つこともなくなり、リリース直前にセキュリティに関わるバグや脆弱性がまとめて発覚し、急いで修正対応をする必要もなくなります。その結果、リリースサイクルが早くなるのです。

 

中長期的なコストを抑えやすい

システム開発で発生する問題は、後の工程になればなるほど修復に多くの時間が必要になります。DevSecOpsであれば、自動化ツールなども用いてセキュリティの問題を各フェーズで発見できるため、早い段階から解消することが可能です。

 

従来の方法で、仮にリリース直前に重大な脆弱性が見つかった場合でも、(システムの規模にもよるものの)一時的に人的リソースを投入することで対応できるでしょう。しかし、それには多くのコストがかかります。

 

DevSecOpsであれば、このように突発的に人的リソースを集中させる必要がなくなり、リリース時期を伸ばさざるを得ない状況に陥る可能性も少なくなります。そのため、長い目で見ればコストを抑えられるようになり、リーズナブルな開発方法ともいえるでしょう。

 

DevSecOpsで必要な自動化ツール

DevSecOpsでは、さまざまな自動化ツールが欠かせません。ここでは、セキュリティテストを自動化&スピード化する、代表的なASTツール(アプリケーション・セキュリティ・テストツール)を紹介します。

 

SAST:静的アプリケーション・セキュリティ・テスト

SAST(静的アプリケーション・セキュリティ・テスト)は、プログラムのソースコードをスキャン・分析して、コーディングのエラーや、セキュリティの脆弱性を検出するツールです。

 

ソースコードのセキュリティ面での問題を早期に発見し、後々までセキュリティ的な欠陥が残らないようにするため、開発初期から機能コンポーネントを実行せずに行うことが推奨されています。

 

DAST:動的アプリケーション・セキュリティ・テスト

DASTは、外部からの攻撃をシミュレーションし、ソフトウェアに悪意のあるデータを挿入するなどして、アプリケーションの脆弱性をテストするツールです。Webアプリケーション脆弱性スキャナと呼ばれることもあります。

 

アプリケーションが静止している状態でコードをスキャンするSASTに対して、DASTはアプリケーションが動作している状態でスキャンを実行します。これにより、アプリケーション実行時に発生する問題を特定でき、さらに、サーバー構成や認証の問題も検知できます。

 

IAST:インタラクティブアプリケーション・セキュリティ・テスト

IASTは、SASTとDASTの機能を部分的に兼ね備えるツールです。テスト中にバックグラウンドで動作し、アプリケーション実行時の動作を解析します。

 

IASTはSASTよりもずっと偽陽性率が低く、本来必要ないアラートを減らします。また、DASTと異なり、問題のあるコードを特定して知らせることもできます。これらの特徴により、開発チームの疲労を軽減できます。

 

また、IASTはテスト結果をリアルタイムに確認できるため、今までよりフィードバックが早くできるようになり、開発スピードの向上も望めます。

 

SCA:ソフトウェア・コンポジション解析

SCAは、オープンソースやサードパーティー製コンポーネントの脆弱性を検知するためのツールです。対応できる範囲は、ソフトウェアライセンスやサポートが終了したパッケージにまで及びます。

 

近年はオープンソースを利用して、開発コストを圧縮するケースが増えていますが、セキュリティの観点から考えるとコストが高くつくケースもあります。そこで、SCAを用いて開発初期から脆弱性を確実に発見することが大切になります。

 

まとめ

ここでは、DevSecOpsの基本的なコンセプト、注目されている理由、必要な自動化ツールなどを解説してきました。

 

ここ数年で、サイバー攻撃は激しさを増しており、ソフトウェアのセキュリティ対策が重要性を増していくことは確実です。そんな中で、プロダクト品質とセキュリティ強度を上げ、コストを抑える効果をも見込めるDevSecOpsは、スタンダードな開発手法のひとつとして、より注目を集めることでしょう。

関連する記事