In this article
シフトレフトセキュリティを効果的に実践する
シフトレフトセキュリティとは?
シフトレフトセキュリティとは、DevSecOpsへの移行の一環として、SDLCのできるだけ早い段階から、できるだけ頻繁にセキュリティチェックを実施する取り組みです。開発の早い段階で脆弱性を発見すれば、修正がはるかに容易になり、コストも抑えられます。
多くの企業がテクノロジーやソフトウェアを活用して市場での差別化を図る今、開発のスピードはかつてないほど重要になっています。手遅れになるまでソフトウェアセキュリティの脆弱性への対応を待つと、コストがかさみ、組織を不必要なリスクにさらす可能性があります。だからこそ、最初からセキュリティを考慮して開発することが重要です。これをシフトレフトセキュリティと呼びます。
しかし、セキュリティをシフトレフトするには、開発者に修正すべき問題の一覧を渡したり、セキュリティチーム向けに設計されたツールを提供したりするだけでは不十分です。開発者にとって使いやすいツールと、取り組みを通じたセキュリティチームの継続的なサポートが必要です。
シフトレフトセキュリティとは何か、セキュリティ対応を後回しにする危険性、導入に役立つベストプラクティスとツールを詳しく見ていきましょう。
シフトレフトセキュリティの重要性
シフトレフトセキュリティにより、アジャイル開発手法のスピードに対応しながら、クラウドテクノロジーがもたらす新たなリスクにも対処できます。
アジャイル手法とDevOpsのプラクティスによって、ソフトウェアの開発と提供の方法は変わりました。コードの作成から顧客価値の提供、市場からの学びと適応までのサイクルが加速しています。権限を与えられた開発チームは、自律的に仲介者を挟むことなく、テクノロジーや実装に関する意思決定を行い、これまで以上に速く、継続的にソフトウェアをリリースしています。
組織の他の部門が進化する一方で、セキュリティチームへの要求は高まり、開発サイクルの速さを損なうボトルネックになることも少なくありません。クラウド以前の開発ペースが遅い時代に設計された従来のアプリケーションセキュリティツールやプラクティスでは、高品質なアプリケーションを提供するうえで、セキュリティチームがクリティカルパスに入ってしまいます。その結果、開発者自身がプロセスに適したセキュリティガードレールを特定し、導入する責任を担うようになりました。

セキュリティ対応を後回しにする危険性
オープンソースソフトウェアは、ソフトウェア開発の現場で広く使われています。開発エコシステムでは、開発を効率化するために、サードパーティ製のオープンソースライブラリやパッケージへの依存が高まっています。こうしたオープンソースの依存関係に含まれる脆弱性は、検出されないままビルドプロセスを通過する可能性があります。オープンソースソフトウェアが組織全体のセキュリティ態勢に与える影響を認識する組織は増えています。
もちろん、他のテクノロジーと同様に、コンテナやInfrastructure as Code(IaC)にも、セキュリティ面で固有の課題や脅威があります。オープンソースコミュニティでコンテナイメージやKubernetesの設定が作成・共有されるにつれて、それらに潜む脆弱性が運用環境にも持ち込まれます。
セキュリティとは、もはや独自コードから脆弱性を排除するだけではありません。現代のクラウドネイティブアプリケーションでは、コード、依存関係、推移的依存関係、コンテナイメージ、IaCの設定すべてがセキュリティの対象です。セキュリティ対応を後回しにする選択肢はありません。アプリケーションのデプロイ準備が整うまでセキュリティレビューを待てば、大幅な遅延が生じるか、脆弱性を見逃すことになります。
シフトレフトテストとは?
シフトレフトテストでは、セキュリティを含むソフトウェアテストをSDLCのできるだけ早い段階から取り入れます。つまり、プロセスとツールを通じて、開発チームと運用チームが安全で高品質なソフトウェアを提供する責任を共有できるようにします。シフトレフトテストとシフトレフトツールは、よくあるバグやセキュリティ問題によるボトルネックを防ぎ、組織がソフトウェアをより頻繁にリリースできるようにします。

