効果的なDevSecOpsに、強固なDevOps基盤が不可欠な理由
2024年11月27日
0 分で読めますDevOpsの導入が進むにつれて、組織はこれまで以上の速さでコードを本番環境にリリースするようになりました。しかし、DevOpsの進展が速いことで、多くの開発者はセキュリティをボトルネック、あるいは後回しにするものと捉えています。そのため、セキュリティチームには、こうした変化に対応する新たなアプローチが必要です。
DevSecOpsは、DevOpsを自然に発展させたものです。DevSecOpsを説明する際によく使われる、少し陳腐ともいえる表現が「シフトレフト」です。これは、ライフサイクルの早い段階からソフトウェアの設計・提供プロセスにセキュリティテストを組み込むことを指します。しかし、DevOpsを単なる自動化と説明するようなものです。DevOpsが本来目指すのは、開発者のエクスペリエンスを向上させ、燃え尽き症候群のリスクを減らしながら、ソフトウェアの提供をより迅速かつ高頻度にすることです。同様に、DevSecOpsは単にツールを開発の早い段階に移すだけではありません。ソフトウェア提供の目標を支援し、セキュリティ疲れによる負担を軽減する必要があります。
リスクを低減し、ソフトウェアをより迅速に提供するためにDevSecOpsを導入するには、強固なDevOps基盤が不可欠です。セキュアなソフトウェア提供におけるDevOpsチームと開発チームの役割を理解し、適切な自動化ツールを提供することで、企業はアプリケーションセキュリティプログラムの成熟度を高められます。
DevSecOpsにおけるDevOpsの役割
DevOpsの協働モデルと同様に、DevSecOpsのフレームワークを成功させるには、開発者、運用チーム、DevOps/プラットフォームチーム、セキュリティ担当者がアプリケーションセキュリティに共同で責任を持つことから始まります。ただし、DevOpsチームは開発と運用の両方のプロセスに深く関わっているため、広範かつ詳細なセキュリティ施策を適用するうえで独自の強みがあります。ソフトウェアチームの作業を効率化し、優れたエクスペリエンスを提供する必要性、利用中のツールとその連携ポイント、そしてソフトウェアが最終的に本番環境へデプロイされるまでの流れを把握しています。これらはすべて、DevSecOpsの導入において重要な要素です。多くの場合、こうしたプラットフォームチームが主導する開発者ポータルやプラットフォームも、セキュリティツールを統合できる有力なポイントです。
成熟したDevSecOpsの実践では、インフラストラクチャやパイプラインのセキュリティを含め、アプリケーションアーキテクチャのあらゆる部分を考慮する必要があります。ソフトウェアのデプロイや管理にコンテナ化やInfrastructure as Code(IaC)を利用する組織が増えるなか、現代のDevOpsチームはアプリケーションの一部のセキュリティ確保も担うようになっています。そのため、新たなDevSecOpsフレームワークの一環として、DevOpsチームは既存のインフラ管理ワークフローへのセキュリティ統合を優先する必要があります。
ソフトウェア開発ライフサイクルにおけるセキュリティ
DevOpsチームとともに、ソフトウェア開発ライフサイクル(SDLC)全体で、セキュリティチームの支援がなくても開発者が多くのセキュリティタスクを担えるようにすることが重要です。これにより、提供プロセスのあらゆる段階にセキュリティを組み込むセキュアなソフトウェア開発ライフサイクル(SSDLC)を実現できます。
イノベーションの速度とリリース頻度が高まるなか、開発サイクルの終盤までセキュリティを後回しにすることは、もはや十分ではありません。脆弱性を早期に発見し、ボトルネックを避けるために、セキュリティは開発者の責任範囲に含める必要があります。また、問題や修正方法のガイダンスを開発者にどう提示するかも考慮しなければなりません。理想的には、次のような状態が望まれます。
開発者が日常的に使っているツールから離れずに作業できる。
対応を求める問題について、なぜ対処が必要なのかが明確に説明されている。
修正措置をすぐに利用できる状態にする(たとえば、クリック1つで自動化する)。
提供パイプラインへのDevSecOpsの統合
現代のDevOps組織の多くは、すでに継続的インテグレーション/継続的デプロイ(CI/CD)を何らかの形で導入しています。この自動化されたパイプラインを活用すれば、DevSecOpsの基盤を築き、DevOpsチームと開発チーム双方のセキュリティ負担を軽減できます。
セキュリティの自動化は、開発者がコードを書き、チェックインする段階までシフトレフトすることから始められます。通常、継続的インテグレーションのプロセスでは、コードのコミット後にビルドとテストを自動で実行します。さらに、静的アプリケーションセキュリティテスト(SAST)を組み込み、ソースコードに潜む潜在的なセキュリティ問題を確認することもできます。ほとんどのSASTソリューションは、コードをスキャンし、アプリケーションセキュリティのベストプラクティスや脆弱性データベースと照合することで、開発者に早期のフィードバックを提供します。これには、SASTを応用した専門的なテストであるIaCテストや、コードだけでなくIaCやパイプラインの設定も対象とするシークレット検出が含まれます。
コンテナスキャンを含むソフトウェア構成分析(SCA)も、この段階で自動実行し、オープンソースの依存関係に脆弱性がないか確認できます。開発チームがサードパーティ製のオープンソースコンポーネントをより多く採用するなか、その重要性は高まっています。推計によると、最新のアプリケーションの最大90%がオープンソースコードで構成されています。こうした新たなソフトウェアサプライチェーンは、アプリケーションの潜在的な攻撃対象領域を大幅に広げるため、追加のセキュリティ対策が必要です。常にある程度は事後対応となるテストだけでなく、成熟したDevSecOpsプログラムでは、開発者が最初から安全な選択をできるよう導く必要があります。そのためには、ソフトウェアアーキテクチャとセキュリティ要件を理解するためのチーム横断的な協力に加え、セキュア・バイ・デザインの原則をチームが理解するための教育も欠かせません。
本番環境におけるDevSecOps
DevOpsの重要な原則の1つは、コードのリリース後もソフトウェアチームが関与し続けることです。DevSecOpsでも、この原則を引き継ぐ必要があります。リリース前にコードとアプリケーションスタック全体をテストすることは重要ですが、それだけですべての問題を防げるわけではありません。ゼロデイ脆弱性は発生しますし、アプリケーションのアーキテクチャが変われば、新たな攻撃経路が生まれる可能性もあります。
脅威の経路をマッピングし、攻撃を監視するクラウドやランタイム向けのセキュリティツールは数多くあり、優れた機能を備えています。開発者にとって情報が多すぎる場合もありますが、どの問題に緊急対応が必要かを判断するうえで非常に役立ちます。稼働中のアプリケーションのリスクを低減するには、アプリケーションセキュリティとクラウド/ランタイムセキュリティをつなぐことが、成熟したDevSecOpsプログラムに不可欠です。
SnykでDevSecOpsの基盤を築く
「シフトレフト」とDevOpsプロセスへのセキュリティ導入はDevSecOpsの基本ですが、DevOpsが目指す重要な成果である、迅速で高頻度なリリースと開発者の燃え尽き症候群の軽減も、DevSecOpsの実践において同じように重要です。既存の開発・DevOpsワークフローに容易に統合できる適切なセキュリティツールを選べば、導入時の摩擦を減らし、組織全体にセキュリティを広げられます。
Snykは開発者を第一に考えたセキュリティプラットフォームで、SDLCのあらゆる段階にDevSecOpsの実践を組み込むことができます。Snyk AppRiskはアプリケーションセキュリティとクラウドセキュリティをつなぎ、リスクの全体像を示すことで、開発者が修正すべき内容を把握できるよう支援します。Snyk CodeとSnyk Open Sourceは、IDE、リポジトリ、プル/マージリクエスト、CI/CDなどを通じて開発者を支援し、Snyk ContainerとSnyk Infrastructure as Codeはプラットフォームチームにセキュリティをもたらします。
SnykがDevSecOpsの基盤づくりにどう役立つか、今すぐデモをご予約ください。
セキュリティと開発のギャップを埋める
DevSecOpsを成功に導く6つの柱と、それらを組織に取り入れる方法をご紹介します。



