Skip to main content

大規模な脆弱性管理に役立つエンタープライズセキュリティのベストプラクティス

著者
Blog illustrations vulnerabilities at scale

2020年11月9日

0 分で読めます

エンタープライズセキュリティとは?

大規模なエンタープライズセキュリティでは、特に次のような課題への対応が求められます。

  • セキュリティ上の問題が増え続け、開発者やセキュリティエンジニアの時間が浪費されている。

  • 開発者とセキュリティエンジニアの間で信頼感が薄れ、十分に連携できていない。

  • 重大な脆弱性や修正可能な脆弱性の優先順位付けができず、脆弱性が長期間にわたって放置されている。

対応が必要な脆弱性が膨大にある中で、複数のチームにわたって効果的なセキュリティコンプライアンスを確保するには、どうすればよいでしょうか?

このエンタープライズセキュリティのベストプラクティスをまとめたチートシートでは、こうした課題を取り上げます。

チートシートをダウンロード。

エンタープライズセキュリティアーキテクチャやエンタープライズサイバーセキュリティソリューションを導入する際には、開発チームの作業を遅らせたり、ゲートを設けたり、妨げたりすることなくセキュリティを確保するなど、アプリケーションセキュリティの課題に直面することになります。

Snykは最近、開発者を第一に考えたプロジェクト管理機能を備え、セキュリティチームと開発チームの生産性向上に重点を置く、Enterprise Security Management at Scaleソリューションを発表しました。プロジェクト属性、プロジェクトタグ、プロジェクト単位のポリシー、プルリクエストの失敗条件などの機能は、開発者の対処を支援し、セキュリティチームが重要な課題に集中できるようにする好例です。

エンタープライズセキュリティアーキテクチャを改善するための対策:

  • 修正が可能な場合にのみビルドを失敗させる

  • セキュリティチャンピオンをレビュー担当者として自動的に割り当てる

  • 脆弱性修正のために優先順位付けされたプルリクエストを作成する

  • ライセンスコンプライアンス

  • 到達可能な脆弱性

    セキュリティとライセンスの問題件数、問題の推移および露出期間のグラフを表示するSnyk Reportsのダッシュボード。

脆弱性修正のために優先順位付けされたプルリクエストを作成する

課題:バックログに多数のセキュリティ脆弱性があり、開発者は大量の情報に埋もれて、セキュリティ問題への対処に苦労しています。

解決策:修正可能な最も重大なセキュリティ脆弱性に集中し、全体的なリスクを低減します。

Snykは、標準化されたCVSSなどによるセキュリティ脆弱性のスコアリングが長年抱えてきた課題を軽減するため、脆弱性優先度スコアを導入しました。CVSSのようなスコアリングは、セキュリティ脆弱性が適切なコンテキストにおいて実際にどのような影響を与えるかを開発者やアプリケーションセキュリティエンジニアが判断するうえで、大きな課題となっています。CVSSによるセキュリティ脆弱性のスコアリングの課題についても詳しく解説しています。CVSSの基礎を知るうえでも役立つ内容です。

Snykの優先度スコアでは、エクスプロイトの成熟度、修正の有無、CVSSスコアなどのデータポイントを考慮し、脆弱性の優先度を0~1000の範囲で算出します。スコアが高いほど、脆弱性を早急に修正する必要があります。

セキュリティ脆弱性の大量の情報や長いテールに埋もれないよう、最も重大な脆弱性に集中し、全体的なリスクと脆弱性の露出期間を減らせるよう支援します。

開発者にとって役立ち、実際の行動につながる形で、どのように実現できるでしょうか?

Snykのインテグレーション設定を開き、プロジェクト内にある、優先度が最も高く修正可能なすべての脆弱性に対してプルリクエストを作成する機能を有効にします。ご安心ください。大量のプルリクエストで開発者を圧倒し、時間を奪うことはありません。新しいプルリクエストは1日1件だけ作成されます。これらのプルリクエストは対応可能で、アップグレード経路のある上流パッケージのリリースが含まれるため、開発チームによるレビューやマージにかかる手間を最小限に抑えられます。

接続済みアカウントと自動修正プルリクエストのオプションが表示された、Snyk GitHubインテグレーションの設定

セキュリティチャンピオンをレビュー担当者として自動的に割り当てる

