HCL AppScan - 継続的なセキュリティの構築

2020/8/13 - 読み終える時間: 3 分

AppScan を道具として継続的に使いこなす方法について書かれた英語版ブログの記事 HCL AppScan - Constructing Continuous Security の翻訳版です。


HCL AppScan - 継続的なセキュリティの構築

2020年8月12日

著者: Rob Cuddy / HCL

画像の説明

継続的セキュリティに関する最初のブログでは、2 つの主要な能力を含む 3 つのテーマ領域の概要を説明しました。 今回のブログでは、Construct のテーマと Design and Automate の機能に焦点を当ててみたいと思います。

Construct は、既存のソフトウェア開発プロセスにセキュリティを追加しようとする場合、ほとんどの組織が最初に着手する場所です。チームは API を使用したり、CLI を活用したりして、コードのコミットやビルド時に行われるスキャン機能を提供します。そして、それらのスキャンの結果とフィードバックを実行可能なものにする方法を探します。

これは素晴らしいスタートです。

しかし、本当にうまく構築したいのであれば、考慮すべきことはもっとある。例えば、山の中に旅行に行き、夢のキャビンを建てるのに最適な土地を見つけたとします。あなただけの木を切り倒して建物を建てることから始めますか。もちろんそうではありません。あなたは計画を立てることから始めます。そこには、許可を得るために、発生する必要があり、最初に構築され、設定する必要がある基礎を地面に水平にする必要があります。 その小屋を成功させるためには、方法と順序があります。

ソフトウェアにも同じことが言えます。

多くの組織は、何年もかけて技術的な負債を回収してきましたが、今ではその負債を返済するか、新しい機能を作るかの日々の戦いになっています。多くの場合、技術的な負債を処理しなければならない時は、そうせざるを得ない時であるように思われます。技術的な負債を処理しないことの痛みや壊れ方があまりにも大きくなり、物事を変えなければならなくなる。対照的に、成功しているビジネスは、これらの考え方の間で適切なバランスをとることができるものです。。何が彼らにこれを可能にするのでしょうか。それは、デザインに注意を払うことです。


デザイン

建築の世界 では「形は機能に従う」とよく言われます。つまり、建物や構造物をどのように作るかは、それが何に使われるかによって大きく決まるということです。意図によって発明が決まるのです。

ソフトウェアでは、私たちは直感的に同じものが欲しいと分かっていても、狭く限られた範囲で運用することが多い。新しい機能や能力を構築し、それを使って何を達成したいかは分かっていますが、それがシステムの他の部分とどのように相互作用するかを実際に確認する手段や可視性が不足していることがよくあります。そして、セキュリティにとっては、これが大きな問題となります。

そのため、継続的なセキュリティに関しては、プロジェクトの開始時から、SDLC のすべての段階で継続的なセキュリティを導入する必要があります。これは、ユースケース、ヒルステートメント、ユーザーストーリー、カンバンボードなどのすべてに、セキュリティの特定の側面が含まれていることを意味します。与えられた機能がどのように動作するかの概要を示す何十ものステップを含む叙事詩を作成し、最後に「そしてそれは安全でなければならない」というステップを追加するような時代は終わりました。

優れたデザインをすることはチームスポーツであり、複数のプレイヤーが必要です。あなたが開発者であれば、最後に脅威のモデリング演習に参加したのはいつですか。自分のコードが危険にさらされる可能性のあるさまざまな方法を考えたことがありますか。あなたがセキュリティの専門家であれば、開発チームを評価に参加させたのはいつですか。ビジネスへの影響に関連して、脅威とリスクを検討していますか。

ここでは、設計に関するいくつかの "Robservations" を紹介します。


  • 脅威のモデリングにゲーミフィケーションを使用する。 脅威のモデリングにゲーミフィケーションを使用することで、コミュニケーションを容易にし、非難ゲームを避けることができます。 使うことができる素晴らしいゲームがあります。 特権の昇格 (Elevation of Privilege) (githubでも利用可能)


  • 制約として機能するセキュリティ要求事項がある。 セキュリティ要件を満たさないソフトウェアのデプロイは、それらが解決されるまでプロセスを停止させるべきです。
    • これはまた、セキュリティ上の欠陥を発見した人が誰 (Anyone) でも、配送や出荷を停止することを許可すべきであることを意味しています。これは、問題が修正されるまで自動車作業員が生産を一時停止することを許可する、有名なトヨタの工場のアンドンの仕組み (Andon cords) と同じ考えです。
    • セキュリティ上の欠陥を修正するためにリリースを遅らせた方が、後になってデータ漏洩によってその代償を支払うよりもずっと良いことです。


  • プロジェクトに敵対的ユースケースを追加して、失敗しないようにする。 例えば、侵害につながる可能性のある様々なステップやイベントを検討し、それらを1つ以上のユースケースで定義する。
    • 例として。例えば、あるユースケースでは、次のような簡単なステップがあるかもしれません。 "リモートハッカーとして、不正なURLを挿入し、それによってこのウェブサイトへの不正アクセスを得ることができます。
    • このようにすることで、チームは「ハッカーのように考える」ようになり、より強固なセキュリティを日常的に構築することができるようになります。


