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" を紹介します。
設計段階でプロジェクトのセキュリティ面について考える時間を増やすことで、後になってから脆弱性の発見、優先順位付け、修正に費やす時間が減り、全体的なサイクルタイムがほぼ確実に短縮されます。
自動化
DevOpsとDevSecOpsに関して言えば、多くの場合、多くの場合、Automate機能はほとんどの場合、そこから始めることになります。それは理にかなっています。DevOpsとDevSecOpsは、最終的には、信頼性と信頼性の高い機能をより早く提供することで、価値をより早く実現することを目的としています。しかし、自動化はスピードだけではありません。
その核心は、「なぜ自動化するのか」が「何を自動化するのか」と同じくらい重要です。おそらく、それ以上に重要です。
例えば、品質保証(QA)テスト環境に展開する前に、統合ビルドの初期検証の一部としてセキュリティテストを行いたいとします。そのためには、統合ビルドを進める前にコードストリームの静的解析テストを自動化することにします。
ビルド前に静的解析を実行することは素晴らしいことですが、重要な問題は、いつ、どこで実行するのかということです。ビルドを開始する前にビルド環境で実行しますか。もしそうだとしたら、それはビルド時間にどのような影響を与えますか。ビルドに通常30分かかる場合、その時点でスタティックスキャンを実行すると、認識されているビルド時間が2倍になる可能性があります。重要な脆弱性が見つかった場合はどうしますか。ビルドを実行しないようにしますか、それとも深刻な問題があることを十分に理解した上で、ビルドを続行させますか。それとも、個々の開発者に、コミットする前にスキャンを実行して重要な問題を解決することを義務付けるのでしょうか。その場合、開発者が問題を解決する方法を知らない場合、どのようにして解決できるようにするのでしょうか。開発者をセキュリティチームとペアにしていますか。
すべての有効な質問は、実装の前に考えなければなりません。
自動化のポイントは、単に決められた方法でテストを実行して結果を報告するだけのものではないということです。 もちろん、テストは実行されるべきであり、結果は報告されるべきである。 しかし、間違った方法で自動化を追加することは、助けるよりも傷つけることになる。 それは、情報過多やアラート疲労を引き起こす可能性があります。 優れた自動化は、行動と決定を見て、プロセスの摩擦と無駄を排除しようとする。
ここでは、助けるべきである設計上のいくつかの "Robservations" は、次のとおりです。
詳細
今回のブログでは、Construct テーマと Design と Automate の機能に焦点を当てました。 第3部では、「強化」テーマと「教育と統治」の機能を見ていきます。このトピックについてさらに詳しく知りたい方は、"Go Beyond Application Testing to Continuous Security" と題した先日のウェビナーのリプレイをご覧ください。