Concerned about recent PAN-OS and other firewall/VPN CVEs? Take advantage of Zscaler’s special offer today

Learn More

DevSecOpsとは

DevSecOpsは、ソフトウェア開発戦略の1つで、ソフトウェア開発ライフ サイクル(SDLC)にセキュリティを組み込むアプローチを指します。開発工程のすべての関係者がセキュリティに対する責任を共有する運用アプローチであり、文化的な指針です。クラウド ネイティブ アプリケーション保護プラットフォーム(CNAPP)などのツールを用いてDevSecOpsを実施することで、プロセスを妨げることなくセキュリティの問題をできるだけ早い段階で発見して修正できるようになります。

DevOpsとDevSecOpsの違い

DevOpsとDevSecOpsは、いずれも自動化と継続的なプロセスによって開発サイクルにおける円滑な連携を可能にする手法です。DevSecOpsは、DevOpsに対する批判を受けて登場しました。DevOpsはサイバーセキュリティに対する配慮が不十分だったのです。

DevOpsでは、開発部門とIT運用部門が協力し、アジャイルで合理化された展開フレームワークを作成します。DevSecOpsは、DevOpsのワークフローにセキュリティに関する制御やプロセスを組み込むことで、セキュリティ上の重要なタスクを自動化することを目的としています。DevSecOpsは、DevOpsの責任共有の文化をセキュリティ上の慣行にまで拡張するものです。

DevSecOpsが重要な理由

DevSecOpsは、Development (開発)、Security (セキュリティ)、Operations (運用)の略で、アプリケーションの開発ライフ サイクルの各工程にセキュリティを組み込む戦略です。セキュリティの問題をできるだけ早期に発見して修正することで、展開前にクラウド ワークロードの安全性を担保でき、コストの削減、修正作業の回避、リスクの軽減につながります。

DevSecOpsの目的

DevSecOpsは、最新の開発環境を合理化し、セキュア デジタル トランスフォーメーションを支援します。企業はクラウド ネイティブ サービスを採用し、自動化を使用して反復的な開発プロセスを改良しています。また、開発者は再利用できるコードやオープン ソースのコンポーネントをよく使用しています。さらに、機密データは厳しく規制されるようになりました。

脅威が進化するなか、こうした環境の複雑化によって、限りある専門知識、リソース、ツールで対処するセキュリティ部門の負担は増しています。

DevSecOpsは、完全なコンテキストと開発部門のツールやプロセスへの統合によって高度な可視性を実現するとともに、クラウド インフラストラクチャー、機密データ、アプリケーションにわたる一元的なセキュリティを確立し、より効率的なセキュリティ対策を推進します。

DevSecOpsプロセスの本質は、次のような取り組みによって安全なソフトウェアの提供を支援し、ソフトウェアの提供プロセスにおけるセキュリティ上の問題の発生を未然に阻止することです。

  • 問題の早期発見および修正:将来的な侵害の発生、脆弱性やコンプライアンス違反の発見といった、大きなコストにつながる事態を避けます。
  • 統合アプローチの採用:部門間のプロセスを合理化することで、開発ライフ サイクルにおけるセキュリティ アプローチを統合して、摩擦を回避し、リスクを軽減します。
  • セキュリティの統合:セキュリティ対策を最後に回すことなく、継続的インテグレーション/継続的デリバリー(CI/CD)パイプラインに組み込みます。
  • 開発部門およびDevOps部門との連携:自らの部門のリリースや変更がセキュリティに与える影響を理解してもらい、セキュリティを維持しながら開発/イテレーションを迅速化します。

ここまでに述べたような課題の解決に伴い、DevSecOpsはさまざまなメリットをもたらします。次はこの点について詳しく見ていきます。

開発ライフ サイクル全体にわたる脆弱性、コンテキスト、関連を集約することで、重大なリスクを浮かび上がらせ、開発部門とプロダクト オーナーは、アプリケーションの中で最も大きなリスクとなっている領域の修正に集中できます。

Gartner

DevSecOpsのメリット

1. セキュリティのシフト レフトとイノベーションの加速

