DevSecOpsへのより良いアプローチ

今日のDevSecOpsに関する問題の多くは、重大な脆弱性を捕捉しようと、製品サイクルの最後にテストを追加してセキュリティを「修正」しているかぎり、つねに再発の危険性があるものです。この記事では、効果的な戦略によってそのような状況を好転させ、セキュリティテストを開発の初期段階に移行してDevSecOpsをサポートする方法を学びます。

以前の投稿では、SecDevOpsについて取り上げ、なぜそれが一般的に使われている用語であるDevSecOpsよりも優れているかを説明しました。セキュリティは、製品をリリースする直前の付け足しまたはゲートプロセスとして後回しにされることがよくありますが、製品がまさにリリースされようとしているときにセキュリティの問題を解決するのは困難です。より一般的な名称であるDevSecOpsとは違って、SecDevOpsという名前が表すように、セキュリティを左にシフトするのが成功への鍵です。セキュリティは各開発者の日々のワークフローの一部でなければなりませんし、ソフトウェアパイプラインに統合されていなければなりません。

Parasoftの製品担当副社長としての私の仕事は、顧客がこれを簡単に行えるようにすることです。具体的には、どういうことでしょうか?第一に、セキュリティ管理とポリシーのシフトレフトを自動化し、DevSecOpsの影響とリスクを軽減しながら、セキュリティをパイプラインに組み込むのを支援します。では、それにはどうしたらよいのでしょうか?この後、セキュリティをDevOpsに統合する際によくある課題を軽減する方法を説明します。その後、セキュリティを本来あるべき場所にシフトレフトさせるDevSecOpsワークフローとはどのようなものかについて見ていきます。

DevSecOps戦略の成功を妨げる課題の解決

今日のDevSecOpsに関する問題の多くは、重大な脆弱性を捕捉しようと、製品サイクルの最後にテストを追加してセキュリティを「修正」しているかぎり、つねに再発の危険性があるものです。問題がなぜ、どのように発生するのか、そしてより賢くセキュリティにアプローチすることで、問題をどのように解決できるのかについて、次にいくつかの例を示します。

課題: セキュリティを「修正」する方法がわからない

ほとんどの開発者やテスターは、(まだ)セキュリティの専門家ではないため、開発の後期段階でセキュリティを「修正」するように言われても、何をすべきかが明確でなければ、それは無茶な要求です。

解決策: セキュリティを徐々に向上させる

チームはセキュアコーディング標準や一般脆弱性に関する静的解析などの一元化されたポリシーを使用し、開発ライフサイクル全体にわたって徐々にセキュリティを向上させることができます。さらに、セキュリティツールは、なぜ脆弱性が存在するのか、それらがどのように悪用されるのか、そして最終的には、脆弱性をどのように排除しテストするのかについてのガイダンスを開発者やテスターに提供します。Parasoftの静的解析ツールを使用すると、業界のセキュアコーディング標準(CWE、OWASP、CERT、UL 2900など)に基づいて一元化されたポリシーを簡単に定義できます。チーム全体が次に何をすべきかを学習し続けられるよう、ドキュメント、サンプル、トレーニングも組み込まれています。

課題: サイクル終盤でのセキュリティテストにより、遅延と本番環境への脆弱性の残存が発生する

よくある、完成間近の製品にセキュリティをねじ込もうとするアプローチでは不十分です。多くの脆弱性が製品コードに入り込んでいます。

解決策: セキュリティ分析を開発の初期段階に統合する

セキュリティを日々の開発や運用に組み込むことができます。開発者がIDE内で直接分析を実行できるようにし、セキュリティコンプライアンスを 開発の最初期段階にシフトするべきです。Parasoftツールはビルドプロセスと統合できるほか、CIパイプラインから脆弱性が排除されていることを確認できるCIプラグインを用意しています。収集されたデータはビルドごとに保存され、レポート作成および分析ダッシュボードで利用できます。

課題: 最後の瞬間になるまでプロジェクトのセキュリティリスクの状態がわからない

脆弱性アセスメントを何も行っていない場合、なんらかのテストが行われるまで、プロジェクトにどんなセキュリティリスクがあるかは、まったく未知の状態です。サイクルの終盤でテストを行うと、セキュリティ脆弱性が遅い段階で発見されることで、サイクルの混乱や手戻りにつながりやすい傾向があります。このような土壇場での果敢な努力にもかかわらず、依然として多くのセキュリティ脆弱性が顧客の手に渡ります。

解決策: ソフトウェアの品質とセキュリティの継続的な監視

