Jump to section

シフトレフトとシフトライト

URL をコピー

ユーザーの期待、機能要件、セキュリティ対策に対応するには、ソフトウェア開発ライフサイクル全体を通したテストが重要です。シフトレフトとは、できるだけ早期にセキュリティテストを組み込んで脆弱性を発見し、開発中に可能な限り早く不具合を修正することです。シフトライトとは、プロダクションステージでユーザーの行動、使用状況、パフォーマンス、セキュリティの指標を監視してソフトウェアの運用性を確認することです。

シフトレフトとシフトライトはどちらも、継続的なテスト手法に焦点を当てて、DevOps プロセスとソフトウェア開発ライフサイクル (SDLC) 全体で新しい製品や機能の品質と性能を評価、確保することを目的としています。アジャイル手法におけるシフトレフトとシフトライトの原則の背後には、大きな問題になる前に潜在的な問題を発見するために、「小さく失敗して速やかに回復する」という考え方があります。

シフトレフトとシフトライトを理解するために、まずはソフトウェア開発ライフサイクルを左から右に延びる一本の線と考えてください。その線の左半分はコーディングステージと構築ステージから成り、右半分はソフトウェアのデプロイメントと監視を指すプロダクションステージです。

従来、ソフトウェアのセキュリティテストは、SDLC の半ばを過ぎてプロダクション環境に送り出される直前にしか行われていませんでした。しかしテストを先延ばしすると、セキュリティの欠陥が見逃されたままソフトウェアのライフサイクルプロセスが先に進んでいってしまいます。この結果、最終的に脆弱性が発見されたときには、チームはその時点ですでにアプリケーションにコンパイルされている欠陥を特定して修正するために必要な、複雑でコストのかかる手直しに苦労することになります。

そのうちに組織は、SDLC の早い段階でボトルネックを解消できれば、不具合やエラーの修正にかかるコストを抑え、リソースを節約してより優れた完成品を生み出せることに気付き始めました。この頃に「セキュリティを左にシフトする」というコンセプトが生まれ、先進的なソフトウェア開発の基本になりました。

開発者はセキュリティの専門家ではありませんし、そうなりたいと望んでいるわけでもありません。彼らはただでさえ、リリース頻度について行くのに必死です。特に、誤って深刻な脆弱性が導入されてしまった可能性のある、他の開発者が作成したコードを修正しなければならない場合はなおさらです。

ソフトウェア・アーキテクチャが複雑化、拡大、分散化するにつれて、組織全体で効果的にセキュリティを監視および管理することは難しくなります。ハイブリッド環境全体で継続的デプロイメントを採用する先進的なソフトウェアデリバリー手法では、アプリケーション開発プロセスの早い段階でセキュリティガードレールを提供し、各ステップのセキュリティを自動化して、セキュリティをビジネスイネーブラーに変える新しいセキュリティアプローチが必要です。

開発者は事前対策としてシフトレフト戦略を使用して、パイプラインを先に進み過ぎる前に欠陥を特定、修正することで、アプリケーションのセキュリティを向上させることができます。この戦略では、セキュリティの実装とテストが、後付けで行われるのではなく、開発プロセスのできるだけ早い段階で組み込まれます。シフトレフトは、早期かつ継続的なセキュリティ統合を重視する DevSecOps の台頭と密接に関連しています。 

組織は構築、デプロイ、ランタイムの各フェーズでセキュリティインシデントに遭遇します。シフトレフトアプローチを使用して DevSecOps を実装および自動化することで、開発者を助けるガードレールができ、それによって構築ステージとデプロイステージでのユーザーエラーが減少し、ランタイム時のワークロードを保護できます。

シフトレフトテストに関係する手法には、次のようなものがあります。

  • 静的アプリケーション・セキュリティ・テスト (SAST) - アプリケーションのソースコード、バイトコード、バイナリーコードのセキュリティ脆弱性に関する分析。
  • 動的アプリケーション・セキュリティ・テスト (DAST) - 実行中のターゲットに対して自動化されたセキュリティスキャンを行うことで潜在的なセキュリティの欠陥を見つけるブラックボックステスト手法。
  • 脅威モデリング - 特定のシステムで行われる各意思決定について考え、それらが直ちにまたは将来的にそれぞれのセキュリティプロファイルに与える影響を推定するプロセス。
  • セキュリティ・アーキテクチャのレビュー - リスクを特定、評価、軽減することによる、既存および新たな脅威とリスクに対するセキュリティ対策の強化。
  • コンテナイメージスキャン - 潜在的なセキュリティ脅威の検出を目的とした、コンテナイメージのレイヤーごとの分析。
  • コード署名 - プログラム、ファイル、またはソフトウェアアップデートにデジタル署名を付与して、インストール時や実行時に信頼性と整合性を確認できるようにする方法。 

