多くの企業がコードの作成や保守を効率的かつ安全に行うためにDevOpsとDevSecOpsを使用していますが、両者の違いを理解するのに苦労しているケースも見受けられます。この2つのモデルはよく似ており、多くの共通点がありますが、まったく同じではありません。適切なモデルを選択するには、DevOpsとDevSecOpsの主な類似点と相違点について検討することが重要です。
DevOpsとDevSecOpsの理解
DevOpsは、ソフトウェア開発チームと運用チームを1つにまとめるコラボレーション型組織モデルです。DevOpsは、IT部門が期待に応え、効率を向上させるのに役立ちます。DevOpsアプローチを採用する組織は一般的に、スペシャリストではなくジェネラリストを雇用または育成します。そのため、ほとんどのDevOpsエンジニアは、コーディングとシステム管理の両方の知識と経歴を持ちます。
DevSecOpsは、SDLC(ソフトウェア開発ライフサイクル)全体にセキュリティを統合する手法です。DevSecOpsはDevOpsのムーブメントから生まれたもので、DevOpsと同じフレームワークを基盤としています。このモデルは、クラウドで作業する場合には欠かせません。クラウドでの作業は特定のセキュリティガイドラインやプラクティスに従う必要があるからです。
どちらのモデルも文化的な類似点を持ち、コラボレーションと自動化に主眼を置いているため、混同されがちですが、両者が対象としているビジネス目標は異なります。DevOpsとDevSecOpsの違いを理解するには、「DevSecOpsチームは必ずDevOpsを使用するのに対し、DevOpsチームは必ずしもDevSecOpsを使用するわけではない」と考えるとわかりやすくなります。
DevOpsは、より高い効率を達成し、生産的なコラボレーションの感覚を養うために、異なるチーム間のコミュニケーションを重視します。その目標は、サイロを打破し、これまでSDLCの遅延につながっていたボトルネックを軽減することにあります。
DevSecOpsは、コードが完成してからセキュリティに対処するのではなく、セキュリティを「シフトレフト」して開発の早期からセキュリティを意識することに重点を置いています。その目標は、セキュリティ上の懸念が見つかったら直ちに対処することで、デプロイのセキュリティとコンプライアンスを強化することにあります。
Schunk Group
このユーザー事例を読んで、国際的なハイテク企業であるSchunk Groupがクラウドネイティブなクラウドストライクセキュリティを使用して、そのITインフラストラクチャをどのように保護しているかをご覧ください。
ユーザー事例を読むDevOpsとDevSecOpsの類似点
DevSecOpsは、セキュリティプラクティスをSDLC全体に統合することによってDevOpsの基本原則を拡張します。これにより、セキュリティを後付けではなく開発プロセスの不可欠な部分として扱います。
どちらの方法論も、コラボレーション、自動化、継続的な改善、責任の共有を優先事項としていますが、DevSecOpsは特にセキュリティプラクティスをソフトウェア開発ライフサイクル全体に組み込むことに重点を置いています。
| 項目 | DevOps | DevSecOps |
|---|---|---|
| コラボレーション | DevOpsは、開発パイプラインの効率を向上させるために、開発チームと運用チームのコラボレーションに重点を置いています。 | DevSecOpsもコラボレーションを促進しますが、その対象範囲をセキュリティチームにまで拡大して責任共有の文化を育みます。 |
| 自動化 | 効率と信頼性を向上させるために、開発、テスト、デプロイプロセスの自動化を推進します。 | 同様に自動化に重点を置きますが、脆弱性スキャンやセキュリティテストなどのセキュリティプロセスも自動化の対象とします。 |
| 継続的インテグレーション/継続的デリバリー (CI/CD) | 迅速かつ信頼性の高いソフトウェアリリースを実現するために、CI/CDパイプラインの導入を奨励します。 | 同様にCI/CDプラクティスを導入しますが、安全なデプロイのためにセキュリティテストとコンプライアンスチェックをパイプラインに統合します。 |
| 文化の転換 | 所有者意識の共有、透明性、継続的な改善に向けた文化の転換を促進します。 | 同様の文化の転換を必要としますが、特にチーム全体のセキュリティ意識の向上とコラボレーションの強化に重点を置いています。 |
| 効率へのフォーカス | デリバリーの迅速化、効率の向上、市場投入までの時間の短縮を目指します。 | 同様に効率に焦点を当てますが、コンプライアンスとレジリエンスを確保するためにセキュリティ統合のレイヤーを追加します。 |
| 責任共有 | 品質とパフォーマンスに対する責任を開発チームと運用チームの間で共有することを奨励します。 | 共有責任の概念をセキュリティにまで拡張し、SDLC全体を通してセキュリティを全員の責任にします。 |
DevOpsとDevSecOpsの相違点
DevSecOpsモデルでは、安全で回復力のあるソフトウェアアプリケーションを提供するという目標を達成するために、開発、運用、セキュリティチーム全体のセキュリティ意識の向上とコラボレーションの強化に向けた文化の転換を図ります。セキュリティはプログラム開発の最前線に組み込まれ、SDLC全体にわたって一貫した保護を確保します。
| 項目 | DevOps | DevSecOps |
|---|---|---|
| 着目点 | 開発チームと運用チーム間のコラボレーションにより、ソフトウェアデリバリーを合理化します。 | DevOpsプロセスにセキュリティプラクティスを統合して、安全で回復力のあるソフトウェアデリバリーを実現します。 |
| 主な目標 | より迅速で効率的なソフトウェア開発とソフトウェアデリバリー。 | 継続的なセキュリティに重点を置いた、安全で回復力のあるソフトウェアデリバリー。 |
| セキュリティの統合 | 基本的なセキュリティの考慮事項がプロセスに統合されています。 | セキュリティプラクティスが最初から統合されており(つまり、「シフトレフト」)、セキュリティを共有責任とします。 |
| 自動化 | 開発、テスト、デプロイプロセスの自動化。 | セキュリティテスト、脆弱性スキャン、コンプライアンスチェックなどの自動化。 |
| チームの関与 | 開発チームと運用チームが連携します。 | 開発チーム、運用チーム、セキュリティチームが協力し合います。 |
| ライフサイクルの視点 | ソフトウェアの開発とデリバリー。 | SDLCの各段階に統合されたセキュリティ。 |
| 文化の転換 | 開発チームと運用チーム間のサイロの解消に重点を置いています。 | チーム全体のセキュリティ意識の向上とコラボレーションの強化に向けた文化の転換に重点を置いています。 |
| ツールとテクノロジー | CI/CDツール、設定管理、モニタリングツール、IaC(コードとしてのインフラストラクチャ)。 | セキュリティテストツール、脆弱性スキャナー、SIEM(セキュリティ情報およびイベント管理)システム。 |
セキュリティの優先順位を上げる
従来は、SDLCが数週間または数か月に及ぶこともあり、ソフトウェア開発の最終段階でセキュリティ上の懸念に対処する方が理にかなっていたかもしれません。しかし、今日の切り詰められたSDLCや継続的な機能開発を求める市場の要求を考えると、セキュリティパスを得るためにデプロイを遅らせることはもはや通用しません。
DevSecOpsは、「シフトレフト」によってセキュリティ上の懸念を開発環境の領域に移動します。これには複数の利点がありますが、その中でも特に重要なのは、セキュリティ上の懸念が常にエンジニアの念頭にあることです。これにより、小さなセキュリティ上の懸念が大きな問題に発展するのを阻止することができます。
DevSecOpsでは、エンジニアが早期に介入して開発時にバグやセキュリティ上の欠陥に対処するため、デプロイを停止したり、セキュリティの問題に事後に対応したりする事態を防ぐことができます。また、DevSecOpsは継続的な可視性も確保します。これは、クラウド環境を管理する上で大いに役立ちます。
DevSecOpsのベストプラクティス
- 文化を転換する。DevSecOpsは、サイロ化を解消するというDevOpsモデルの主眼をさらに一歩進め、セキュリティの責任を開発パイプラインに完全に統合します。そのためには、適切な文化の転換を育むという点で急進的な考え方が必要になるかもしれません。例えば、開発ミーティングにセキュリティチームを参加させる、IT部門の従業員にセキュリティプロセスに関するトレーニングを行う、開発者と運用担当者にセキュリティ上の懸念について直接やり取りするよう促すことを検討します。
- セキュリティプロセスを自動化する。自動化されたセキュリティツールは、脅威の検知と対応を迅速化し、このプロセスにおける開発者の悩みの種を軽減します。
- 適切なツールを統合する。DevSecOpsは主に文化と運用の考え方に基づくものですが、これらのプロセスを実行する適切なツールがあれば、導入を確実に進める上で大いに役立ちます。ここで、CrowdStrike Falcon® Cloud Securityのような信頼できるパートナーの出番となります。継続的モニタリングと単一のコンソールインターフェースを備えたFalcon Cloud Securityは、インフラストラクチャを定期的にスキャンして、侵害につながる可能性のある攻撃対象領域がないか探します。
- 反復して評価する。DevSecOpsを導入しても、すべての問題が直ちに解決されるわけではありません。これは文化の転換であり、万能薬ではありません。プロセスのパフォーマンスを定期的に評価し、それを反復することで、直面する課題に常に適応することができます。
- セキュリティをコードとして適用する。IaCフレームワークを使用してセキュリティをコードとして適用すれば、自動化によってセキュリティプロセスを合理化し、チームのメンバー全員が信頼できる唯一の情報源に基づいて仕事できるようになります。これは、コンプライアンスを維持し、侵害につながる可能性のある設定ミスを減らすのに役立ちます。
DevOpsからDevSecOpsへの移行
DevOpsからDevSecOpsに移行する際は、プロセスを変更する前に、この取り組みにチームメンバーを参加させる準備をします。これには、この移行の必要性と利点についての認識を全員で共有することが含まれます。セキュリティプラクティスを改善するツールは数多くありますが、移行を成功させるにはいくつかの落とし穴に注意する必要があります。
移行時の注意事項
DevOpsからDevSecOpsへの移行は、通常、セキュリティをシフトレフトする、つまりはセキュリティプロセスを開発の早い段階に移動させることを意味します。重要な最初のステップは、移行の必要性と、これがアプリケーション開発にどのように影響するかをチームメンバーに理解させることです。関係者全員がセキュリティに対する考えを改め、セキュリティを常に念頭に置くという意識を持ってこの必要な文化的転換を理解する必要があります。
移行を成功させるには、セキュアコーディングの実践について従業員をトレーニングする必要があります。これには、セキュリティチームと開発者や運用チームのコラボレーションが必要です。サイバーセキュリティ問題に関する教育は、開発者にとって重要な初期のステップです。
移行の準備
この移行を準備する際は、自社のビジネスに最適なセキュリティプラクティスの組み合わせを決定する必要があります。セキュリティテストの方法は数多くありますが、代表的なものを以下に紹介します。
- DAST(動的アプリケーションセキュリティテスト):チームが攻撃者の視点に立って脆弱性やセキュリティギャップを検出します。
- SAST(静的アプリケーションセキュリティテスト):コードを検査してセキュリティ上の欠陥を特定します。
- IAST(インタラクティブアプリケーションセキュリティテスト):DASTとSASTを組み合わせ、ソフトウェアを使用してアプリケーションのパフォーマンスを監視します。
- ランタイムアプリケーション自己保護 (RASP):リアルタイムデータを使用して、アプリケーションに対する攻撃が発生したときにそれを検知して解決します。
DASTの具体例の1つは、ペネトレーションテストです。ペネトレーションテスト(または倫理的ハッキング)は、サイバー攻撃をシミュレートすることで企業のサイバーセキュリティ能力をテストします。これはMITRE ATT&CK®フレームワークの戦術に従っています。
ペネトレーションテストにも複数のタイプがあります。内部ペネトレーションテストは、企業の内部ネットワークを評価します。Webアプリケーションペネトレーションテストでは、3段階のプロセスを使用してWeb上のアプリケーションを評価します。ペネトレーションテストは、他の多くのセキュリティプラクティスと同様に、侵害が発生する前に行う必要があります。
移行時に避けるべきこと
DevSecOpsは、セキュリティの観点からソフトウェア開発プロセスに強力なレイヤーを追加しますが、注意すべき点がいくつかあります。
- 誤ったツールを選択する。多くの種類のセキュリティアプリケーションがあります。コードと関連性があり、現在のユースケースと将来のユースケースの要件を満たすツールを選択することで、移行が困難になることを回避できます。
- セキュリティチームが参加していない。DevSecOpsプロセスは継続的であり、開発サイクルのすべてのフェーズで行われます。最初からセキュリティチームを参加させることで、セキュリティの一貫性を保つことができます。セキュリティの専門家は、企業に適したツールについてガイドできます。
- 品質よりもスピードを優先する。DevOpsで重視されるのはスピードです。DevSecOpsへの移行の最終目標は、パイプラインを安全で機能的なものにすることです。適切に統合されたセキュリティプラクティスには追加のステップが必要であり、その分時間がかかります。
- コードを監視しない。コードは絶えず変更されているため、DevSecOpsチームはコードを継続的に監視する必要があります。新しいライブラリ、パッチ、設定を導入すると新しい脆弱性が露呈する可能性があるため、継続的な監視は不可欠です。
このようなよくある落とし穴を回避することで、DevOpsからDevSecOpsにスムーズに移行できます。
クラウドストライクで移行する
DevSecOpsを導入すると、ソフトウェア開発パイプラインがより安全でコンプライアンスに準拠したものになり、最終的に製品の質の向上につながります。信頼できるプロバイダーを利用することは、移行の成功と失敗を分ける鍵となります。CrowdStrike Falcon Cloud Securityは、クラウドネイティブアーキテクチャ、単一のコンソール、自動化されたコンプライアンスツールによってパイプラインを保護します。