DevSecOps

DevSecOpsとは

アプリケーション・セキュリティ(AppSec)の分野では比較的新しい用語であるDevSecOpsとは、開発チームと運用チーム間の緊密な連携を拡張してセキュリティ・チームも含めることで、ソフトウェア開発ライフサイクル(SDLC)の早期にセキュリティを導入することです。開発、セキュリティ、テスト、運用の各チームで構成されるコア機能チーム全体で文化、プロセス、ツールを変更する必要があります。基本的に、DevSecOpsではセキュリティは共同責任とされ、DevOps CI/CDワークフローにセキュリティを組み込む際には、SDLCに関わる全員が何らかの役割を果たします。[1]

リリースの速度と頻度が高まるにつれ、従来のアプリケーション・セキュリティ・チームはリリースのペースに遅れずに各リリースのセキュリティを確保することができなくなっています。

これに対処するためには、DevOpsチームがスピードと品質に優れ、かつセキュアなアプリケーションを提供できるように、SDLC全体で継続的にセキュリティを構築する必要があります。セキュリティをワークフローに導入する時期が早いほど、セキュリティの弱点や脆弱性を早期に特定して修正することができます。この概念は、従来の開発環境のようにセキュリティの強化をSDLCの終盤になってから行うのではなく、セキュリティ・テストを開発時に移行し、開発者がほぼリアルタイムでコード内のセキュリティの問題を修正できるようにする「シフトレフト」に属します。

DevSecOpsを通じて、組織はセキュリティを既存の継続的インテグレーション/継続的デリバリー(CI/CD)プラクティスにシームレスに統合できます。DevSecOpsの範囲は、計画および設計からコーディング、構築、テスト、リリースまで、SDLC全体に及び、リアルタイムの連続フィードバック・ループと知見を提供します。

DevSecOpsとは | Synopsys

DevOpsとは

DevOpsは組織文化、プロセス、テクノロジーとツールの3本柱から成る理念であり、開発チームとIT運用チームが協力して、従来のソフトウェア開発プロセスよりも迅速、機敏、反復的な方法でソフトウェアを構築、テスト、リリースすることを目指しています。

『The DevOps Handbook』によると、「DevOpsの理念は、作業に関するフィードバックを開発者に迅速かつ定期的に提供することにより、コードを迅速に、独立して実装、統合、検証し、運用環境にデプロイできるようにすることです。」[2]

簡単に言えば、DevOpsとは、従来のサイロ化された開発チームと運用チームの壁を取り除くことです。DevOpsモデルでは、開発・テストからデプロイや運用まで、ソフトウェア・アプリケーションのライフサイクル全体を通じて開発チームと運用チームが協働します。

DevOpsとDevSecOpsの比較

最近のほとんどのソフトウェア組織は、アジャイル・ベースのSDLCを採用し、更新や修正を含むソフトウェア・リリースの開発とデリバリを加速しています。DevOpsやDevSecOpsなどの開発手法では、さまざまな目的でアジャイル・フレームワークを利用します。DevOpsはアプリの配信速度に重点を置き、DevSecOpsは速度の向上に加え、セキュアなアプリをできるだけ迅速に提供することに重点を置きます。DevSecOpsの目標は、セキュアなコードベースの迅速な開発を促進することです。[3]

DevSecOpsの原理は、方向付け、設計、構築、テスト、リリース、サポート、保守その他を含むDevOpsライフサイクル全体にセキュリティを組み込むというものです。DevSecOpsでは、セキュリティはDevOpsバリューチェーン内の全員の共同責任です。DevSecOpsでは開発チーム、リリース管理(または運用)チーム、セキュリティ・チーム間の継続的で柔軟な協調が必要です。つまり、DevSecOpsはセキュリティを損なうことなくスピードを維持する役割を担います。

DevSecOpsが重要な理由