優先順位付けとコース修正を可能にするために、リアルタイムのコンプライアンスレポートは、アクセス容易なダッシュボードを備え、概要レベルでも詳細レベルでもデータを参照できるようにするべきです。Parasoftは、柔軟にカスタマイズ可能なセキュリティダッシュボードにより、セキュリティ監視のオーバーヘッドを排除します。Parasoftのセキュリティダッシュボードはインタラクティブで、どこからでもアクセスでき、開発者からチームリーダー、上級管理者まで、あらゆるユーザーに対応できるよう設計されています。

Parasoftの使用によりスマートなSecDevOpsワークフローを実現

上記のような課題を理解して、対応を始める準備ができたら、まず既存の開発ワークフローにテストツールを統合することから始めます。これは、段階的な採用とROIの最大化の重要な鍵です。典型的なCI / CDパイプラインにどのようにParasoftツールを統合できるのか、またDevOpsでセキュリティを「シフトレフト」する際に、ツールがどのように役立つのかを見てみましょう。

ParasoftのDevSecOpsワークフロー

上のワークフローを見ると、コミット前とコミット後、つまりソースリポジトリにコードをサブミットする前後の両方でコード解析を実行しているのがわかります。 コードをチェックインするに品質とセキュリティを向上させるよう開発者を支援することは、「シフトレフト」を実現するうえで重要です。Parasoftのツールはこの時点から支援を始め、さらに、コードがチェックイン、ビルド、デプロイされた後にもずっと役に立ちます。

コミット前ワークフロー:

  1. プロジェクトと組織のニーズに合ったセキュリティ標準を決定します(例:OWASP、CWE、CERT)。たとえば、準拠のレベルやコーディング規格の構成は、ニーズに合わせてカスタマイズできます。セキュリティ規格と品質規格を組み合わせたものにすることもできます。
  2. セキュリティポリシーをテスト コンフィギュレーションという形でカプセル化します。これは通常、プロジェクト全体でチームリーダーによって行われます。
  3. 定義した設定は、開発者が各自でコード作成してテストするときに利用できるようにします。ここで重要な点は、すべての開発者のデスクトップ環境でこれらの標準を利用でき、誰もが同じ標準に従って作業できることです。
  4. チェックイン前にチェッカーをコードに適用します。私たちのこれまでの経験から言って、テストコンフィギュレーションへの準拠をチェックインのゲートにしないことがベストプラクティスです。ツールでは必ずしも評価できないさまざまな理由から、完全に準拠していないコードがチェックインされることはよくあります。「完全な分析」を実行し、セーフティネットとして機能するためにコミット後検証があります。

コミット後ワークフロー:

  1. コードをビルドし、既存のテストを実行した後、プロジェクト全体の静的解析を実行します。
  2. セキュリティダッシュボードで公開された結果を調べて、懸念のある領域を特定します。
  3. 結果を分析し、違反に優先順位を付け、タスクという形で適切な開発者に割り当てます。Parasoftを利用すると、プリセット済みのカスタマイズ可能なダッシュボードによって即時フィードバックが可能です。
  4. 警告および違反は公開され、各自のIDEで確認できるようになっているので、それに対処します。

セキュリティを品質の一部として組み込む

ほとんどのソフトウェア開発チームは、現在のプロセスの成熟度にかかわらず、高品質のコードを提供する必要性を理解しています。そのような既にある意識をセキュリティ向上にも適用すると、セキュリティ要件、管理、および標準を既存の品質改善プロセスの一環として組み込むことができます。ダッシュボードレベルでは、セキュリティコンプライアンスをリアルタイムで表示でき、強調表示されている懸念領域に基づいて問題のある領域を掘り下げることができるため、セキュリティが日常の品質管理の一部になるのに役立ちます。

まとめ

開発ライフサイクルのできるだけ早い段階でセキュリティを優先して、セキュリティ標準の適用と優れたプラクティスの両方を「シフトレフト」し、DevSecOpsを正常に達成することが重要です。これを可能にするには、開発者がコードを書いたらすぐに脆弱性を検出して除去できるよう、アクセスしやすく、導入しやすいプロセスが必要です。Parasoftのカスタマイズ可能なリアルタイム分析およびレポートダッシュボードは、プロジェクトの状況、選択された標準への準拠、および最も懸念が高い場所について、チームリーダーおよびセキュリティ専門家に即座にフィードバックを提供するので、組織全体がリスクを理解できます。

(この記事は、開発元Parasoft社 Blog 「A Better Approach to DevSecOps」2019年5月30日の翻訳記事です。)

 

Parasoft の C/C++ 言語対応テストツール C++test Java 言語対応テストツール Jtest .NET Framework 対応テストツール dotTEST

C++test Jtest dotTEST
Top