シフトレフトとは?
DevSecOpsのコンテキストにおけるシフトレフトとは、アプリケーション開発プロセスの最も早いフェーズにテストとセキュリティを実装することを意味します。このプロセスは、セキュリティまたはテストコンポーネントをソフトウェア開発ライフサイクルの左側(早い段階)に移動するため、「シフトレフト(左側への移動)」と呼ばれます。
シフトレフトテストとは?
従来、アプリケーションテストは開発ライフサイクルの最後に実行されます。シフトレフトテストとは、プロセスの早い段階でコンポーネントをテストして、コンポーネントが適切に機能しているだけでなく、セキュリティ要件を満たしていることを確認するプロセスを指します。これにより、チームはこのようなアプリケーションの開発において運用効率を高めることができます。
シフトレフトセキュリティとは?
シフトレフトセキュリティは、アプリケーション開発プロセスの早い段階にセキュリティ慣行を埋め込むプロセスです。脆弱なコードがテストフェーズではなく開発時に特定されるため、侵害のリスクが軽減され、アプリケーションのセキュリティが向上します。
組織がデジタル変革を進め、アセットをクラウドに移行するにつれて、アプリケーションのセキュリティとワークロード保護に対する懸念が高まっています。ソフトウェアリリースのスピード、クラウドベースのサービスの利用、ソフトウェア開発プロセスへの自動化の導入、開発ツールチェーンのイノベーションの速度はすべて、アプリケーションのセキュリティを損なう傾向にあります。
攻撃者は、ペイロードに到達するために悪用できるソフトスポットを常に探しています。あらゆる規模の組織がサイバーセキュリティを強化するなか、ハッカーは脆弱なアプリケーションやワークロードを活用して目的を達成することに目を向けています。そして現在は、「すべての企業がソフトウェア企業である」ため、アプリケーションを悪用する機会はたくさんあります。
従来、コードはリリース前の最終段階としてセキュリティテストを受けていました。これだと、時間的余裕がなくなります。多くの場合、開発者は納期直前まで作業することになるので、セキュリティチームがコードの安全性を確保するための時間がほとんどありません。脆弱性が露呈すると、リリースが遅れるか、開発チームが各セキュリティ問題の修正に奔走し、セキュリティチームは修正の確認に奔走することになります。その結果、多額の費用が発生し、アプリのリリースや発売が遅くなります。また、急いでリリースを繰り返すと、脆弱性を見落としたり、脆弱性の優先順位が低く設定されたりする可能性が高くなります。アプリケーションのセキュリティは、ソフトウェア開発ライフサイクルの重要な部分であり、正しく実践することが最優先事項でなければなりません。
組織は、セキュリティを開発プロセスの重要な工程と位置付け、開発者自身がセキュリティ専門家になるよう強要することなく、また、アプリケーション開発プロセスを抑制することなく、開発者が安全で信頼性の高いソリューションを提供できるようになる方法を模索しています。この実現を助けるのが、シフトレフトセキュリティです。これは、クラウドネイティブなソフトウェアおよびアプリケーション開発に関するセキュリティ上の懸念を大幅に軽減します。
CNAPPの完全ガイド
CNAPP(クラウドネイティブアプリケーション保護プラットフォーム)が現代のクラウドセキュリティ戦略における重要な要素である理由と、これらを開発ライフサイクルに統合する最適な方法については、『CNAPPの完全ガイド』をダウンロードしてご確認ください。
今すぐダウンロードシフトレフトセキュリティの利点
シフトレフトアプローチをセキュリティに組み込むことには、次のような利点があります。
自動化
自動化されたプロセスにより、人的エラーが減り、生産上の問題も減少します。複数のテストを同時に実行できるため、テスト範囲が広がりテスターは他のタスクに専念できるようになります。
アプリケーショ配信の迅速化
シフトレフトセキュリティにより、DevOpsチームとセキュリティチームが並行して作業できるようになり、市場投入までの時間を短縮できます。セキュリティチームがレビューを実施する間、コーディングが中断されないため、アプリケーションの迅速な配信をサポートできます。継続的なテストにより、セキュリティ上の欠陥が迅速に発見されるため、修正の規模が小さくなり、修正に費やす時間が少なくなります。DevOpsチームとセキュリティチームが、多くのフラストレーションと深夜作業から解放されるとともに、ユーザーに喜ばれる新機能をより迅速に展開できます。
インフラストラクチャの改善
ソフトウェアの品質を向上させることは、シフトレフトセキュリティの目標の1つです。シフトレフトセキュリティでは、開発プロセスのできるだけ早い段階で問題を特定して解決する時間を確保できるため、インシデントがもたらす可能性のある悪影響を軽減し、顧客が経験したインシデントを排除することができます。
コスト削減
シフトレフトにより、開発の終盤でバグ修正やセキュリティパッチの適用を行う場合のコストを削減できます。顧客に対して更新プログラムを展開した後でバグが発覚すると、バグの修正費用は大幅に増加します。
コラボレーションの改善
シフトレフトアプローチでは効率性が向上するため、開発者がパニックに陥るような修復作業を経験する可能性も低くなります。効率性の向上は、開発、運用、セキュリティチーム間のコラボレーションの向上によるものでもあります。
シフトレフトのセキュリティツールとテクノロジーの種類
シフトレフトのセキュリティツールは、セキュリティスキャンツールとランタイム保護ツールの2つに分類できます。セキュリティスキャンツールは、セキュリティとDevOpsの統合を合理化するテストツールであり、ランタイム保護ツールは、実行中のアプリケーションを保護するサイバーセキュリティツールです。
セキュリティスキャンツールとイメージ評価
セキュリティツールとイメージスキャンツールの例を次に示します。
SAST(静的アプリケーションセキュリティテスト)
SASTは、アプリケーションの脆弱性を発見するために使用されるアプリケーションセキュリティ手法です。これは「ホワイトボックス」のテスト方法であり、アプリケーションの機能性よりも内部動作をテストします。SASTツールは、アプリケーションを実行せずにソースコードを分析するため、SDLC(ソフトウェア開発ライフサイクル)の初期フェーズで脆弱性を発見できます。そのため、修正の実装コストが低くなります。SASTツールはあらゆる種類のソフトウェアに対応していますが、静的コードのみをスキャンするため、ランタイムや環境に関する問題を検出することはできません。
ソフトウェアコンポジション分析 (SCA)
SCAは、コードベース内のオープンソースコードを識別します。オープンソースライセンスには、手動で追跡することが難しい制限があります。SCAは、パッケージマネージャー、マニフェスト、ソースコード、バイナリファイル、コンテナイメージなどを検査するプロセスを自動化し、その結果をソフトウェア部品表 (SBOM) にまとめます。次に、このSBOMを多数のデータベースと比較して、脆弱性、ライセンスの問題、コード品質の問題を明らかにします。その結果、セキュリティチームは、重要なセキュリティと法的脆弱性を迅速に特定し、軽減するための適切な優先順位をつけることができます。
DAST(動的アプリケーションセキュリティテスト)
DASTは、Webアプリケーションのセキュリティで使用される「ブラックボックス」テストの手法で、実行中であるアプリケーションの機能の脆弱性を発見することに重点を置いています。DASTは外部からのアプローチを表すもので、テスターはアプリケーションの内部動作を可視化できません。この形式のテストでは、SDLC(ソフトウェア開発ライフサイクル)の最後に脆弱性を発見します。DASTは実行中のアプリケーションを動的に分析するため、Webアプリケーションとサービスにしか対応していません。
ランタイム保護ツール
ランタイム保護ツールには、次のようなものがあります。
ランタイムアプリケーション自己保護 (RASP)
RASPは、アプリケーションの振る舞いをコンテキスト内で分析することで、アプリケーションへの攻撃をリアルタイムで検出します。アプリケーションからシステムへのすべての呼び出しを傍受して、アプリケーション内からデータリクエストを検証し、アプリケーション自体を効率的に使用して自身の振る舞いを監視します。RASPは、その保護機能がアプリケーションのサーバー上で動作し、アプリケーションを起動する際に起動されるため、Webアプリケーションと非Webアプリケーションの両方で使用できます。
Webアプリケーションファイアウォール (WAF)
WAFは、アプリケーションに侵入しようとする悪質なトラフィックをフィルタリングして監視し、ブロックすることで、悪影響を受けたデータがアプリケーションから流出するのを防ぎます。その振る舞いは、悪質なトラフィックと安全なトラフィックを区別する一連のポリシーによって決定されるため、その有効性は組織のセキュリティポリシーによって決まります。企業には何千ものWAFと何百万ものポリシーが存在する可能性があるため、すべてのWAFを最新の状態に保つには自動化が重要になります。
ボット管理
ボット管理では、ブロックリストと許可リスト、ボットトラップ、レート制限などのソリューションを使用することで、分散型サービス拒否 (DDoS) 攻撃、SQLインジェクション、クレデンシャルスタッフィングなどの攻撃をアプリケーション層(L7)で悪質なボットが実行するのを検出し、阻止します。ボット管理が厳しすぎると、正規のWebトラフィックが遮断されたり、テストや自動化を目的として社内で構築されたボットが妨害されたりする可能性があるため、注意が必要です。
コンテナイメージとサーバーレス関数のスキャン
現在のアプリケーション開発ではコンテナを使用して、アプリケーションのソースコードとそのすべての依存関係を1つのファイルにバンドルします。コンテナイメージは、コンテナファイルとマージされたファイルです。コンテナイメージでは、アプリケーションのコード、ランタイム、システムツール、システムライブラリ、設定が保持されます。コンテナイメージのスキャンでは、コンテナのコンテンツとコンテナイメージのビルドプロセスを分析して、セキュリティ上の問題や不適切な慣行を明らかにします。
最新のほとんどのアプリケーションには、自社で構築するには複雑すぎたり、コストがかかりすぎたりする機能を搭載するために、何らかのサーバーレスコンピューティングが使用されています。このため、サーバーレス関数のスキャンの必要性が高まっています。AWSやAzureなどでホストされている、これらのサービスを利用するには、企業のインフラからクラウドサービスプロバイダーなどにデータを移動する必要があります。転送中のデータと保存されたデータを保護するのは、アプリケーションの所有者の責任となります。自社のインフラストラクチャの保護だけに責任を負うクラウドサービスプロバイダーの責任ではありません。サーバーレス関数のスキャンには、従来のホスト型アプリケーションとは異なる種類の監視とデバッグが必要です。クラウドネイティブソリューションは、この目的に最適な選択肢です。
ワークロード保護
最新のアプリケーションは、コンテナ、Kubernetes、サーバーレスアーキテクチャのクラウドインフラストラクチャ全体に分散されています。こうした環境は常に進化しています。新たなサービスが追加されれば攻撃対象領域が拡大し、このような、複雑で激しく変化するエコシステム全体を可視化するのは困難です。
ワークロード保護では、個々のアプリケーションのワークロードのレベルでセキュリティコントロールが行われます。これにより、組織はアプリケーションのライフサイクル全体で脆弱性を特定して修正でき、コンテナやkubernetes、その他あらゆるワークロードに対し、コンプライアンスを強化して、セキュリティ設定とベストプラクティスを実装できるようになります。クラウドワークロード保護ソリューションは、ラテラルムーブメントを抑制し、行動の異常を明らかにして、コンプライアンスを追跡し、攻撃対象領域を縮小するものでなければなりません。
セキュリティをシフトレフトするためのベストプラクティス
シフトレフトを実践するには、以下のベストプラクティスに従う必要があります。
新しいアプリケーション開発にセキュリティを組み込む
セキュリティをどこまでシフトレフトするべきでしょうか。すべてのフェーズで実施する必要があります。セキュリティは、開発者がコーディングを開始した瞬間から、開発プロセスの一部である必要があります。APIを使用して、セキュリティを開発ツールセットに統合することで、セキュリティチームはコードがメインブランチにプッシュされる前に問題を発見できます。
アプリケーションとコンテナのセキュリティをDevOpsツールチェーンに統合する
シフトレフトアプリケーションのセキュリティはスキャンから始まりますが、DevOpsチームがその結果を活用できない限り、スキャンは役に立ちません。シフトレフトの効力は、DevOpsチームがセキュリティチームと連携して機能する手段を提供することにあります。したがって、スキャンの結果は、開発者も利用できるようにWeb IDEとWebパイプラインレポート内に配置します。プロジェクト内のすべての依存関係のインベントリーをまとめたSBOMの作成を自動化し、コンテナイメージスキャンとサーバーレス関数スキャンを使用して、コンテナイメージ、プロジェクトディレクトリ、またはサーバーレスサービス内に存在する既知の脆弱性を明らかにします。
スキャンを統合して可視性を向上させ、優先順位を正しく付ける
スキャンの目的はそれぞれ異なります。SASTとDASTは互いに補完して、それぞれがアプリケーションのセキュリティの基礎となります。オープンソースライブラリを使用している組織も、SCAの恩恵を受けることができます。レジストリーに到達する前に脆弱性をブロックするために、継続的インテグレーション/継続的デリバリー (CI/CD) パイプラインの複数のステップに、すべてのスキャンを統合する必要があります。また、ランタイムスキャンを実行して、新たな共通脆弱性識別子 (CVE) から保護する必要があります。
クラウドストライクのアプローチ
脅威に先手を打つことで、ビジネスを侵害から守ることができます。クラウドストライクは、世界で最も先進的なクラウドネイティブプラットフォームによってセキュリティを再定義します。これは、クラウド内のあらゆるワークロードを保護し、侵害を阻止することで、組織がクラウドネイティブアプリケーションを構築、実行、保護できるようにします。
CrowdStrike Falcon® Cloud Securityはセキュリティを自動化し、すべてのクラウド環境、コンテナ、Kubernetesアプリケーション上で、不審なアクティビティ、ゼロデイ攻撃、危険な振る舞いを検出して阻止します。CI/CDワークフローとの統合により、DevOpsチームはパフォーマンスに影響を与えることなく迅速に作業しつつ、ワークロードの安全性を維持できます。
CrowdStrike Falcon® Platformは、CrowdStrike® Security Cloudを搭載し、企業全体からのリアルタイムの攻撃の痕跡 (IOA)、脅威インテリジェンス、進化する攻撃者の戦術、高度なテレメトリを活用して、超高精度の検知、自動化された保護と修復、精鋭による脅威ハンティングサービス、優先付けされた脆弱性のオブザーバビリティを提供します。