現代の技術時代において、様々なプロセスに対応するため、さまざまな考え方や手法が採用されています。各手法が何に重点を置いているかを理解することは、貴社にとって最適な選択をする上で重要です。DevOpsのような特定の手法に注力する場合でも、現場の専門家によって重要な側面の解釈は異なることがあります。DevOpsの概念をさらに分解すると、SecOpsやDevSecOpsといった現象が見えてきます。これらは経験豊富な上級者でさえ混乱する場合がありますが、開発工程の自動化、アプリのセキュリティ、全体の効率向上に不可欠な理解です。
本記事では、DevOpsとDevSecOpsの類似点と相違点、そしてそれぞれの概念の活用方法について解説します。
DevOpsとDevSecOpsの関係に入る前に、まずDevOpsの可能性を理解する必要があります。つまり、DevOpsとは何であり、どのように革新的な技術に影響を与えるのかという点です。
DevOpsの定義は様々ですが、ツール、手法、プロセスの組み合わせにより、組織が高品質なサポートとアプリをより早く提供できる仕組みとされます。
かつては、IT運用(ITOps)がシステムのインフラやネットワークなどの基盤を物理的に設計・構築していました。この手作業による作業は、コードの検証や展開までに数日かかることがあり、プロジェクトを予定通りに進める上で大きな障害となっていました。しかしDevOpsでは、全工程が自動化され迅速に進みます。開発チームとITOpsチームが連携し、ボトルネックを解消することで、アプリやソフトウェアを長い待機時間なしに作成・展開でき、コードが即時に実行されるため不要な待機時間が大幅に削減されます。
DevOpsの仕組みを取り入れるメリットには以下が含まれます:
SecOpsは、セキュリティチームとITOpsチームを十分に統合し、セキュリティ作業を自動化する手法です。要するに、組織のセキュリティ業務全体を自動化するという考え方で、セキュリティ作業が単にセキュリティチームだけでなく、製品ライフサイクル全体で重要な役割を果たすようになります。
DevOps同様、SecOpsもセキュリティチーム、開発者、デベロッパー間の協力を強化する思想です。セキュリティに関するあらゆる要素が統合され、リソースが共有されることで安全性が向上します。セキュリティチームは、製品開発過程でリスクを早期に把握し、それが製品の円滑な運用や顧客に与える影響を判断することが可能となります。
SecOpsとAgileやDevOpsなど他の開発手法との違いは、セキュリティを一層強化し、チーム全員が組織のセキュリティに主体的に関与する点にあります。開発者はコードの改竄や不正アクセスの試みを報告し、営業担当は現場での怪しい動きを伝えることができます。SecOpsの対策は、問題が深刻化する前にリスクを特定、報告、解決することを目指します。
SecOpsの大きな利点は、業務が複数の部署に分散され、リスクへの脆弱性が低減される点です。これにより、セキュリティチームは孤立せず、特にアプリや開発工程に関わる他部署と密に連携できるようになります。
SecOpsのその他のメリットには以下が含まれます:
簡単に言えば、DevSecOpsはDevOpsとSecOpsを組み合わせたもので、両者の特徴を兼ね備えています。DevOps同様、協業とコミュニケーション戦略を採用してより良い成果を目指し、開発工程に自動化されたセキュリティ対策を組み込む思想です。これにより、セキュリティ手法が製品提供において重要な役割を果たします。
DevSecOpsを採用すると、開発者は開発サイクルの各段階で様々なテストを実施する必要があります。コード作成時にテストが行われ、展開や製品制作段階でさらにセキュリティテストが実施されます。いずれかの段階でテストに失敗すれば、コードは修正のために開発者に戻されます。このプロセスにより、見逃されたセキュリティ上の欠陥が発生するリスクが排除されます。
DevSecOpsの導入により、重大な脆弱性が即座に発見され、全体のセキュリティ体制が向上します。また、コード監査の自動化により、開発者向けのセキュリティ対策や基準が強化され、開発コストの削減と製品価値の向上が期待されます。こうした各工程での改善が積み重なることで、組織全体の協力体制が確立されます。
開発工程でのセキュリティ自動化が進むことで、遅延や攻撃が減り、エラーも最小限に抑えられます。システムが円滑に流れ、管理すべきボトルネックも減少。開発サイクル内のリソースは、主要な目標達成に専念できるようになります。DevSecOpsは、どの開発プロセスにも有益な追加要素と言えるでしょう。他の主なメリットには、以下が挙げられます:
全く異なる概念であるにも関わらず、DevOpsとDevSecOpsには多くの共通点が見られます。これらの類似点も、DevSecOps採用のメリットのひとつと言えるでしょう。
協働文化:開発サイクルには複数のチームや部署が関与し、それぞれが製品の作り方について独自の見解を持っています。各部署の方針により優先事項は異なり、セキュリティチームと営業部門が意見を異にすることもありますが、DevSecOpsの導入によりこうした意見の相違や対立が調整されます。
DevSecOpsは、全ての関係者が共通の目標に向かって連携する協働文化を促進します。各部署の優先事項が十分に考慮され、次の段階へ進む前に対処されるため、各チームは重要な課題や脆弱性を早期に特定することができます。また、DevOpsは全体の開発プロセスを円滑に進めるため、リソースの連携を重要視しています。
自動化:これら二つの概念の最も興味深い共通点は、自動化の導入にあります。DevOpsは開発プロセスを自動化することで、開発者がコードテストのために何日も、場合によっては何週間も待つ必要をなくし、迅速な成果と革新的な問題解決を実現します。この自動化により、作業の遅れやボトルネックが大幅に防がれます。
DevSecOpsは、セキュリティ対策を開発サイクルに自動組み込みする仕組みです。セキュリティチェックが最後に追加されるだけでなく、各工程で実施されるため、問題が深刻化する前に脅威の発見と対応が可能となります。
継続的モニタリング:どちらのプロセスも、組織で行われる全ての開発状況を継続的に監視します。DevOpsはシステム全体の自動化を監視し、迅速なデプロイを実現する一方、DevSecOpsはアプリに統合されたセキュリティの監視に注力します。
これらにより、全工程の効率と効果が一体となります。
両者を比較すると、いくつかの共通点がある一方で、重要な相違点も見受けられます。SecOpsは作業工程にセキュリティ対策を組み込むことに重点を置きますが、DevSecOpsは開発チームとセキュリティ・ITOpsチームとの緊密な連携を重視します。
これらの思想の共通点は、敏捷性と協働文化にあります。手作業の工程を自動化と効率化に置き換えることで、コミュニケーションやセキュリティが向上し、業務が各部署に分散されます。2021年のセキュリティリスクの増大を踏まえ、プロセスにセキュリティを組み込むことは不可欠であり、自動化されたセキュリティは組織にとっても多くのメリットと健全性向上に寄与します。
DevOpsとDevSecOpsの違いは何でしょうか?
DevOpsと同様、DevSecOpsも独自の文化や理念と捉えることができます。両者の主な違いは、DevSecOpsがDevOpsプロセスにセキュリティ対策を組み込んでいる点にあります。DevOpsエンジニア同様、DevSecOpsエンジニアにとっても協力体制は不可欠で、セキュリティチームが問題管理や適切な対処を行う能力が製品提供において重要な役割を果たします。DevSecOpsは、アプリを複数のセキュリティ原則に基づいて安全に仕上げるための概念です。
以下は、DevOpsを特徴付けるプロセスです:
次に、DevSecOpsの柱となるプロセスは以下の通りです:
DevOpsからDevSecOpsへ移行するには、ソフトウェアの安全性を確保するための技術やプロセスを十分に理解する必要があります。ここでは、その方法と必要な要素について紹介します。
最初のステップは、動的アプリ セキュリティテスト(DAST)ツールの採用です。動的解析ツールは脆弱性検査を行い、SQLインジェクションなどの脆弱性を検出します。製品開発工程にこれらのツールを組み込むことは、DevSecOps実践への一歩となります。
Runtime Application Self-Protection (RASP) は、実行時に利用されるセキュリティ対策で、アプリの挙動を監視し継続的なセキュリティチェックを実施します。
Intelligent Application Security Testing (IAST) は、実行時にアプリ内部から解析し、メモリ上のコード実行を監視することで、脆弱性につながる特定の状況を検出し、無害かどうかもチェックします。
Static Application Security Testing (SAST) は、コードを実行せずに検査する手法です。SASTはソースコード中の潜在的な脆弱性を発見し、様々なゼロデイ攻撃の可能性を防ぐのに役立ちます。Regular Vulnerability Enumeration (CWE) は、SASTツールから提供される一般的な警告セットの一つで、侵入者が不正アクセスに利用するセキュリティ上の弱点をまとめた辞書です。開発工程に静的解析ツールを取り入れることで、ソフトウェアのバグが深刻化しCVEに発展するのを防げます。CVE (Common Vulnerabilities and Exposures) は、既知のソフトウェア脆弱性を体系的にまとめたデータベースです。データセキュリティの観点からも重要です。
Software Composition Analysis (SCA) は、オープンソース部品の脆弱性を検出し、アプリに既知の弱点を持つ部品が含まれているかを解析します。
DevOpsは、開発プロセスを自動化して自動で進行させ、遅延を解消する仕組みです。一方、DevSecOpsはDevOpsにセキュリティ対策と目標を組み込むものです。DevOpsにおけるセキュリティ自動化は、新たな技術、手法、ツール、システムの採用を必要とし、DevSecOpsはDevOpsの延長線上にあると言えます。
最新情報を購読