課題:セキュリティ修正が自動化され、プロジェクトリポジトリにプルリクエストが作成されるのは便利ですが、誰がレビューすべきでしょうか?

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

GitHubとの連携と、有効になっているプルリクエストの担当者設定を示すSnykの設定ページ。

修正が可能な場合にのみビルドを失敗させる

課題:開発者がオープンソースを安全に利用できるよう支援したいのに、結局は開発者の作業を完全にブロックしてしまい、調査結果に対して何も対処できないことも少なくありません。

  • 開発者が、重大度の低いセキュリティ問題によってCIパイプラインが失敗し、プロジェクトを先に進められないことに気づきます。

  • 開発者がセキュリティ脆弱性への対処に苦労しています。CIパイプラインで検出されてビルドが失敗したものの、その問題には実際に適用できる修正がありません。

解決策:セキュリティを受け入れ、失敗をノイズや誤検知として片付けずに対処できるよう、開発者のワークフローに役立ち、実際の行動につながるツールを提供しましょう。

Snykでは細かな設定が可能です。検出された脆弱性が高い重大度のしきい値を超えた場合にのみCIビルドを失敗させることができます。これにより、ビルド環境の失敗によって脆弱性への対応が必要になったとき、開発者は最も重要な問題から優先的に対処できます。

セキュリティ脆弱性が原因でCIパイプラインが失敗した場合、開発者には何を期待しますか?おそらく修正を期待するでしょう。それは当然ですが、多くのツールやインテグレーションは無条件にビルドを失敗させます。ここで、開発者を第一に考えるSnykの姿勢が活きます。CIインテグレーションには、検出された問題に修正がある場合にのみビルドを失敗させるフラグがあります。これにより開発者は、修正がないとわかるまで脆弱性のトリアージに延々と時間を費やすのではなく、セキュリティ問題の解決に実際に取り組めます。

これらのセキュリティ機能を利用するには、GitHubなど、お使いの環境に該当するインテグレーション設定を開き、たとえばsnykがプルリクエストをテストする際のビルド失敗条件を調整してください。

GitHubとのインテグレーションが接続され、プルリクエストのデフォルトのセキュリティテストが有効になっているSnykの設定ページ。

自社のコードから到達可能な脆弱性を優先する

課題:どのオープンソースコンポーネントを優先的に修正すべきか判断するのが難しい。たとえば、次のような悩みがあります。

  • オープンソースライブラリにセキュリティ脆弱性が多数ありますが、どのライブラリが本番コードで使われているか、どうすればわかるでしょうか?

  • 開発者は「このオープンソースライブラリは使っていますが、脆弱性が存在するクラスやメソッドを実際に使っているか、どうすればわかりますか?」と言います。

解決策:Snykは、開発者やセキュリティエンジニアが何百もの脆弱性のトリアージ作業に優先順位を付ける方法を必要としていることを理解しています。そこで静的コード解析を適用し、使用中のサードパーティ製オープンソースライブラリにあるセキュリティ脆弱性が、自社のコード(ファーストパーティコード)から到達可能かどうかを判断します。

Snykは脆弱性が検出されたコンテキストを理解し、ビジネスリスクと露出期間を減らすために、修正作業の優先順位付けを支援します。

技術的には、到達可能な脆弱性を検出する機能は、アプリケーションのソースコードからプロジェクト内のオープンソース依存関係へとつながるコールグラフを構築するSnykのアルゴリズムに基づいています。

現時点では、到達可能な脆弱性の分析に対するSnykのサポートはJava、Maven、Gradleのプロジェクトに限られ、CLIテストまたはプロジェクトのテスト時にSnyk UIでのみ利用できます。Gitのサポートも近日中に提供予定です。

コードからの到達可能性に基づいてセキュリティ脆弱性を特定するには、次の手順に従います。

  1. 最新バージョンのSnyk CLIを使用していることを確認します

  2. アプリケーションと関連するマニフェストファイルがあるフォルダに移動します

  3. snyk test --reachableを実行します

到達可能な脆弱性が見つかると、テスト結果は次のスクリーンショットのように表示されます。

Apache HttpComponentsをアップグレードして解決した、4件の依存関係の問題と到達可能な脆弱性パスを示すターミナル出力

実は、この情報はすべてSnyk UIでモニタリングできます。