設計段階でプロジェクトのセキュリティ面について考える時間を増やすことで、後になってから脆弱性の発見、優先順位付け、修正に費やす時間が減り、全体的なサイクルタイムがほぼ確実に短縮されます。


自動化

DevOpsとDevSecOpsに関して言えば、多くの場合、多くの場合、Automate機能はほとんどの場合、そこから始めることになります。それは理にかなっています。DevOpsとDevSecOpsは、最終的には、信頼性と信頼性の高い機能をより早く提供することで、価値をより早く実現することを目的としています。しかし、自動化はスピードだけではありません。

その核心は、「なぜ自動化するのか」が「何を自動化するのか」と同じくらい重要です。おそらく、それ以上に重要です。

例えば、品質保証(QA)テスト環境に展開する前に、統合ビルドの初期検証の一部としてセキュリティテストを行いたいとします。そのためには、統合ビルドを進める前にコードストリームの静的解析テストを自動化することにします。

ビルド前に静的解析を実行することは素晴らしいことですが、重要な問題は、いつ、どこで実行するのかということです。ビルドを開始する前にビルド環境で実行しますか。もしそうだとしたら、それはビルド時間にどのような影響を与えますか。ビルドに通常30分かかる場合、その時点でスタティックスキャンを実行すると、認識されているビルド時間が2倍になる可能性があります。重要な脆弱性が見つかった場合はどうしますか。ビルドを実行しないようにしますか、それとも深刻な問題があることを十分に理解した上で、ビルドを続行させますか。それとも、個々の開発者に、コミットする前にスキャンを実行して重要な問題を解決することを義務付けるのでしょうか。その場合、開発者が問題を解決する方法を知らない場合、どのようにして解決できるようにするのでしょうか。開発者をセキュリティチームとペアにしていますか。

すべての有効な質問は、実装の前に考えなければなりません。

自動化のポイントは、単に決められた方法でテストを実行して結果を報告するだけのものではないということです。 もちろん、テストは実行されるべきであり、結果は報告されるべきである。 しかし、間違った方法で自動化を追加することは、助けるよりも傷つけることになる。 それは、情報過多やアラート疲労を引き起こす可能性があります。 優れた自動化は、行動と決定を見て、プロセスの摩擦と無駄を排除しようとする。

ここでは、助けるべきである設計上のいくつかの "Robservations" は、次のとおりです。


  • 最初にボトルネックを特定する。 Eliyahu M. GoldrattのThe Theory of Constraints (または Phoenix Project を読んだことがある人)に精通している人は、ボトルネック以外のどこかのプロセスに行われた改善は幻想であることを知っているでしょう。
    • ボトルネックの後の改善は、待っているだけなので、役に立たない。
    • ボトルネックになる前の改善は、ボトルネックでさらに山積みになる。


  • 小さなことから始めよう。一度にすべてを自動化しようとしないこと。 そうすることで、プロセスの一箇所での自動化の影響を測定することがはるかに困難になる。これは、後の最適化の評価をより困難にする。
    • 平凡な手動プロセスが発生している場所や、ステージ間のハンドオフがある場所を特定し、そこに自動化を追加する。
    • 自動化がその時点で追加する利益を定量化する。


  • 二度測定して、一度追加すること。 熟練した大工や芸術家のように、我々が正しいことをしていることを確認するために測定値を検証することが重要である。
    • プロセスの別のポイントに自動化を追加する前に、現在のプロセスのスループットと決定要因が何であるかを自信を持って知ることができる。これにより、システムを十分に理解することができます。


詳細

今回のブログでは、Construct テーマと Design と Automate の機能に焦点を当てました。 第3部では、「強化」テーマと「教育と統治」の機能を見ていきます。このトピックについてさらに詳しく知りたい方は、"Go Beyond Application Testing to Continuous Security" と題した先日のウェビナーのリプレイをご覧ください。

About

HCL Japan の Software 部門の複数担当者で HCL Software 全般について記しています。