大規模な脆弱性管理に役立つエンタープライズセキュリティのベストプラクティス
2020年11月9日
0 分で読めますエンタープライズセキュリティとは?
大規模なエンタープライズセキュリティでは、特に次のような課題への対応が求められます。
セキュリティ上の問題が増え続け、開発者やセキュリティエンジニアの時間が浪費されている。
開発者とセキュリティエンジニアの間で信頼感が薄れ、十分に連携できていない。
重大な脆弱性や修正可能な脆弱性の優先順位付けができず、脆弱性が長期間にわたって放置されている。
対応が必要な脆弱性が膨大にある中で、複数のチームにわたって効果的なセキュリティコンプライアンスを確保するには、どうすればよいでしょうか?
このエンタープライズセキュリティのベストプラクティスをまとめたチートシートでは、こうした課題を取り上げます。
エンタープライズセキュリティアーキテクチャやエンタープライズサイバーセキュリティソリューションを導入する際には、開発チームの作業を遅らせたり、ゲートを設けたり、妨げたりすることなくセキュリティを確保するなど、アプリケーションセキュリティの課題に直面することになります。
Snykは最近、開発者を第一に考えたプロジェクト管理機能を備え、セキュリティチームと開発チームの生産性向上に重点を置く、Enterprise Security Management at Scaleソリューションを発表しました。プロジェクト属性、プロジェクトタグ、プロジェクト単位のポリシー、プルリクエストの失敗条件などの機能は、開発者の対処を支援し、セキュリティチームが重要な課題に集中できるようにする好例です。
エンタープライズセキュリティアーキテクチャを改善するための対策:
修正が可能な場合にのみビルドを失敗させる
セキュリティチャンピオンをレビュー担当者として自動的に割り当てる
脆弱性修正のために優先順位付けされたプルリクエストを作成する
ライセンスコンプライアンス
到達可能な脆弱性

脆弱性修正のために優先順位付けされたプルリクエストを作成する
課題:バックログに多数のセキュリティ脆弱性があり、開発者は大量の情報に埋もれて、セキュリティ問題への対処に苦労しています。
解決策:修正可能な最も重大なセキュリティ脆弱性に集中し、全体的なリスクを低減します。
Snykは、標準化されたCVSSなどによるセキュリティ脆弱性のスコアリングが長年抱えてきた課題を軽減するため、脆弱性優先度スコアを導入しました。CVSSのようなスコアリングは、セキュリティ脆弱性が適切なコンテキストにおいて実際にどのような影響を与えるかを開発者やアプリケーションセキュリティエンジニアが判断するうえで、大きな課題となっています。CVSSによるセキュリティ脆弱性のスコアリングの課題についても詳しく解説しています。CVSSの基礎を知るうえでも役立つ内容です。
Snykの優先度スコアでは、エクスプロイトの成熟度、修正の有無、CVSSスコアなどのデータポイントを考慮し、脆弱性の優先度を0~1000の範囲で算出します。スコアが高いほど、脆弱性を早急に修正する必要があります。
セキュリティ脆弱性の大量の情報や長いテールに埋もれないよう、最も重大な脆弱性に集中し、全体的なリスクと脆弱性の露出期間を減らせるよう支援します。
開発者にとって役立ち、実際の行動につながる形で、どのように実現できるでしょうか?
Snykのインテグレーション設定を開き、プロジェクト内にある、優先度が最も高く修正可能なすべての脆弱性に対してプルリクエストを作成する機能を有効にします。ご安心ください。大量のプルリクエストで開発者を圧倒し、時間を奪うことはありません。新しいプルリクエストは1日1件だけ作成されます。これらのプルリクエストは対応可能で、アップグレード経路のある上流パッケージのリリースが含まれるため、開発チームによるレビューやマージにかかる手間を最小限に抑えられます。

セキュリティチャンピオンをレビュー担当者として自動的に割り当てる
課題:セキュリティ修正が自動化され、プロジェクトリポジトリにプルリクエストが作成されるのは便利ですが、誰がレビューすべきでしょうか?
解決策:作成されたプルリクエストにレビュー担当者を自動的に割り当てることで、自動修正や依存関係の自動アップグレードに対するセキュリティレビューを標準化します。マニフェストファイル(pom.xmlやpackage.jsonなど)を最後に変更したユーザーを担当者にすることも、セキュリティチャンピオンやチーム内の別のメンバーを指定して、プルリクエストによる変更のレビューを依頼することもできます。