このマニフェストのスナップショットをSnykに送信すると、継続的なモニタリングとアラート通知を利用できます。プロジェクトをモニタリングするには、次を実行します。

snyk monitor --reachable

これで、すべてのセキュリティ問題を到達可能な脆弱性でフィルタリングし、優先的に修正する脆弱性を絞り込めます。

Apache HttpClientで到達可能な中程度の深刻度のディレクトリトラバーサルの問題を示す脆弱性ダッシュボード。修正方法と到達経路を表示。

到達可能な脆弱性の機能について詳しく知りたい方は、次のブログ記事をご覧ください。

ライセンスコンプライアンスポリシー

課題:法務部門から次のような要望があり、エンタープライズセキュリティソフトウェアの課題に直面しています。

  • すべてのアプリケーションプロジェクトで使用しているオープンソースライブラリの一覧が必要です。

  • ライセンスポリシーに違反するコピーレフトソフトウェアを知らずに配布し、ライセンスや著作権法に違反することは絶対に避けなければなりません。

解決策:Snykでは、エンタープライズセキュリティとライセンスコンプライアンスの課題に、次の2つの方法で対処できます。

  • すべてのプロジェクトで使用しているライセンスのレポートを提供します。レポートはCSV形式でエクスポートできます。

  • オープンソースソフトウェアのライセンスポリシーを設定し、プロジェクト単位または組織単位で適用することで、社内の法務部門のガイドラインに準拠できます。

ソフトウェアライセンス管理

Snykのレポートタブでは、必要に応じて、インポート済みのすべてのプロジェクトや組織で使用されているライセンスを確認できます。

必要に応じて一覧をさらに絞り込んだり、特定のライセンスの影響を受ける依存関係やプロジェクトの数で並べ替えたりできます。特定のライセンス違反に対処する必要がある場合、法的要件への対応に優先順位を付けるのに役立ちます。

スプレッドシートを使って他のチームと連携するために一覧をエクスポートする場合は、CSVとしてエクスポートボタンをクリックして、ライセンスを含むソフトウェア部品表を作成します。

プロジェクトのライセンスの種類、依存関係の数、プロジェクト数、「CSVとしてエクスポート」ボタンを表示するSnykのライセンスページ。

ライセンスポリシー

ソフトウェアライブラリの不適切な使用による法的措置のリスクや、さらに深刻なライセンス違反を避けるため、組織全体でライセンスポリシーを定めることは一般的です。

この課題に対処するため、Snykではプロジェクトにライセンスポリシーを設定できます。これにより、ビルドや継続的インテグレーションパイプラインでのライセンスチェックを失敗させることができます。

きめ細かいセキュリティポリシーを設定し、特定の属性に一致するプロジェクトに適用できます。適切なガードレールを設けながら、チームが十分な裁量を持って自律的に作業できるようになります。

Snyk UIでポリシーを設定するには、どうすればよいでしょうか?

ポリシーはグループレベルで設定するため、グループ管理者である必要があります。ポリシーは、そのグループに属するすべての組織とプロジェクトに適用されます。

1つの組織にデフォルトのライセンスポリシーが適用されている様子を示すSnyk Policy manager。

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

ライセンス名、重大度「高」「中」の設定、説明欄を表示したSnykのライセンスポリシー画面

プロジェクトを効果的に分類する

課題:エンタープライズセキュリティソリューションが急務であることは、次のような状況からわかります。

  • 開発者やセキュリティエンジニアが、対応すべきプロジェクトを探すのに多くの時間を費やしている。

  • 膨大なセキュリティ脆弱性に埋もれ、どこから着手すべきかわからない。

解決策:ビジネスへの影響度属性と技術スタックのメタデータを設定して、プロジェクトをセットアップします。これにより、サービスの重要度に応じた適切な注意喚起、デプロイ環境の詳細、アプリケーションの特性を把握でき、フロントエンドかバックエンドかも適切に示されます。

さらに便利なポイント:Snykでは、お客様からのフィードバックをエンタープライズ向けセキュリティソリューションに反映しています。お客様の声に耳を傾けているからこそ、何を開発すべきかがわかります。組織内でのアプリケーションの所有者を把握するのに役立つ機能をもう1つご紹介します。専用の_Project owner_フィールドを使えば、Snykプロジェクトにアクセスできる任意のユーザーや開発者を設定できます。