主要なIDEやDevOpsツールに自動的なセキュリティ制御を組み込むことで、開発部門はDevSecOps環境の要件を簡単に満たすことができます。こうした制御によって、ベスト プラクティスや修復のガイダンスを活用しながら、開発の早い段階でコードの脆弱性を特定、調査、修復することが可能です。

2. コストと複雑性の軽減

効果的なDevSecOps戦略は、CSPMCIEMCWPP、コードとしてのインフラストラクチャー(IaC)、および脆弱性スキャンなど、複数の機能を単一のCNAPPソリューションに統合します。これは、開発プロセスの早い段階での問題の発見と修正にも役立ち、修正による二度手間やパッチの作成を減らし、時間とコストの節約、侵害のリスクの軽減につながります。

dd

図1:双方向のフィードバック

出典:Gartner, Innovation Insight for Cloud-Native Application Protect Platforms
2021年8月25日、Neil MacDonald氏、Charlie Winckless氏

 

3. 包括的なカバレッジと制御の実現

DevSecOpsでは、包括的な可視性とカバレッジを担保しながら、きめ細かい制御を行い、ネイティブ アプリ、クラウド インフラストラクチャー、機密データの保護を支援します。効果的なDevSecOpsツールは、セキュリティ上の問題やイベント、隠れた攻撃ベクトルの特定と関連付けに役立つほか、リアルタイムのアラート、推奨事項、修復ガイダンスを生成します。

4. コミュニケーションとコラボレーションの強化

開発部門、セキュリティ部門、運用部門の業務はサイロ化しがちです。DevSecOpsは、これらの部門の業務を1つのプラットフォームに集約することで、スタック内のすべてのコンポーネントについて、基準への準拠、パッチの適用、安全な構成を担保します。コミュニケーションとコラボレーションの改善は、セキュリティ部門が開発部門の業務に組み込むガードレールの実装を支え、部門間の摩擦の軽減につながります。

DevSecOpsの仕組み

最新のCI/CDツールによって、コード、チェックイン、ビルド、テスト、展開、監視というDevOpsプロセスにセキュリティ チェックを組み込むことが可能です。CNAPPを使用すれば、セキュリティ部門は、任意のDevOpsパイプラインに統合できるゲートとガードレールを実装し、すべてのソフトウェア、DevOps、セキュリティ エンジニアに対する可視性を得られます。これはDevSecOpsパイプラインと呼ばれています。

セキュリティ部門は、CI/CDプロセスのさまざまな段階にセキュリティ ゲートを組み込むことができます。

  • コード:IaCスキャン機能を組み込むことで、安全なコーディングのための基準について、開発者に可視性やガイダンスを提供します。
  • チェックイン:コードが必ずクリーンかつ基準に従ったものになるよう、ビルドとテストに入る前にすべてのプルや変更の要求を検査し、脆弱性やデータ漏洩がないかを確認します。
  • ビルドとテスト:オープン ソースの脆弱性やライセンスの検査、機能テストおよび単体テストを行うことで、知的財産権を保護し、ゼロデイ脆弱性を防止します。
  • アーティファクト:コードが中央レジストリーにプッシュされたら、脆弱性検査、監査、アクセス検査を有効にして、ゼロデイ脆弱性、不正アクセス、不正なパッケージまたは署名されていないパッケージの使用を防止します。
  • 展開:正当性が確認された署名済みのイメージがレジストリーからテスト用に展開されたら、アプリケーションに対する攻撃をシミュレートし、悪用される恐れのある潜在的なリスクの予測を行います。
  • 監視:アプリケーションのさまざまな構成要素のランタイム シグナルの収集、処理、関連付けを継続的に実施して、セキュリティ ガードレールを開発および展開し、さらなる問題を回避します。

こちらのブログでは、上記についてさらに詳しく解説しています。

DevSecOps導入の際の課題

環境の複雑性への対処

ほとんどの企業は複数のパブリック クラウドを利用しています。個々のプロバイダーに元々備わっているセキュリティ制御のみを使用していては、限られた可視性しか得られず、セキュリティのサイロ化や一貫性の欠如、レポートの断片化につながります。一方、DevOps環境は、さまざまなプラットフォーム、プログラミング言語、オープン ソースの構成要素を組み合わせています。こうした環境では、アプリ、コンテナー、マイクロサービス間で資格情報、トークン、SSHキーがオープンに共有されます。