シフトレフトセキュリティツールとは?
シフトレフトセキュリティツールは、既知の脆弱性を検出し、その結果を分類します。傾向やパターンの特定にも活用できます。侵害ではシステムへの侵入にアプリケーション層が悪用されることが多いため、シフトレフトセキュリティツールはアプリケーション層のセキュリティ強化に欠かせません。開発者がビルドやリリースの段階で、既知の脆弱性やコードエラーをテストできるよう支援します。新たな脆弱性が絶えず発見される中、シフトレフトセキュリティツールは多くのメリットをもたらします。
シフトレフトセキュリティツール
人気の高いシフトレフトセキュリティツールを5つご紹介します。
静的アプリケーションセキュリティテスト(SAST):SASTは、ソースコードを静的な状態で解析するテストです。脆弱性につながるおそれのある弱点を特定し、レポートを生成します。
動的アプリケーションセキュリティテスト(DAST):DASTは、システムの内部動作について詳細な知識がなくても、アプリケーションの実行中に仕様に基づいてテストを行います。DASTツールは、ファジングを用いて実行中のコードを解析し、リクエスト、レスポンス、インターフェース、スクリプト、インジェクション、認証、セッションに関する問題を特定します。
ソフトウェア構成分析(SCA):オリジン分析とも呼ばれるこの手法では、ソースコードに含まれるソフトウェアコンポーネントやライブラリをすべて分析します。既知の脆弱性を特定し、利用可能なパッチやアップデートをユーザーに通知します。
インタラクティブアプリケーションセキュリティテスト(IAST):静的解析と動的解析を組み合わせたハイブリッド型のIASTツールは、事前に定義したテストケースを使って、アプリケーションやデータフローをテストします。結果に基づいて、追加のテストケースを提案することもあります。
サービスとしてのアプリケーションセキュリティテスト(ASTaaS):この方法では、組織が外部企業にアプリケーションのテストを委託します。ASTaaSでは通常、静的・動的なセキュリティテストに加え、ペネトレーションテストやアプリケーションプログラミングインターフェース(API)の評価も行います。
シフトレフトセキュリティのベストプラクティス
セキュリティをシフトレフトするために実践できることをいくつかご紹介します。
シフトレフトセキュリティのポリシーを定める:セキュリティポリシーを定めることは、シフトレフトセキュリティの第一歩として有効です。ポリシーによって作業開始前に境界を自動かつ一貫して設定し、セキュリティを含む効率的な開発プロセスに不可欠な情報を提供できます。
ソフトウェアがどこで、どのように作られているかを評価する:開発者がセキュアコーディングのプラクティスへの理解を深めたら、SDLCを見直すとよいでしょう。ソフトウェアの作成場所や方法を把握すれば、ライフサイクルのより早い段階でテストを行うための、小さく始められる取り組みを特定できます。また、自社のコードベースに適したツールも見つけられます。
セキュリティの自動化を取り入れる:開発チームはセキュリティ自動化ツールを活用しましょう。セキュリティの自動化では、ソフトウェアによるプロセスを使って、アプリケーションやシステムに対する外部の脅威をプログラムで検出、調査、修正します。これにより開発ライフサイクルを加速し、市場投入までの時間を短縮できます。
コードの作成と並行してセキュリティの修正を実施する:理想的には、開発の進行に合わせてセキュリティをプロセスに取り入れ、できるだけ速くフィードバックを提供します。これにより、開発者は作業中のコードに対するフィードバックを受け取り、すばやく修正できます。
可視性を文化に根付かせる:シフトレフトセキュリティの重要な目標は、リリース前後を通じてコードの安全性を維持することです。そのためには、チームがアプリケーションセキュリティを常に可視化できる必要があります。問題があれば、ソフトウェアアップデートをリリースして適宜修正できます。
シフトレフトセキュリティの実践
シフトレフトセキュリティは、DevSecOps戦略を成功させるための柱ですが、責任を持って実践する必要があります。開発者が既存の開発ワークフローにセキュリティを摩擦なく、妨げられることなく組み込めるようにし、適切なレベルの監督を行うことで実現できます。一方で、開発者がクラウドネイティブセキュリティの課題をより深く担うようになる中、開発者が使うツールは、従来の運用担当者向けツールとは異なるものになることを理解する必要があります。