DevOpsの原理とベストプラクティスを幅広い専門分野のチームが協力して積み重ねていくことで、継続的なソフトウェアデリバリーが可能になります。

開発とリリースを迅速に行うために開発者は常にオープンソース・コンポーネントをプロジェクトで使用しています。現在では実際にコードの約60~90%の割合でオープンソースが使われており、これにより次の問題が発生する可能性があります。1. セキュリティの脆弱性、2. ライセンスのコンプライアンス違反、そしてそれに伴う組織への影響が挙げられます。開発者からのレポートやマニュアルによるプロセスに頼ったところで全体像はわかりません。そのためセキュリティとコンプライアンスはDevOpsプロセスにおいて非常に重要な部分になります。

開発のライフサイクルは開発者がコードを記述することから始まり、ビルドされ、ソフトウェア・パッケージが本番環境にデプロイされ、実行時に発生した問題を監視するというプロセスの繰り返しです。新たな機能が追加され、バグが修正されるまでこのプロセスは継続します。したがってセキュリティはどの段階においても実施される必要があります。

開発者、運用担当者、セキュリテイ担当者の比率はそれぞれ200:5:1です。これはセキュリティ・スキャンツールで特定されるセキュリティの問題を技術的な知識が不足している可能性のある非常に小さなセキュリティチームが対応していることを意味しています。この問題を解決するには開発チームと運用チームでシフトレフトを実践し、彼らにもセキュリティとコンプライアンスに対して責任を持ってもらい、ソフトウェア開発ライフサイクル(SDLC)の早い段階からセキュリティを導入しなければなりません。セキュリティ脆弱性をCI/CDパイプラインの早い段階で検知するように実装し、SDLCにおいてセキュリティとコンプライアンスポリシーを手動ではなく自動化することが非常に重要です。これを踏まえるとSec(セキュリティ)をDevOpsから外した企業はソフトウェアリリースの直前にセキュリティとコンプライアンスの問題に直面する可能性があり、問題を修復するための追加コストが発生してしまいます。

DevSecOps のカルチャー

DevSecOpsが根付いている組織では誰もがセキュリティに対して責任感と当事者意識を持っています。DevOpsのベストプラクティスと組み合わせ、各開発チームはセキュリティの最高責任者に対してセキュリティとコンプライアンスのプロセスとアクションを統制する役割を与え、デリバリーするソフトウェアのセキュリティをチーム内で最大限に強化します。

DevOpsの本質はヒューマンエラーを防ぐために可能な限り自動化し、自動的なゲートを設けて不安定なコードが本番環境に入るのを防ぐことです。基本的にはセキュリティの脆弱性非準拠のライセンスを持つコードは不安定です。

DevSecOps の原理

DevSecOpsを企業に導入し、実装していくには企業文化や運用方法を変える必要があります。これにはセキュリティのトレーニング、ツール、リソースが含まれます。企業文化を変更する際に役立つ概念についてご紹介します。

  • セキュリティ責任者

    セキュリティチームのメンバーはセキュリティ全般に対して責任を持ち、DevOpsパイプラインで正しく実装されているかを確認してチームの他のメンバーに伝えます。たとえば開発チームのセキュリティ責任者は以下の実装と運用を行います:

    • ソースコードの欠陥を発見する静的アプリケーション・セキュリティテスト(SAST)
    • オープンソースの依存関係を可視化するソフトウェア構成分析(SCA)

    また、品質保証(QA)チームのセキュリティ責任者は以下を実施します:

    • 自動化されたQAサイクルの一部としての動的アプリケーション・セキュリティテスト(DAST)

  • プロセスに不可欠なセキュリティ

    DevSecOpsのベストプラクティスではソフトウェアが本番環境にリリースされる直前ではなくSLDCの一部としてセキュリティを考慮する必要があります。つまり開発者はセキュリティスキャンをビルドプロセスに統合すると同時に、脆弱な依存関係を特定するためにIDE環境にも統合する必要があります。

  • データに簡単にアクセス

    開発者とセキュリティ専門家の割合は200:1で開発者が圧倒的に上回っています。専用のIDEプラグインを使用することでセキュリティデータを開発者が使用しているツールに直接組み込むことができるため、開発の初期段階から簡単に導入することができます。これは開発者がコードを書く際にセキュリティの問題を回避するベストプラクティスです。