結論として、DevSecOpsはセキュリティをSDLCの早期段階で意識的に組み込むという点で重要です。[4]開発組織が最初からセキュリティを念頭に置いてコーディングすれば、運用またはリリース後になってから脆弱性を捕捉して修正するよりも、手間やコストを削減することができます。さまざまな業界の組織が、開発、セキュリティ、運用の間のサイロを打破するためにDevSecOpsを実装し、よりセキュアなソフトウェアをより迅速にリリースできます。

  • 自動車:MISRAAUTOSARなどのソフトウェアの準拠規格を満たし、長いサイクル時間を短縮
  • 医療:HIPAAなどの規制に従って、重要な患者データのプライバシーとセキュリティを維持しながら、デジタルトランスフォーメーションの取り組みを実現
  • 金融、小売、電子商取引:OWASP Top 10 Webアプリケーション・セキュリティ・リスクを修正し、消費者、小売業者、金融サービスなどの間の取引に関するPCI DSSペイメント・カード・スタンダードに準拠したデータのプライバシーとセキュリティの遵守を維持
  • 組み込み、ネットワーク、専用、コンシューマー、IoTデバイス:共通脆弱性タイプ一覧(CWE)最も危険なソフトウェアのバグ・トップ25(CWE Top 25)の発生を削減するセキュアなコードを記述

SASTをDevSecOpsパイプラインに統合する5つのステップ

今すぐ見る

DevSecOpsを実装するために必要なアプリケーション・セキュリティ・ツール

DevSecOpsを実装するには、CI/CDプロセスに統合するさまざまなアプリケーション・セキュリティ・テスト(AST)ツールを検討する必要があります。一般的に利用されているASTツールの一部を以下に示します。

  • 静的アプリケーション・セキュリティ・テスト(SAST)
  • ソフトウェア・コンポジション解析(SCA)
  • インタラクティブ・アプリケーション・セキュリティ・テスト(IAST)
  • 動的アプリケーション・セキュリティ・テスト(DAST)

SAST

SASTツールは、独自開発コードやカスタム・コードをスキャンして、コーディング・エラーや、悪用可能な弱点につながる設計上の欠陥を検出します。SASTツールは、主にSDLCのコーディング、ビルド、開発の各段階で使用します。Coverityは、そうしたSASTツールの1つです。

SCA

Black DuckなどのSCAツールは、ソースコードやバイナリをスキャンして、オープンソースおよびサードパーティーのコンポーネントの既知の脆弱性を特定します。また、セキュリティとライセンスのリスクに関する知見を提供し、優先順位付けと修正の取り組みを加速します。さらに、CI/CDプロセスにシームレスに統合して、ビルドの統合から実稼働前のリリースまで、新しいオープンソースの脆弱性を継続的に検出できます。

IAST

IASTツールは、手動または自動機能テスト中にバックグラウンドで動作し、Webアプリケーションの実行時の動作を解析します。たとえば、Seeker IASTツールはインストルメンテーションを用いてアプリケーションの要求/応答のやり取り、動作、データフローを監視します。実行時の脆弱性を検出し、自動的に結果を再生してテストし、発生したコード行までの詳細な洞察を開発チームに提供します。これにより、開発チームは重要な脆弱性に時間と労力を集中させることができます。

DAST

DASTは、ハッカーがWebアプリケーションやAPIを操作する方法を模倣する自動ブラックボックス・テスト技術です。この手法では、ペネトレーション・テストの場合とほぼ同様に、アプリケーションのクライアント側レンダリングを調べ、ネットワーク接続を介してアプリケーションをテストします。[5] DASTツールでは、スタックをスキャンするためにソースコードやカスタマイズにアクセスする必要がありません。Webサイトとやり取りして、低い誤検知率で脆弱性を発見します。たとえば、Tinfoil Security DASTツールは、モバイル・バックエンド・サーバー、IoTデバイス、RESTful APIまたはGraphQL APIなどのWeb接続デバイスを含む、WebアプリケーションおよびAPIの脆弱性を特定します。[6]

 

[1] https://www.csoonline.com/article/3245748/what-is-devsecops-developing-more-secure-applications.html

[2] https://itrevolution.com/the-devops-handbook/

[3] https://blogs.cornell.edu/react/devops-vs-devsecops-what-is-the-difference/

[4] https://enterprisersproject.com/article/2018/1/why-devsecops-matters-it-leaders

[5] https://jaxenter.com/dast-devops-166973.html

[6] https://www.channele2e.com/investors/exits/synopsys-buys-tinfoil-security/