動画で確認したい方のために、属性やプロジェクトタグを使ってプロジェクトを管理する方法をまとめた短い動画をご用意しました。

Managing Projects at Scale with Snyk
package.jsonのSnykプロジェクト概要。脆弱性の問題やプロジェクトの詳細、展開されたプロジェクトオーナーのドロップダウンが表示されています。

次のプロジェクト一覧を見ると、圧倒されてしまうかもしれません。

どのプロジェクトから始めればよいでしょうか?組織全体や事業部門を対象に、このプロジェクト一覧を絞り込むにはどうすればよいでしょうか?

高、中、低の脆弱性件数と、レポートを表示するリンクが記載されたSnyk Projectsのダッシュボード。

SecOps(セキュリティ運用)に携わっている方なら、こうした課題はよくあるものです。セキュリティチャンピオンやグループリーダーなど、組織のセキュリティを担う方は、エンタープライズセキュリティの課題に適切に対処するためのサポートを必要としていることでしょう。

Snykでは、この課題を次のように解決します。「百聞は一見に如かず」ということで、こちらをご覧ください。左側には、次の条件でプロジェクトを絞り込むためのフィルターが表示されています。

  • 問題と修正可能な項目:非常に強力なフィルターです。実際に修正可能なセキュリティ脆弱性から開発者が優先して対応できるようにし、修正できない問題のトリアージや検証に時間を費やさずに済みます。エンタープライズ向けセキュリティソリューションを簡単に実現できます。

  • インテグレーション:ソース別にプロジェクトを参照できます。Snyk CLIで監視しているプロジェクトをお探しですか?GitLabやBitbucket Cloudのインテグレーション経由のプロジェクトをすべて検索したいですか?

  • 環境:どのようなプロジェクトですか?フロントエンドですか?バックエンドですか?Snykの新しいGradleプラグインのサポートを使って監視しているモバイルアプリケーションかもしれません。ここですばやく絞り込めます。

  • ライフサイクル:エンタープライズセキュリティアーキテクチャでは、アプリケーションが外部に公開されているかどうかに応じて、セキュリティポリシーを適用する必要があることがよくあります。たとえば、企業の従業員だけが社内でアクセスするアプリケーションは、重要度が低い場合があります。このライフサイクル属性では、本番環境、ステージング環境、その他の環境のいずれにデプロイされているかに基づいて、プロジェクトを設定・絞り込みできます。

    重要度(高・中・低)別の問題件数と、インテグレーションや環境のフィルターを表示したSnyk Projectsのダッシュボード

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

package.jsonのSnykプロジェクト概要。脆弱性の問題と、Frontend、Backend、Internal、External、Mobile、SaaSが表示されたEnvironmentドロップダウンを示す

エンタープライズセキュリティのベストプラクティス・チートシートをダウンロードする

さらに詳しく知りたいですか?

Snykのプロダクトチームが解説する、Snykを活用してビジネスを効果的に拡大する方法をご覧ください。

プロジェクト属性とその設定方法については、Snykナレッジベースのドキュメントをご覧ください。

Capture the Flagを始めよう

オンデマンドのバーチャル入門ワークショップを見て、Capture the Flagの課題の解き方を学びましょう。

続きを読む

Blog

フロンティアモデルは脆弱性を発見した。攻撃者だけがエクスプロイトチェーンを見つけた。

静的解析で欠陥は見つかりましたが、ライブ攻撃テストで侵害につながる連鎖を実証できたのは唯一でした。Evo COS、Claude Security、Claude Code Securityを比較します。

feature insights context
Blog

自律型攻撃はすでに始まっている。防御もそのスピードに追いつかなければならない。

自律型攻撃者によって、防御に使える時間は短くなっています。継続的な検出、修復、検証、予防で、セキュリティチームが攻撃に歩調を合わせる方法をご紹介します。

Blog

AIコーディングエージェントが不適切なアクセス制御を繰り返し実装する理由

AIコーディングエージェントは、コンパイルが通りレビューも通過する一方で、あるテナントのデータを別のテナントに公開してしまう認可ロジックを生成することがあります。不適切なアクセス制御が検出しにくい理由と、その防止策をご紹介します。