パフォーマンスに影響を与えることなくこうした複雑な環境に対処するには、セキュリティ部門がきめ細かな制御を行える必要があります。

ポイント ソリューションからの脱却

問題を解決し、安全なコードを提供するためには、DevOps部門が環境とリスクを包括的に把握できなくてはなりません。多くの組織のセキュリティ部門では、そのために単一用途のツールを複数使用しており、各ツールから得られた結果の関連付けや修復の優先順位付けに追われ、アラート疲れに悩まされています。結果的に、優れたソフトウェアの提供に集中することができなくなっています。

各部門の賛同を得たうえで、ポイント ソリューションを廃止して包括的なアプローチを採用することが必要です。

部門間の運用上の課題の克服

リリース サイクルの速い環境では、構成エラーなどのミスが発生し、重大なセキュリティ リスクにつながる可能性があります。従来のウォーターフォール開発では、セキュリティ テストは開発段階の後、アプリケーションが本番環境に移行する前に行われますが、このプロセスでは時間がかります。専門知識、予算、リソースの制約のため、セキュリティ部門が対応できないケースも多々あります。

DevSecOpsに移行する際には、しっかりとトレーニングを実施し、部門間の知識のギャップを解消する必要があります。

コラボレーションとコミュニケーションの促進

DevSecOpsの文化を構築するうえで最大の課題となるのが、各部門のセキュリティに対する姿勢です。DevOps部門は開発スピードを維持しなければならないというプレッシャーを抱えています。一方、セキュリティ上の問題は頻繁に開発の遅れを招く存在です。DevOps部門は多くの場合、セキュリティやリスク軽減のベスト プラクティス、コンプライアンス要件、違反がもたらす結果について限られた知識しか持っていません。しかし、セキュリティ部門にとって、アプリ、コード、インフラストラクチャー、データの保護は最大の関心事です。

目標が異なっていれば、部門間の連携は困難になりかねません。目標を統一し、DevSecOpsのアプローチを採用することで生まれる部門横断的かつ長期的なメリットを示す必要があります。

こちらのブログでは、上記についてさらに詳しく解説しています。

DevSecOpsの導入プロセス

では、実際にDevSecOpsを導入する方法について説明していきます。DevSecOpsは、以下の5つのステップに沿って進めます。

1. 統合アプローチの枠組みの設定

セキュリティをないがしろにすることなくコミットやリリースを円滑に進めるには、セキュリティ、運用、開発の各部門が相互のプロセスを認識する必要があります。また、セキュリティおよびコンプライアンス上の要件を明確に定義しなければなりません。開発部門が常にセキュリティに関するベスト プラクティス、違反、インシデントを把握し、ガイダンスを得られるようにすることで、早いタイミングでの修復が可能になります。

2. シフト レフト戦略の導入

セキュリティ対策は最後のおまけではなく、開発の早い段階から組み込むべきものです。コード分析のためのセキュリティ ポリシーを実装することで、開発部門による安全なコードの提供に役立ちます。開発部門の既存のワークフローにさまざまな言語やIDEに対応するセキュリティ ソリューションを統合することで、開発部門は本番環境に展開される前に問題を発見および修正できるようになります。

3. 脆弱性の評価

開発者は日常的にソースが不明または信頼できないサードパーティーのコードを組み込んで構築を行っています。既存のCI/CDパイプラインにセキュリティを組み込み、重要なレビューを実行して、脆弱性の有無を早い段階からこまめに検査することが大切です。

4. 脅威の管理

エクスプロイトや攻撃は常に進化していますが、継続的な監視を行うことで、侵害から身を守ることができます。セキュリティ部門は、自動のセキュリティ チェックを活用して、クラウド環境やアプリでの攻撃やデータ漏洩を検査および監視し、脅威や脆弱性の特定、調査、優先順位付け、修復を行う必要があります。

5. 継続的なコンプライアンスの担保

