2022年12月20日
DevSecOps
このブログ投稿では、セキュリティーテストとDevSecOpsについて知っておく必要がある全ての重要な側面について説明します。
今日の現代のビジネス環境では、各企業がソフトウェア企業です。従って、企業はソフトウェア開発ライフサイクルを最適化して、ソフトウェアエンジニアリングへの投資を最大限に活用する必要があります。これは、企業がソフトウェアエンジニアリングプロセスの効率と有効性を向上させるために、DevOpsと最新のクラウドネイティブな方法論を導入する必要があることを意味します。企業にはDevOpsチームがありますが、セキュリティーはなぜか取り残されたり、ほとんどの場合無視されたりしています。場合によっては、セキュリティーチームだけに任せていることもあります。
DevOpsが開発組織と運用チームを結び付けるのに対し、DevSecOps(開発とセキュリティーと運用)の文化は、セキュリティーチームの責任を共有するという目的を設定します。昨今では、ほとんど全ての組織が、何らかの形の業務に不可欠なテクノロジーを有しています。インフラのセキュリティーは不可欠なものであり、従業員向けのセキュリティー対策を追加するだけでは十分ではありません。DevSecOpsは、セキュアなコード、リリース管理、自動化されたセキュリティーチェック、セキュリティー制御などにより、セキュリティーを次のレベルに引き上げます。これらは全て、コードがユーザーに届けられる前の開発環境で行われます。つまりDevSecOpsは、開発・運用・セキュリティー担当者の間の橋渡し役を務めるのです。
多くの企業は、自社のソフトウェアシステムと方法とアプリケーションのセキュリティーを確保するのに必要な措置を講じていませんでした。そこで、業界ではDevSecOpsという新しい用語が生まれました。
DevSecOpsの方法論は、NetflixやEtsyやAmazon Web Servicesが、ビジネスの継続性を脅かす激しいサイバー攻撃に直面したときに生み出したものです。DevSecOpsの実装はこれらの企業を、事後対応型のITプラクティスから積極的なアプリケーション開発に移行させ、応答時間を改善しました。この方法論は、開発者がコードを本番環境にプッシュするのにかかる時間を短縮することも目的としています。DevSecOps環境は、規模や業界に関係なく、あらゆる企業で築けます。
DevSecOpsは、アプリケーションセキュリティーにアプローチし、後付けではなく正面から取り組むための新しい方法です。これは、セキュリティーをソフトウェ ア開発ライフサイクル(SDLC)に統合することで、ソフトウェア開発プロセスとアプリケーションを保護するためのアプローチです。DevSecOpsの出現により、セキュリティーに対する考え方や脅威への対応方法が変化しました。SDLCでのシフトレフトにフォーカスする一方、セキュリティーが全員の仕事であることを明確にしています。
アーティファクトが作られる前でも、CIシステムを介してセキュリティーの脆弱性についてコードの変更をテストし、各ステージの間に再度テストして、真のアーティファクトが次のステージに渡されていることを確認できます。DevSecOpsは、より安全なコードを使ってSDLC全体にセキュリティーのベストプラクティスを実装することで、セキュリティーへの脅威の発生を予防することを目的としています。
組織は、DevSecOpsプロセスを実装することで大きなメリットを期待できます。
最も共通 するメリットは、次の通りです。
DevSecOpsは、セキュリティーを開発プロセスに統合することで、これらの問題に対処するのに役立ちます。また、開発環境を保護するのにも役立ちます。これは、サイバー攻撃から保護するための重要なステップです。セキュリティーの問題に取り組み、軽減するためのDevSecOps戦略を以下に示します。
DevSecOpsを実装する際の最大の課題の1つは、セキュリティーテスト段階をSDLCに統合することです。何年もの間、コードのテストは、プロジェクトが終了するまで放置されていました。以前は無視されていたか、自動化されていたとしても、うまくいかないことがよくありました。
DevSecOpsでは、テストをSDLCに統合して自動化する必要があります。コードスキャナーは脆弱性の特定に役立ちますが、正確性に欠けます。また、手動の侵 入テストは時間とコストがかかります。自動化されたツールを使用して、脆弱性を検出し、ポリシーとともにセキュリティー基準を適用できます。さらに、セキュリティーツールを使ってコードの脆弱性を特定できます。
DevSecOpsのツールとプラクティスには次のようなものがあります。
Harness Security Testing Orchestration(STO)は、各組織がアプリケーションセキュリティーの脆弱性データに優先順位を付け、非常に安全なアプリケーションを提供しながら、デプロイメントの速度を維持し、再作業を最小限に抑えるのに役立つツールの1つです。
DevSecOpsのもう1つの重要な概念は、CI/CDの採用です。CI/CDは、開発チームがコードのコミットを自動化し、コードをビルドしてテストし、指定された環境にデプロイするのに役立ちます。さらに開発者は、本番環境のパイプラインの一部としてアプリケーションセキュリティーを統合することにより、テストを自動化し、アプリケーションコードのセキュリティー問題を見つけることができます。従って、堅牢なCI/CDプラットフォ ームを備えることはDevSecOpsを実行するための必須かつ前提となる条件です。これは、継続的な監視を開発サイクルに統合するためです。DevOpsパイプラインのさまざまな段階で、脆弱性スキャン、JIRAでの承認、ガバナンスとセキュリティーポリシーの順守、ソフトウェア構成分析などのセキュリティーチェックポイントを設定できます。
開発チームは、ハッカーやセキュリティー侵害者のように振る舞う必要があり、SDLCの敷地内に侵入する機会を与えてはなりません。可能な全てのセキュリティー分析およびテストツールを使って開発サイクルを構築します。Harnessのようなプラットフォームがあれば、あらゆるテストスイートとの統合が可能です。CI/CDパイプラインが攻撃を受けないように、簡単なテストからロードテスト、可用性テストまでを構成してください。
上記のCI/CDパイプラインは、アプリケーションのセキュリティーを保証するさまざまなテストスイートで構成されていることが分かります。
DevSecOpsのもう1つの重要な側面は、自動化とオーナーシップの文化です。開発者には、プロセスを個別に自動化する自由が与えられる必要がありますが、コードを所有する必要もあります。これは、セキュリティーリスクを含め、コード内の全ての責任を負うことを意味します。開発者には、プロセスを効率的に自動化するためのツールも提供する必要があります。例えばテストを自動化する場合は、これらのテストを実行するための手順とツールが必要です。OWASP ZAP、Burp Suite、Twistなど、多くのツールが自動化に役立ちます。これらのツールをコード配信プロセスに統合し、さまざまな段階で自動化されたセキュリティーテストをトリガーできます。
DevSecOpsのさらに重要な側面は、アセットの重要度に基づいてリスクを判断することです。全ての変更を同じように扱うことはできません。大きなリスクをもたらすものもあれば、そうでないものもあります。セキュリティーに関しては、アプリケーションにどんなリスクがあるかを知る必要があります。これは、リ スクベースのアプローチを使って実施できます。リスクと影響のマトリックスを使って、リスクを特定し、アプリケーションへの影響に基づいて重大度を割り当てることができます。また、リスクを特定して優先度を設定するのに役立つリスクグレードモデルを使うこともできます。これは全て、HarnessのSTO(Security Testing Orchestration)などのプラットフォームを使って実施できます。
Harness STOには、40以上のセキュリティースキャナーからのセキュリティーログと結果を、結果の単一のダッシュボードに一元化する機能があります。データの一元化により、継続的な改善イニシアチブを始めることもできます。データがサイロ化されていると、開発の結果を分析することがはるかに困難になり、改善の質が低下します。
アプリケーションには、ある種の貴重な認証情報があります。シークレット管理を通じて、このような認証情報と貴重な情報を確実に暗号化することが非常に重要です。これは、GitHubリポジトリーの認証シークレット、データベースの認証情報などです。そういったものが 漏洩すれば、攻撃者は簡単に悪用してセキュリティーに脅威を与えられます。Harnessのようなプラットフォームでは、Harness secret managerを通じて暗号化されるため、アプリケーションの秘密を保持することが非常に簡単になります。また、HarnessシステムによるOOBセキュリティー管理だけでなく、外部セキュリティー管理もサポートします。
アプリケーションにどんなリスクがあるかが分かったら、コード変更のセキュリティーレビュープロセスを確立することが重要です。これは変更を追跡し、各変更を担当するチームメンバーを特定するのに役立ちます。また、コード内のパターンを特定して、脆弱性がないかどうか、最後のコードレビュー以降に未解決の問題が残っていないかどうかを確認するのにも役立ちます。
脅威インテリジェンスと異常検出を利用して、脅威と異常をリアルタイム監視できます。脅威インテリジェンスは、サイバー脅威情報をリアルタイムで収集・分析・周知するプロセスです。これには、マルウェアアラートや問題のあるネットワークシグネチャーや悪意のあるIPアドレスが含まれます。脅威インテリジェンスは、観測された脅威を特定するのに役立ち、リアルタイムで機能することが証明されています。脅威は進化しており、できるだけ早く解決する必要があるため、脅威と異常をリアルタイム監視することが不可欠です。
企業はDevSecOpsを実装する必要があります。なぜなら、ソフトウェアとアプリケーションを安全に保ちながら、市場 投入までの時間を短縮するのに役立つからです。この記事で前述したように、DevSecOpsの導入には多くのメリットがあります。DevSecOpsプラクティスにより、セキュリティーの問題に取り組み、一般的な脆弱性にパッチを適用することが可能になりました。DevSecOpsの原則を採用するときは、コードの記述とテストからアプリケーションのデプロイまで、全てに新しい角度からアプローチする必要があります。Harnessのようなプラットフォームを使用すると、これらの複雑な脆弱性を処理し、SDLCにセキュリティーを統合し、ソフトウェア配信を合理化することが現実になります。
HarnessとDevSecOpsソフトウェア配信の使用について詳しく知りたい場合は、無料で試してみてください。詳細なチュートリアル、ビデオ、リファレンスドキュメントについては、Developer Hubをチェックしてください。
この記事はHarness社のウェブサイトで公開されているものをDigital Stacksが日本語に訳したものです 。無断複製を禁じます。原文はこちらです。