修正が可能な場合にのみビルドを失敗させる
課題:開発者がオープンソースを安全に利用できるよう支援したいのに、結局は開発者の作業を完全にブロックしてしまい、調査結果に対して何も対処できないことも少なくありません。
開発者が、重大度の低いセキュリティ問題によってCIパイプラインが失敗し、プロジェクトを先に進められないことに気づきます。
開発者がセキュリティ脆弱性への対処に苦労しています。CIパイプラインで検出されてビルドが失敗したものの、その問題には実際に適用できる修正がありません。
解決策:セキュリティを受け入れ、失敗をノイズや誤検知として片付けずに対処できるよう、開発者のワークフローに役立ち、実際の行動につながるツールを提供しましょう。
Snykでは細かな設定が可能です。検出された脆弱性が高い重大度のしきい値を超えた場合にのみCIビルドを失敗させることができます。これにより、ビルド環境の失敗によって脆弱性への対応が必要になったとき、開発者は最も重要な問題から優先的に対処できます。
セキュリティ脆弱性が原因でCIパイプラインが失敗した場合、開発者には何を期待しますか?おそらく修正を期待するでしょう。それは当然ですが、多くのツールやインテグレーションは無条件にビルドを失敗させます。ここで、開発者を第一に考えるSnykの姿勢が活きます。CIインテグレーションには、検出された問題に修正がある場合にのみビルドを失敗させるフラグがあります。これにより開発者は、修正がないとわかるまで脆弱性のトリアージに延々と時間を費やすのではなく、セキュリティ問題の解決に実際に取り組めます。
これらのセキュリティ機能を利用するには、GitHubなど、お使いの環境に該当するインテグレーション設定を開き、たとえばsnykがプルリクエストをテストする際のビルド失敗条件を調整してください。

自社のコードから到達可能な脆弱性を優先する
課題:どのオープンソースコンポーネントを優先的に修正すべきか判断するのが難しい。たとえば、次のような悩みがあります。
オープンソースライブラリにセキュリティ脆弱性が多数ありますが、どのライブラリが本番コードで使われているか、どうすればわかるでしょうか?
開発者は「このオープンソースライブラリは使っていますが、脆弱性が存在するクラスやメソッドを実際に使っているか、どうすればわかりますか?」と言います。
解決策:Snykは、開発者やセキュリティエンジニアが何百もの脆弱性のトリアージ作業に優先順位を付ける方法を必要としていることを理解しています。そこで静的コード解析を適用し、使用中のサードパーティ製オープンソースライブラリにあるセキュリティ脆弱性が、自社のコード(ファーストパーティコード)から到達可能かどうかを判断します。
Snykは脆弱性が検出されたコンテキストを理解し、ビジネスリスクと露出期間を減らすために、修正作業の優先順位付けを支援します。
技術的には、到達可能な脆弱性を検出する機能は、アプリケーションのソースコードからプロジェクト内のオープンソース依存関係へとつながるコールグラフを構築するSnykのアルゴリズムに基づいています。
現時点では、到達可能な脆弱性の分析に対するSnykのサポートはJava、Maven、Gradleのプロジェクトに限られ、CLIテストまたはプロジェクトのテスト時にSnyk UIでのみ利用できます。Gitのサポートも近日中に提供予定です。
コードからの到達可能性に基づいてセキュリティ脆弱性を特定するには、次の手順に従います。
最新バージョンのSnyk CLIを使用していることを確認します
アプリケーションと関連するマニフェストファイルがあるフォルダに移動します
snyk test --reachableを実行します
到達可能な脆弱性が見つかると、テスト結果は次のスクリーンショットのように表示されます。

実は、この情報はすべてSnyk UIでモニタリングできます。
このマニフェストのスナップショットをSnykに送信すると、継続的なモニタリングとアラート通知を利用できます。プロジェクトをモニタリングするには、次を実行します。
これで、すべてのセキュリティ問題を到達可能な脆弱性でフィルタリングし、優先的に修正する脆弱性を絞り込めます。

到達可能な脆弱性の機能について詳しく知りたい方は、次のブログ記事をご覧ください。
技術的な詳細解説:Krysztof Huszczaによる到達可能な脆弱性:オープンソースセキュリティの効果的な優先順位付け
コンポジション分析ソフトウェアにおけるセキュリティ脆弱性の優先順位付けの重要性:Daniel BermanとMichael Komrazによるアプリケーションレベルの詳細なコンテキストを活用した優先順位付けの最適化、およびDanielによる開発者を第一に考えた優先順位付け機能の発表記事。
ライセンスコンプライアンスポリシー
課題:法務部門から次のような要望があり、エンタープライズセキュリティソフトウェアの課題に直面しています。
すべてのアプリケーションプロジェクトで使用しているオープンソースライブラリの一覧が必要です。
ライセンスポリシーに違反するコピーレフトソフトウェアを知らずに配布し、ライセンスや著作権法に違反することは絶対に避けなければなりません。
解決策:Snykでは、エンタープライズセキュリティとライセンスコンプライアンスの課題に、次の2つの方法で対処できます。
すべてのプロジェクトで使用しているライセンスのレポートを提供します。レポートはCSV形式でエクスポートできます。
オープンソースソフトウェアのライセンスポリシーを設定し、プロジェクト単位または組織単位で適用することで、社内の法務部門のガイドラインに準拠できます。
ソフトウェアライセンス管理
Snykのレポートタブでは、必要に応じて、インポート済みのすべてのプロジェクトや組織で使用されているライセンスを確認できます。
必要に応じて一覧をさらに絞り込んだり、特定のライセンスの影響を受ける依存関係やプロジェクトの数で並べ替えたりできます。特定のライセンス違反に対処する必要がある場合、法的要件への対応に優先順位を付けるのに役立ちます。
スプレッドシートを使って他のチームと連携するために一覧をエクスポートする場合は、CSVとしてエクスポートボタンをクリックして、ライセンスを含むソフトウェア部品表を作成します。