シフトレフトを実施する目的は、コード作成時に早めに脆弱性を見つけて修正することです。これによってセキュリティが強化されるだけでなく、優れた品質のソフトウェアをより迅速かつ頻繁に提供することで、ユーザーエクスペリエンスと機能も向上します。開発効率が上がり、開発サイクルの早い段階でソフトウェアのバグを検出して対処できるため、オーバーヘッドコストも削減できます。 

脅威ベクトルがますます巧妙化し、攻撃対象が急激に拡大し続けているため、企業はビルドフェーズでシフトレフトテストを行うだけでは、進化するセキュリティ脅威から自社を十分に守れないことを認識しています。

この結果、シフトレフトを補完するものとしてシフトライトテストが開発されました。シフトライトとは、ポストプロダクション環境でテスト、品質保証、性能評価を継続して実施することです。 

シフトライトテストを実施するために、開発チームは機能、性能、耐障害性、ユーザーエクスペリエンスを調べることを目的として、ソフトウェア開発サイクルの終盤に制御実験を行います。

主要な制御とリアルタイムの可視化のために使用されるシフトライトテストの手法には、次のようなものがあります。

  • SIEM - セキュリティ情報およびイベント管理の略。組織が脅威を検出し、分析し、対処するのに役立つソリューションです。
  • SOAR - セキュリティ・オーケストレーション、自動化、対処の略。IT チームの負担を軽減することを目指して、さまざまな人とツールの間でタスクの調整、実行、自動化を行います。
  • カナリアデプロイメント - 新機能をユーザーベース全体にリリースする前に一部のユーザーを対象に行うテスト。
  • デプロイメントリング - ユーザーへの影響を抑えながら、拡張機能の変更点をプロダクション環境に徐々にデプロイして検証します。
  • A/B テスト - コントロールグループを作成してさまざまなシナリオ、機能、外観などを導入し、各シナリオの反応と意図した反応を比較して仮説を検証するためのアプローチ。
  • フォールト・インジェクション・テスト - システムに意図的に障害を発生させてテストします。
  • API セキュリティテスト - egress トラフィックとアウトバウンドコールを追跡し、動作を把握してセキュリティインシデントを検出します。Istio は基盤となる通信チャネルを提供するサービスメッシュ・プラットフォームです。大規模なサービス通信の認証、認可、暗号化の管理に役立ちます。
  • カオスエンジニアリング - システムのレジリエンスをテストするための「意図的な破壊」。
  • ブルーグリーン・デプロイメント - アプリの以前のバージョンからほぼ同一の新しいリリースに (どちらもプロダクション環境で実行されている状態で) ユーザートラフィックを徐々に転送するアプリケーションリリースモデル。 

実際の環境でソフトウェアの動作を観察することで、チームはランタイムのセキュリティ脅威を事前に検出し、アプリケーションが意図したとおりに動作していることを確認できます。シフトライトテストによって、ユーザーからの継続的なリアルタイムフィードバックループが可能になるだけでなく、予測できなかった問題を分析する機会も得られます。 

組織がクラウドネイティブ・コンストラクトに移行し、マイクロサービスやコンテナのようなテクノロジーを含むようにアプリケーションをモダナイズする際は、シフトレフトとシフトライトの両方の戦略を採用することが推奨されます。チームが SDLC の全段階でエンドツーエンドのテストを実行できるようにすることで、組織は最終的な目標である継続的インテグレーション/継続的デリバリー (CI/CD) に近づきます。

シフトレフトとシフトライトの両方を行う手法を採用すると、効率の向上、製品の品質改善、セキュリティの強化、市場投入までの時間の短縮、ユーザー満足度の向上などのメリットが得られます。さらに、組織は検出時をベースとしたバグ修正の相対的なコストが時間経過とともに増えることに気づきました。つまり、問題を修正するまでにかかる時間が長くなるほど、コストも増えるということです。したがって、予防策としてシフトレフトを行えば、収益の改善が期待できます。 

ソフトウェア・サプライチェーンを保護するには多面的なアプローチが必要です。ソフトウェア・サプライチェーンのセキュリティを向上するためにできることは数多くあり、それぞれが組織と顧客の保護をさらに強化します。

組織の開発ライフサイクルにシフトレフトとシフトライトの原則を組み入れるには、まずソフトウェア部品表 (SBOM) の実装から始めます。これは、アーティファクトの一部であるすべてのソースと依存関係 (ソースコード、オープンソースとソフトウェアライブラリ、ミドルウェア、開発フレームワークなど) をネストしたインベントリーです。

