GitLabにより今年実施されたDevSecOpsの専門家を対象とした年次調査では、エンジニアリングチームとセキュリティチーム間の連携強化を妨げている可能性のある、組織文化に関する問題がいくつか明らかになりました。セキュリティ部門の回答者の過半数(58%)が開発チームに脆弱性の修正を優先させることに苦労していると回答しているほか、52%が形式的な作業によって脆弱性を迅速に修正する取り組みが遅れることが多いと回答しています。さらに、セキュリティ部門の回答者は、セキュリティの調査結果を理解することの難しさ、過度の誤検出、ソフトウェア開発プロセスにおいてテストが行われるタイミングが遅すぎるなど、自分たちの仕事に関連する具体的な不満についてもいくつか指摘しています。
DevSecOpsはエンジニアリングチームとセキュリティチーム間の連携の強化を保証するものですが、不満や食い違いがチーム間の溝として存在することも確かです。このような課題は、組織のセキュリティに対する考え方やチームの連携方法、セキュリティに割く時間の配分といった、より大きな問題の兆しとして発生しています。
脆弱性の終わらない悪循環からの脱出
脆弱性スキャンは潜在的な脆弱性をすべて表面化させますが、ソフトウェアパッケージに共通脆弱性識別子(CVE)があるからといって、それが攻撃者によってアクセス可能または悪用可能であるとは限りません。認証済み脆弱性スキャンが一般的になって以来、発見される脆弱性が数年間で飛躍的に増加しましたが、同時に、そうした脆弱性に対しトリアージとフィルタリングを行うセキュリティチームとデベロッパーの負担も増えました。
認証スキャンへの移行により多くの点でセキュリティプログラムの有効性が向上したことは事実ですが、結果として優先順位の低い問題の修正を迫られ、終わりのない悪循環にデベロッパーが陥ることにもなりました。本質的な修正につながらないパッチに労力を費やすと、脆弱性や悪用可能な欠陥にパッチを適用するという本来優先すべきタスクが見過ごされてしまいます。これが、現在発生しているセキュリティチームとエンジニアリングチームの分断の主な要因です。
それでは、組織はどのようにしてこれらの問題の根本原因に対処し、エンジニアリングチームとセキュリティチーム間のより良い連携を促進できるのでしょうか?ここでは、一般的なセキュリティに関する不満を根本的に防ぐための3つの方法をご紹介します。
1. ノイズを排除して精度の高いシグナルに集中
過剰な誤検出は、当社の調査でセキュリティ部門の回答者が挙げた不満の中で2番目に多いものでした。誤検出は明らかに問題ですが、多くの場合、根本的な原因は脆弱性の管理にあります。
セキュリティの検出結果は高精度である必要がありますが、組織において多くの誤検出が発生する場合、そうした高い精度を実現する対策を講じていない可能性があります。組織は、セキュリティ対策の焦点を重要なものに絞り込む必要があります。そのため、従来の静的アプリケーションセキュリティテスト(SAST)ソリューションでは不十分な可能性があります。SASTは強力なツールですが、結果が管理できない場合や適切なコンテキストがない場合は、その価値の大部分を発揮できません。最も効果的にSASTを活用するには、他のセキュリティや開発ツールとシームレスに連携させて、デベロッパーがアクセスできる状態である必要があります。
もう1つの問題として、ほとんどのスキャンツールでは、脆弱性の発見を理解するためのコンテキストの幅が非常に狭いことが挙げられます。これは、セキュリティの脆弱性を説明するAI搭載機能など、AIが役に立つ分野の1つです。
2. 技術スタックを最小限に抑え、アタックサーフェス(攻撃対象領域)を最小化する
重要な事項に集中すべきなのはセキュリティテストだけに当てはまることではなく、組織がソフトウェアを構築する方法に対しても同様のアプローチを行う必要があります。
AIはソフトウェア開発プロセスの簡素化に役立つはずのものですが、当社の調査によると、多くの組織ではまだまだ道半ばであることが示唆されています。実際、AIを使用している回答者は、AIを使用していない回答者よりもツールチェーンを統合したいと考える傾向が非常に高く、異なるAIモデルを実行するさまざまなポイントソリューションの急増により、複雑さが減るのではなく、むしろ増大する可能性があることが示されています。
増大し続ける技術スタックの複雑さがセキュリティに関する不満の大きな原因となっています。大規模で多面的なソフトウェアシステムを構築する場合、ある程度複雑になることは避けられません。ただし、メンテナンスが困難なコードや冗長な依存関係など、非最適な設計を決定することにより生じる複雑さを回避する措置は講じる必要があります。不要な複雑さがある状態では、アタックサーフェス(攻撃対象領域)が拡大され、選別し、優先順位を付け、対処しなければならないセキュリティスキャン結果が増加してしまいます。
組織はソフトウェアの最小化という観点から開発を進める必要があるのです。これはつまり、どのツールを採用するか、また何をコードベースに組み込むかを決定する上で意図的に取り組むべきということです。そうすれば依存関係を最小限に抑え、ソフトウェアサプライチェーンのセキュリティを向上させ、スキャナーのノイズを減らし、重要でない問題の解決にかかるデベロッパーの負担を軽減できます。
3. 「舗装された道路」アプローチをプロセスに組み込む
ソフトウェア開発ライフサイクルにおいて、遅すぎるタイミングでセキュリティテストが行われることも、アンケート回答者により明らかになった最大の不満の1つでした。脆弱性の検出の遅れにより出荷が遅れた場合、チームは不満を感じるかもしれませんが、多くの場合、その脆弱性をもっと早く検出することはそもそも不可能だった可能性があります。それでも、簡単に配備でき、再利用可能なセキュリティコンポーネントを運用して不確定要素や潜在的な脆弱性を制限することは可能です。
チームは再現可能なユースケースに基づいてテスト済みで信頼性の高い設計パターンを採用することで、開発後期に問題が検出されることのないようにできます。これは「舗装された道路」アプローチと呼ばれます。「舗装された道路」とは、チームが安全なアプリケーションをより効率的に構築するために従うべき厳選されたツール、プロセス、コンポーネントのセットを含む推奨されるプロセスです。たとえば、GitOpsを使用して、すべてのワークロードに大規模にデプロイされる、適切に設計・テストされたInfrastructure as Code(IaC)をバージョン管理してデプロイできます。
「舗装された道路」アプローチを採用することで、ある程度の柔軟性が失われる可能性はありますが、最終的にはエンジニアリングチームの運用負担や手戻りが軽減され、セキュリティが高まります。これはセキュリティチームと開発チームが協力して取り組む必要があります。セキュリティチームは「舗装された道路」の設計を支援できますが、コードベースの一部としてそれらを運用、メンテナンスするにはエンジニアリングチームの力が必要となります。
セキュリティはドメインであり、チームではない
セキュリティはすでにエンジニアリングチームも実践するものとして移行されていることが判明しており、今後も両者の境界が曖昧になると予想されます。しかし、AIの急速な導入とそれに伴うソフトウェア開発の加速(調査回答者の66%が昨年の2倍またはそれ以上の速度でソフトウェアをリリースしていると回答)により、セキュリティ上の利益を最大に得られるように最適化されたシステムとフレームワークを確立することが、組織において重要になります。したがって、開発チームとセキュリティチームの間に文化的な断絶があることが問題のすべてではないのです。コラボレーションの文化を育むことは不可欠ですが、セキュリティチームとエンジニアリングチームは、既存のコードベースの最適化や、組織全体の技術チームがシームレスに採用できるスケーラブルなエンジニアリング中心のソリューションの構築など、ソフトウェア開発の基本的な側面を協力しながら再考する必要もあります。
デジタル時代のアプリケーションセキュリティ
世界各地のDevSecOpsの専門家5,000名を対象に行った調査結果を読み、組織がアタックサーフェス(攻撃対象領域)の増加にどのように取り組んでいるか、またセキュリティとAIに対する姿勢がどのように変化しているかをご覧ください。
レポートを読む