新たなコードの作成や既存のソース コードの変更に伴い、DevOpsの環境は常に変化します。DevOpsのプロセス全体を通じて統合的かつ自動的なコンプライアンス検証とレポート作成を行うことで、業務の迅速化につながります。また、信頼性の高い制御によりコンプライアンスを確保し、規制監査を簡素化できます。

DevSecOpsに役立つZscaler Posture Control

クラウド上のアプリとデータを効果的に保護するには、継続的かつ自動的なリスク評価と、アプリやインフラへのセキュリティの組み込みが必要です。静的でサイロ化されたセキュリティ ツールを使用する従来のアプローチでは、今日のミッションクリティカルなアプリケーションや機密データ、インフラストラクチャーを安全に保つことはできません。

Zscaler Posture Control™は、企業におけるDevSecOpsの導入を支援します。マルチクラウド環境に展開されたクラウド インフラストラクチャーや機密データ、ネイティブ アプリケーションを保護するための一元的なアプローチを提供し、複雑性、部門間の摩擦、オーバーヘッドの軽減に役立ちます。

主要な機能

  • 各種機能の単一プラットフォームへの集約:複数のポイント製品を1つの統合プラットフォームに置き換えることで、複雑性やオーバーヘッドを軽減し、優先的に対応すべき重要な問題を特定できるようになります。
  • 高度な脅威やリスクの関連付け:リスクの高い構成ミスや危険な攻撃ベクトルとなり得るアクティビティーを検出するスマートなポリシーと制御により、SecOpsの効率を向上させます。
  • クラウド資産、リスク、コンプライアンス違反の検出:マルチクラウド環境とIDE全体にわたり、リスクやコンプライアンス違反を早期に特定します。主要なIDEやDevOpsツールとのネイティブな統合により、ワークフローを維持します。
  • エージェントを必要としない短時間での展開:APIベースのアプローチを採用することで、開発部門にエージェントのインストールを強いることなく、マルチクラウド環境全体にわたるすべてのワークロードとデータを保護できます。
  • ライフ サイクル全体を通じたクラウド セキュリティ:セキュリティの問題を開発の早い段階で発見および修正し、本番環境に展開されることを防ぎます。展開プロセスを監視し、重大な問題が見つかった場合はアラートを出し、ブロックします。
  • パブリック クラウドのデータ保護:DLPや脅威検出エンジン、高度なデータ認識および分類機能を通じ、機密性の高い保存データや転送中データを特定して保護します。
  • 継続的なコンプライアンスの担保:クラウド セキュリティ態勢を主要な業界規制や法規制と自動的に照合し、自動的かつ継続的にコンプライアンス レポートを提供します。

DevSecOpsの取り組みを支援するZscalerのソリューションの詳細については、Posture Controlのページでご確認ください。

おすすめのリソース

よくある質問

DevSecOpsツールとはどのようなものですか?

DevSecOpsツールの利用は、ソフトウェア開発ライフ サイクル全体にわたってセキュリティを統合するための重要な手段となります。セキュリティ プロセスを自動化し、DevSecOpsチームの連携の基盤となるため、DevSecOpsツールを活用することで、ソフトウェア開発のプロセスにセキュリティを確実に組み込むことが可能です。具体的には以下のようなツールがあります。

 — 静的アプリケーション セキュリティ テスト(SAST)ツール:ソース コードを検査して脆弱性やエラーを検出します
 — 動的アプリケーション セキュリティ テスト(DAST)ツール:実行時にアプリケーションのセキュリティ上の欠陥を検出します
 — ソフトウェア コンポジション解析(SCA)ツール:コードベース内のオープン ソース コードを特定し、コンプライアンスとセキュリティの確保に役立ちます
 — コンテナー セキュリティ ツール:コンテナー イメージの既知の脆弱性の有無を検査します
 — コードとしてのインフラストラクチャー(IaC)セキュリティ ツール:インフラストラクチャーのプロビジョニングにセキュリティ ポリシーを適用します
 — CI/CDプラットフォーム:コードのビルド、テスト、展開のプロセスを安全に自動化します
 — セキュリティ情報/イベント管理(SIEM)ツール:セキュリティ イベントをリアルタイムで監視/分析します