開発と運用の一体化によって従来よりも迅速なコードリリースを可能にしたDevOpsチームにとって、次に克服すべき課題はセキュリティへの対処である。DevOpsプロセスとは対象的に、現在のセキュリティ管理作業の多くは、チームが通過すべきゲートとして完成あるいは管理されていないため、プロセス内に統合する必要がある。
Gartnerの分析によれば、DevOpsにセキュリティを導入するチームの数は、現在の40パーセントから、2022年には約90パーセントに達するものと予測される。DevOpsプロセスへのセキュリティの統合は、チームにとってさまざまなメリットがある。まず、アプリケーションが直面する脅威を理解することによって、データ漏えいやデータ紛失などの問題を低減するために必要な対策を、適切な場所で、適切なリスクに対して講じることが可能になる。セキュリティ専門家によるさまざまな面からのソフトウェア監視は引き続き必要だが、DevOpsの大規模かつ迅速な運用と、組織的な調整や技術面での制限のないことは、セキュリティにおいても重要な理念となる。優れたセキュリティツールは、コード記述やCI/CDパイプライン全般において継続的なフィードバックを常に提供し、テストや運用環境で実行されるコードに対する脅威を監視し理解する上で、DevOpsツールチェーンの他のアイテムと連動して機能する。
セキュリティの改善方法を模索するチームには、オンラインで公開されている教育素材を活用する、という方法がある。マネージャ向けトレーニングや技術担当者向けトレーニングなど、DevOpsにおけるセキュリティの役割を説明してくれる、さまざまな無償のトレーニングコースが利用可能だ。"トレーニングとセキュリティ教育は、パズルのもうひとつの重要な部分なのです"と、SecurityCompassトレーニングのプログラムマネージャであるCalvin Lo氏は言う。"アプリケーションのハッキングに関する脅威と弱点を理解することで、ソフトウェアプロフェッショナルは直接的な専門知識を獲得して、多くの共通的な問題の発生を未然に防ぐことが可能になります。"
GartnerのロードマップにはIAST(Intaractive Application Security Testing)というツールが掲載されている。APM(Application Performance Manager)がパフォーマンスの理解を助けるように、IASTは、開発およびテスト中のセキュリティに関する理解と対処を支援するソフトウェアである。特別な技術を持ったチームにコードを提出して、研究室内でのテストによって評価する代わりに、New RelicやDynatrace、AppDynamicsといったAPMツールでは、コードを変更する必要なくアプリケーションの挙動を継続的に監視する手段としてインストルメンテーション(Instrumentation)を使用する。これによって、パフォーマンスエンジニアリングの分野に関する特別な知識を習得しなくても、自分たちのデータを監視することが可能になるのだ。IASTのようなツールがあれば、セキュリティリスクに関する特別な知識がなくても、ツールを活用してセキュリティ上の障害を見つけることができる。結果として、これら新たなDevOpsツールは、ユーザ入力が検証されることなくSQLコマンドに到達したこと(SQLインジェクション)や、ローカルファイルを外部ユーザに提供するようなXMLパーザの設定が行われていること(XXE)、その他多くのタイプのリスクを検出することによって、セキュリティ上の問題の所在を明らかにしてくれるのだ。さらにIASTアナライザは、API内のコードを監視することによって、他のリソースに対するアプリケーションのフローのマッピングを支援し、脅威モデリングの自動化(automated threat model)の基盤としても機能する。
"DevOpsは、ソフトウェアの品質とパフォーマンスの提供方法を劇的に改善しました。DevSecOpsは、文化や人、プロセス、テクノロジを変える必要なく、これと同じメリットをセキュリティについて提供するものです。セキュリティ面で成功を収めたチームは、開発から運用までのプロセスを包含するようにセキュリティを拡張すると同時に、外部からのスキャンやファイアウォールといった従来の手段に代えて、IASTやRASPといったインストルメンテーションベースのアプローチを活用しています。"
Contrast SecurityのCTOであるJeff Williams氏は、Contrast Community Editionで無償のIASTモニタを提供している。
セキュリティDevOpsパイプラインで注目すべきツールとしては、他に次のようなものがある。
- ソフトウェアコンポジション解析(Software Composition Analysis) — アプリケーションライブラリ内の脆弱性や潜在的なライセンスの問題を特定する方法。
- カオスエンジニアリング(Chaos Engineering) — アプリケーションの内部ないし周囲に周期的なエラーや環境悪化を導入することによって、同様な予期しないエラーの発生に対するアプリケーションのレジリエンスを事前に管理する。
- ランタイムアプリケーション自己保護(Runtime Application Self Protection) — コードが実行しているコンテキストを活用して、実行中のアプリケーションが自身を保護する方法。このテクニックでは、ネットワークトラフィックを監視する外部的な保護とは違い、データ使用の有無や方法を対象とする。
DevOpsにセキュリティ・アズ・コードを統合する他のツールとしては、システム内の障害に対するレジリエンスや自動リカバリを設計する手法であるカオスエンジニアリング(Chaos Engineering)や、アプリケーション実行中において(攻撃だけではなく)実際の脆弱性に対する防御を行う方法としてのアプリケーション自己保護(RASP)などがある。
セキュリティツールチェーンの大きな問題は、スピード、スキルセット、正確性である。静的コード分析など一部のセキュリティツールは、非命令的なコードフロー(制御の反転など)のトラバースができないため、誤検出が非常に多い上に、速度も遅い。誤検出の選別には専門家が必要だが、ほとんどのソフトウェアチームはそのような人材を持っていない。その他のWeb Application Firewall(WAF)などのツールは、入力の評価に関する正確性に問題を抱えている。WAFは運用環境を監視してネットワークのトラフィックを取得することが可能だが、攻撃の発生を識別する上で必要となるアーキテクチャ的な識別能力が欠けている。結果として運用チームは、無関係なクローラ攻撃によるノイズを大量に受けることになる。また開発チームは、例えばSQLインジェクトションのブロックに関する統計情報がNo SQLを使用したアプリケーションには無意味であるように、攻撃に関する情報を改善に活かすことができないのだ。2014年、セキュリティ産業は、米国内の企業が1時間あたり5,000回以上の攻撃を受けているという統計を公表した。2018年の別のデータでは、1日に1,000回の攻撃があることが示されている。これらのような、DevOpsパイプラインにおけるネットワークベースのWAFレポートには、重要な視点が欠けている。それは、これらの攻撃の中で、防御側が対処すべき何かを実際に達成した攻撃がどれだけあるのか、という点だ。
セキュリティの改善と短期リリースサイクルの維持を両立したい開発者には、Contrast Community EditionやOWASP Dependency Checkといったツールに加えて、Gartnerサイクルを検討する、Microsoft SDLヵら他の推奨事項を確認する、などの方法がある。