JFrog Xrayはコードで使用されている依存関係についてセキュリティ脆弱性情報を提供するため、開発の最も早い段階からセキュリティを担保できます。

  • 管理の自動化

    コードレビューなどの手動チェックに加えてDevOpsパイプラインの各フェーズでセキュリティ・チェックポイントを設けることで、ソフトウェアが次のフェーズに進むことができるかどうかを判断できます。 また管理システムが企業のポリシーを自動的に適用したり、人的な介入を行うことなく必要に応じて以下のアクションを実行できます:

    • セキュリティやコンプライアンス違反の通知(メール、メッセンジャー、Jira等)
    • ダウンロードのブロック
    • 脆弱なコンポーネントに依存したビルドやライセンスポリシーに準拠しないビルドの失敗
    • 脆弱なリリースバンドルのデプロイを防止

JFrog Xrayを任意のCIサーバーと統合することで、ビルドのアーティファクトや依存関係からセキュリティの脆弱性やオープンソースライセンスのコンプライアンス違反が見つかった場合にビルドを失敗させることができます。

パイプラインでDevSecOpsを自動化することでセキュリティに対して抽象的なオーバーレイを作成できます。

DevSecOps ツール

SDLCにおける様々な側面に対処するため、セキュリティやコンプライアンスツールにはバリエーションがあります。これには静的コード分析(SAST)、ソフトウェア構成分析(SCA)、コードの脆弱性をテストするための様々なアプローチ(DAST:動的アプリケーション・セキュリティテストやIAST:インタラクティブアプリケーション・セキュリティテスト)が含まれます。また、コードやシステム環境の脆弱性を悪用した攻撃から本番環境のバイナリを監視・保護することを目的としたツールもあります。理想としてはチームが完全なSDLCセキュリティを維持するために、これらのすべてのツールを採用していくことが望ましいでしょう。

静的アプリケーション・セキュリティテスト(SAST)ツールは独自に開発したコード内の脆弱性を特定するのに役立ちます。開発者はSASTツールを開発プロセスの自動化された一部として認識して使用する必要があります。これによりDevOpsサイクルの早い段階で潜在的な脆弱性を検出して修正するのに役立ちます。静的分析ツールにはSonarQubeVeracodeなど多くのバリエーションがあります。

ソフトウェア構成分析(SCA)ではコードが依存しているオープンソース・コンポーネントにおいてライセンスコンプライアンスやセキュリティの脆弱性について管理・監視します。どのオープンソースソフトウェア(OSS)コンポーネントが使われていて、それらの依存関係を知ることは極めて重要です。SCAツールはオープンソース・コンポーネントを特定した後、ライセンスに関する情報とこれらのコンポーネントに関連して既知のセキュリティの脆弱性があるかという情報を提供します。高度なSCAツールではポリシー設定を適用して、バイナリのダウンロードを防ぎ、ビルドを失敗させ、他のシステムに通知することも可能です。

動的でインタラクティブなアプリケーション・セキュリティテスト(DASTやIAST)は実行中のアプリケーションの公開インターフェイスをテストし、脆弱性や欠陥を探します。DASTはアプリケーションをブラックボックスと見なしますが、IASTでは動的アプリケーション・セキュリティテスト(DAST)と静的分析セキュリティテスト(SAST)の技術を組み合わせてアプリケーションのセキュリティテストの精度を高めています。IASTツールにはSynopsysCheckmarxContrast Securityなどがあります。

コンテナランタイム・セキュリティツールはランタイム環境でコンテナを監視します。このようなツールは様々なレベルでファイアウォールや行動分析に基づいた異常の特定など数多くの機能を提供します。ランタイムプロテクションツールにはTwistlock(Prisma Cloud Native Security), AquaSec, NeuVector and Rezilionなどがあります。

DevSecOpsのベストプラクティス

  • 安全なコードを開発するための開発チームのトレーニング
  • ソフトウェアの問題と同様にセキュリティの問題を追跡
  • コードとしてのセキュリティ、組み込みのセキュリティ
  • ソフトウェアパイプラインにセキュリティコントロールを統合
  • ビルドプロセスのセキュリティテストを自動化
  • パイプライン中に既知の脆弱性を検出
  • 既知の状態について本番環境のセキュリティを監視
  • セキュリティを強化するために意図的に欠陥のあるソフトウェアを投入
  • 出典: The Divine and Felonious Nature of Cyber Security – John Willis @botchagalupe The DevOps Handbook、Gene Kim、Patrick Debois、John Willis、Jez Humble

Get Started

Try out JFrog DevSecOps Tools now!
You can run a free trial on-prem or in the cloud.

Start For Free