ライセンスポリシー
ソフトウェアライブラリの不適切な使用による法的措置のリスクや、さらに深刻なライセンス違反を避けるため、組織全体でライセンスポリシーを定めることは一般的です。
この課題に対処するため、Snykではプロジェクトにライセンスポリシーを設定できます。これにより、ビルドや継続的インテグレーションパイプラインでのライセンスチェックを失敗させることができます。
きめ細かいセキュリティポリシーを設定し、特定の属性に一致するプロジェクトに適用できます。適切なガードレールを設けながら、チームが十分な裁量を持って自律的に作業できるようになります。
Snyk UIでポリシーを設定するには、どうすればよいでしょうか?
ポリシーはグループレベルで設定するため、グループ管理者である必要があります。ポリシーは、そのグループに属するすべての組織とプロジェクトに適用されます。

ご覧のとおり、Snykではエンタープライズのライセンス要件に合わせて調整されたデフォルトのライセンスコンプライアンスポリシーがすでに適用されています。自社の法的要件に合わせてさらに調整することもできます。

プロジェクトを効果的に分類する
課題:エンタープライズセキュリティソリューションが急務であることは、次のような状況からわかります。
開発者やセキュリティエンジニアが、対応すべきプロジェクトを探すのに多くの時間を費やしている。
膨大なセキュリティ脆弱性に埋もれ、どこから着手すべきかわからない。
解決策:ビジネスへの影響度属性と技術スタックのメタデータを設定して、プロジェクトをセットアップします。これにより、サービスの重要度に応じた適切な注意喚起、デプロイ環境の詳細、アプリケーションの特性を把握でき、フロントエンドかバックエンドかも適切に示されます。
さらに便利なポイント:Snykでは、お客様からのフィードバックをエンタープライズ向けセキュリティソリューションに反映しています。お客様の声に耳を傾けているからこそ、何を開発すべきかがわかります。組織内でのアプリケーションの所有者を把握するのに役立つ機能をもう1つご紹介します。専用の_Project owner_フィールドを使えば、Snykプロジェクトにアクセスできる任意のユーザーや開発者を設定できます。
動画で確認したい方のために、属性やプロジェクトタグを使ってプロジェクトを管理する方法をまとめた短い動画をご用意しました。


次のプロジェクト一覧を見ると、圧倒されてしまうかもしれません。
どのプロジェクトから始めればよいでしょうか?組織全体や事業部門を対象に、このプロジェクト一覧を絞り込むにはどうすればよいでしょうか?

SecOps(セキュリティ運用)に携わっている方なら、こうした課題はよくあるものです。セキュリティチャンピオンやグループリーダーなど、組織のセキュリティを担う方は、エンタープライズセキュリティの課題に適切に対処するためのサポートを必要としていることでしょう。
Snykでは、この課題を次のように解決します。「百聞は一見に如かず」ということで、こちらをご覧ください。左側には、次の条件でプロジェクトを絞り込むためのフィルターが表示されています。
問題と修正可能な項目:非常に強力なフィルターです。実際に修正可能なセキュリティ脆弱性から開発者が優先して対応できるようにし、修正できない問題のトリアージや検証に時間を費やさずに済みます。エンタープライズ向けセキュリティソリューションを簡単に実現できます。
インテグレーション:ソース別にプロジェクトを参照できます。Snyk CLIで監視しているプロジェクトをお探しですか?GitLabやBitbucket Cloudのインテグレーション経由のプロジェクトをすべて検索したいですか?
環境:どのようなプロジェクトですか?フロントエンドですか?バックエンドですか?Snykの新しいGradleプラグインのサポートを使って監視しているモバイルアプリケーションかもしれません。ここですばやく絞り込めます。
ライフサイクル:エンタープライズセキュリティアーキテクチャでは、アプリケーションが外部に公開されているかどうかに応じて、セキュリティポリシーを適用する必要があることがよくあります。たとえば、企業の従業員だけが社内でアクセスするアプリケーションは、重要度が低い場合があります。このライフサイクル属性では、本番環境、ステージング環境、その他の環境のいずれにデプロイされているかに基づいて、プロジェクトを設定・絞り込みできます。

セキュリティ関連のフィルターを使って、プロジェクト一覧から簡単に見つけられるよう、プロジェクトを設定した例をご紹介します。

エンタープライズセキュリティのベストプラクティス・チートシートをダウンロードする
さらに詳しく知りたいですか?
Snykのプロダクトチームが解説する、Snykを活用してビジネスを効果的に拡大する方法をご覧ください。
プロジェクト属性とその設定方法については、Snykナレッジベースのドキュメントをご覧ください。
Capture the Flagを始めよう
オンデマンドのバーチャル入門ワークショップを見て、Capture the Flagの課題の解き方を学びましょう。



