開発手法のキーワードに「DevOps(デブオプス)」があります。開発のチーム(Development)と運用のチーム(Operations)が互いのミッションを補完することにより、ビジネスにおけるシステムの有用性を高め、迅速かつ確実な実装と運用を実現する概念です。
このDevOpsから派生して「DevSecOps(デブセックオプス)」が注目されるようになりました。SecはSecurityであり、DevOpsによる開発と運用にセキュリティを加えた概念になります。
ここではDevSecOpsが重視されるようになった理由、DevSecOpsのポイント、DevOpsとの違いについて解説します。
なぜDevSecOpsが重視されるようになったのか
まず、DevSecOpsが重視されるようになった理由を2つの側面から考察します。第1にDevOpsの延長線上にあるニーズの側面、第2にクラウドの浸透によりセキュリティ分野で自動化など技術革新が行われた側面です。
DevOpsを究めるとセキュリティ対策は必須になること
第1の側面として、DevOpsを推進した場合、セキュリティ対策は避けられない課題として浮上することが挙げられます。
DevOpsは、アジャイルとともに検討されることが多い手法です。というのは、変化の激しい時代にはシステム開発の工数の削減と開発期間を短縮して、ビジネスを加速させることが重要になるからです。
開発期間の短縮とシステムの品質向上は相反する目的であり、この2つを同時に実現するためには、OSSやAPIなどの効率的な活用が求められます。
ところが、開発期間の短縮と効率化、システムの品質を優先すると、セキュリティの脆弱性対策のための余力がなくなります。多くのセキュリティの問題は運用時に明らかになりますが、DevOpsのライフサイクルで開発時にフィードバックする場合、開発スピードを犠牲にしなければなりません。
したがって、あらかじめセキュリティを考慮した開発と運用のライフサイクルが必要になります。これがDevSecOpsの登場した直接的な背景と考えられます。
クラウドによりセキュリティ分野の技術革新が進展したこと
第2の側面は、企業が展開するビジネスや業務管理などのシステムがクラウド化し、セキュリティの重要度が高まったこと、クラウドによるセキュリティ管理と自動化が進んだことです。
DevOpsの概念以前には開発と運用が分離していたように、かつてIT業界において、セキュリティは分離したソリューションとして位置付けられていました。
もちろん開発時にセキュリティを考慮したシステムを設計し、その前提のもとに運用や保守を行わなければなりません。しかしながら、セキュリティを徹底しようとすると開発の制限が生じるとともに、工程が増えてオーバーヘッドになります。また、運用時にセキュリティ対策は煩雑な作業負荷として上乗せされ、コストも生じます。
しかし、クラウドネイティブなアプリケーションが増加し、開発環境のリモートワークが進展することによって、構築するシステムや開発や運用においてセキュリティは重要かつ必須の位置付けになりました。一方、クラウドを利用すると統合されたコンソールでセキュリティの管理が可能になり、処理の自動化を実現します。セキュリティ対策の負荷が軽減されるわけです。
したがって、システムの開発や運用に加えて、以下のようなセキュリティ要件が求められるようになりました。
- サステナブル(持続的)なビジネスを実現する堅牢なセキュリティ
- クラウドや仮想化により高度なセキュリティを迅速に実装すること
- 自動化された脅威の検出、不正の監視、レポーティングで管理負荷とコストを軽減
こうしたニーズを可能にしたのは、以下のような技術革新です。
- クラウドに最適化されたファイアーウォールや監視ツール
- 膨大なログを収集と蓄積する仮想化されたストレージ、人工知能による解析
- 監視や不正アクセス遮断、ポリシーの実行などの自動化
- 詳細なレポーティング、管理コンソールによる可視化
セキュリティの重要度が高まると同時に管理負荷が軽減されると、開発や運用と分離せずに、包括的なセキュリティ対策が可能になります。つまり、セキュリティ対策のDevOpsが実現できるようになりました。
こうして、クラウドネイティブなアプリケーションの増加、リモート環境の進展、ツールの拡充などによって、現在、セキュリティ対策は開発チームや運用チームの重要なミッションに位置付けられています。
DevSecOpsのポイント
実際にDevSecOpsで開発と運用のライフサイクルを回転させるには、以下のような3つのポイントに留意する必要があります。
ソースコードとアプリケーションのセキュリティを確保すること
ソフトウェア開発において、オープンソースのコンポーネントを利用することが一般的です。したがってソースコードに対して、脆弱性診断、静的アプリケーションセキュリティテスト(SAST)、ソフトウェアコンポジション解析(SCA)を徹底する必要があります。
またアプリケーションに関しては、動的アプリケーションセキュリティテスト(DAST)のほか、代表的なクロスサイトスクリプティング(XSS)をはじめ、あらゆるサイバー攻撃を想定してセキュリティに問題がないか確認します。サイバー攻撃は、常に複雑かつ巧妙な新しい手段が登場するため、最新の情報に基づいて対処します。
開発および運用チームの生産性を保つこと
セキュリティの脅威を発見した後には、迅速な対応が求められます。ところが膨大なログを人力で解析していると手間がかかり、誤検知などが生じた場合は、開発チームと運用チームともに疲弊をもたらします。セキュリティ対策によって、開発と運用のサイクルを停滞させてしまうことは問題です。自動化や人工知能をうまく活用して、チームの負荷を軽減するとともに素早く対応することが鍵になります。
ルールやポリシーの設定も重要です。セキュリティを推進している団体の標準的なポリシーを利用したり、カスタマイズすべきポリシーを明確にしたり、システムはもちろん組織体制を整備しておくことがポイントです。
継続的インテグレーション(CI)と継続的デリバリ(CD)
DevOpsにもいえることですが、DevSecOpsでは開発と運用のライフサイクルを回転させること、循環させることに意義があります。そこで重要になるのが、継続的インテグレーション(CI)と継続的デリバリ(CD)です。
開発者はソースコードを頻繁に共有リポジトリにマージし、ビルドとテストの実行を自動化します。これが継続的インテグレーションですが、さらにリリース全体を自動化することが継続的デリバリです。この仕組みにセキュリティ対策を組み込みます。
DevSecOpsとDevOpsの違い
端的に述べてしまえば、開発と運用を融合させたDevOpsにセキュリティ対策が入っているかどうかがDevSecOpsとの違いですが、もう少し本質的な違いを考察します。
DevOpsがもたらす主要な効果は、システムのビジネス稼働までの時間短縮、品質の向上、コスト削減でした。もちろんDevSecOpsにおいても同様もしくはそれ以上の効果が求められます。しかし、経営面から価値が加わることが重要といえるでしょう。
経営面の価値とは、BCP(Business Continuity Plan:事業継続計画)の面から経営に与えるメリットです。
DevOpsによって短期間で品質の高いアプリケーションを開発したとしても、サイバー攻撃によってサーバーがダウンしたり、情報が漏えいしたり、セキュリティ上の脆弱性の問題があった場合はビジネスに大きな損害を与えます。深刻な問題であれば、経営を持続することが困難になるかもしれません。
セキュリティは、サーバー攻撃や不正などの問題が生じたときの保険としてとらえられてきました。しかし、セキュリティリスクが高い時代においては、DevSecOpsを採用することによって、企業は大きな価値を得ることができます。
まとめ
DevSecOpsとDevOpsは概念ですが、概念を実現する具体的なソリューションや技術があります。概念だけ、技術やソリューションだけでは不十分です。DevSecOpsで開発と運用を行い、概念と具体的な開発および運用の両輪を回転させて、企業やビジネスの価値を高めることが大切といえるでしょう。