その後、ソフトウェアの開発とデプロイメントのパイプライン全体でデータと分析を収集するように自動化されたテストの実装を開始します。SDLC の各ステージで継続的なテストを行うことは、パフォーマンスを監視し、根本原因を検出するために最適な方法です。

おそらく最も重要なのは、部門内と部門間でのコラボレーションとコミュニケーションを確実に行うことです。そうすることで、各チーム内の問題の領域を特定したり、適切なツールを見つけたりできます。 

急速に進化する今日のテクノロジー環境では、アプリケーションのデプロイメントにおけるスケーラビリティ、可搬性、効率を向上させるために組織がコンテナ化を採用するというケースが増えています。コンテナ化にはメリットがある一方、コンテナ化されたアプリケーションの安全、機密性、アクセシビリティを改善するために対処が必要な IT セキュリティの課題も存在します。クラウドネイティブアプリの利用が拡大するにつれて、コンテナと Kubernetes のセキュリティポスチャを強化することが不可欠になっています。

Red Hat® は、あらゆる製品のライフサイクル全体でオープンソースソフトウェアのメンテナンスに多大な投資を行っています。Red Hat が出荷するソフトウェアについては、単にサポートするだけでなく、セキュリティなどの重大な懸念事項に対処する責任も負っています。

Red Hat Trusted Software Supply Chain によって、組織はソフトウェア開発ライフサイクルに最初からセキュリティを組み込むことができます。適切なセキュリティソフトウェアを使って、サプライチェーンシステムでリスクや脆弱性を回避することが可能です。適切に保護しないと、組織はユーザーや顧客などのステークホルダーの信頼を失う危険性があります。Red Hat Trusted Software Supply Chain により、実績のあるプラットフォーム、信頼できるコンテンツ、リアルタイムのセキュリティスキャンと修復を使用して、ソフトウェアのコーディング、構築、監視を行えます。

Red Hat OpenShift® は、DevSecOps を自動化し、開発ライフサイクルの初期から全体にわたってセキュリティを統合することで、シフトレフトアプローチを支援します。すぐに使える多数の開発者用ツールや CI/CD 機能を備え、セキュリティに重点が置かれているため、安全で効率的なソフトウェア・サプライチェーンが実現します。Kubernetes を活用した包括的なアプリケーション・プラットフォームであり、革新的なアプリケーションの大規模な構築、デプロイ、実行、管理、セキュリティの提供に役立ちます。

Red Hat Advanced Cluster Security for Kubernetes はセキュリティをシフトレフトし、DevSecOps ベストプラクティスを自動化します。このプラットフォームは任意の Kubernetes 環境と連携して DevOps およびセキュリティツールと統合でき、チームによる運用化と、サプライチェーン、インフラストラクチャ、ワークロードの保護の強化を支援します。

Red Hat Ansible Automation Platform は、ソフトウェア開発ライフサイクル全体を通してセキュリティを優先しながら、IT 自動化を大規模に構築および運用できる、一貫したエンタープライズ・フレームワークを提供します。チームは 24 時間体制のサポートも活用しつつ、企業全体のセキュリティとコンプライアンスを自動化し、認定された自動化コンテンツを使用して、連携した形で脅威に対応できるようになります。Red Hat Ansible は、Red Hat と Red Hat のセキュリティ・テクノロジー・パートナーの両方によってサポートされる多数のセキュリティ統合も提供します。

関連資料

記事

DevSecOps とは

DevOps によるアジリティと応答性を存分に利用するのであれば、IT セキュリティはアプリケーションのライフサイクル全体を通じて、重要な役目を果たす必要があります。

記事

CI/CD とは

CI/CD によって、統合およびテストのフェーズからデリバリー、デプロイメントに至る、アプリケーションのライフサイクル全体を通じて、継続的な自動化と継続的な監視が導入されます。

記事

DevOps エンジニアとは

DevOps エンジニアは、組織内でのコラボレーション、イノベーション、文化的変革を可能にする特有のスキルと専門知識を持ち合わせています。  

DevOps の詳細はこちら

製品

Red Hat のエキスパートによる徹底的かつ集中的な研修。アジャイルの方法論とオープンソースツールを使用して、社内業務の課題に対処する方法について学びます。

Red Hat の戦略的アドバイザーが、企業組織の全体像を把握しながら課題を分析し、包括的かつコスト効率に優れたソリューションで課題を解決できるようお手伝いします。

リソース