CycloneDX SBOM 依存関係グラフ – 何に適していますか?

全ての記事

私たちは皆、よく聞いたことがある SBOM 最近。その有用性、構成、セキュリティと規制の要件について聞きました。今回は、CyclonDX SBOM のあまり知られていない部分であるディペンデンシー グラフについてお話したいと思います。 

名前が示すのとは異なり、依存関係グラフは SBOM の視覚的な側面ではありません。その目的は、コンポーネントの他のコンポーネントへの依存関係を説明するのに役立つことです。これはコンポーネントに依存します ボムリファレンス – 各 SBOM コンポーネントの一意の識別子。目的は、どの要素が相互に依存しているか、または相互に接続されているかを示すことです。とても簡単そうに思えますよね?

Scribe は、何を行うかを決定する過程でディペンデンシー グラフをよく使用します。 SBOM の要素 が重要であり、私たちが注意すべきことです。この記事では、その方法を検討します 筆記 では、SBOM 依存関係グラフと、そこから得られる実際的な利点を使用します。 SBOM 依存関係グラフの JSON 例をいくつか見ていき、最後に、それを使って将来何ができるかを見ていきます。

依存関係グラフとは何ですか?

ディペンデンシー グラフは、2019 年に CyclonDX フォーマットに追加されました。その宣言された目的は、後に「ディペンデンシー グラフ」として知られるようになった一意の識別子を使用してコンポーネントを結び付けることでした。 ボムリファレンス。 の中に CycloneDX の使用例では、依存関係がコンポーネント参照 ID を使用して、何が何に依存しているかを示す方法がわかります。

コードの依存関係のイメージコードの依存関係のイメージコードの依存関係のイメージ

例に触れるまでもなく、ある要素を他の要素に接続する機能が便利であることがわかると思います。まず、最も一般的な使用例として、ライブラリのすべての依存関係を 1 か所ですぐに確認できるようになります。 

依存関係グラフは直接的な関係と推移的な関係の両方を表すことができ、通常は 1 ノードの深さになります。

完全な依存関係ツリーを表現することもできますが、循環依存関係やその他の複雑な関係により無限ループが発生する可能性があるため、お勧めできません。単一のノードを表すことでグラフを単純に保つことをお勧めします。

 Scribe は依存関係グラフをどのように使用していますか?

Scribe は、証拠のコンテキストを提供するために、SBOM とともに収集されたメタデータを広範囲に利用します。証拠のコンテキストには、いつ、どこで収集されたか、その主題などが含まれます。 Scribe は、信頼性が高く再利用可能な情報を提供するよう努めているため、依存関係グラフを利用して、さまざまなクライアントやプロジェクト間で使用できる接続を作成しています。

Scribe がサポートする依存関係グラフのリンクは次のとおりです。

  • パッケージファイル: この接続により、どのファイルが各パッケージに属しているかを確認できます。明らかに、パッケージ内に属していないファイルが見つかった場合、それは明らかに問題を示しています。
  • レイヤ表示とパッケージレイヤ: どのパッケージがどのイメージ レイヤに配置されているかを知ると、レイヤごとに脆弱性を順序付けることができるため便利です。基本イメージまたは親イメージから継承した問題には、自分で作成したレイヤーで見つかった問題ほど緊急性がなく、影響を与える直接的な能力もありません。
  • レイヤーファイル: パッケージとファイルの接続と同様に、この接続により、どのファイルが各レイヤーに関連付けられているかを確認できます。他の接続と並行して、ファイルが適切なパッケージおよびレイヤーに関連付けられていること、およびファイルが存在すべきでない場所にファイルがないことを確認できます。
  • コミットとコミットファイル: どのファイルがどのコミットからのものかを特定することで、最終イメージの構築に使用される前にコミット ファイルに不当な変更がなかったことを確認できます。

これらすべての情報を一緒に使用すると、どのファイルがどこにあるべきかについて、SBOM から非常に包括的なイメージを引き出すことができます。その結果、画像の問題 (整合性の問題または潜在的な攻撃) を示す可能性のある異常値や異常を検出できる可能性が高くなります。

依存関係グラフとポリシーの適用

Scribe は、この包括的な依存関係グラフを活用して、複雑なポリシーを効果的に適用します。たとえば、 コミットファイル コード所有者のポリシーを維持するために依存関係が利用されます。これにより、誰がどのファイルをいつコミットしたかを確認できます。の パッケージファイル パッケージの整合性ポリシーを保証するために依存関係が採用されています。これにより、どのファイルが各パッケージにリンクされることになっているかを確認し、それが実際に当てはまることを確認できます。さらに、 パッケージ層 依存関係は、パッケージ ポリシーを各層の特定の要件に合わせて調整するために使用されます。各ソフトウェア イメージはレイヤーの構成が異なる場合があるため、どのパッケージがイメージのどのレイヤーにリンクされているかを明確に知ることができることは非常に貴重です。

依存関係グラフ情報のカスタマイズ

誰もがこのすべての情報を共有することに熱心であるわけではないこと、また、何らかの方法で情報を見たり使用したりすることに関心がないことは承知しています。

これに対処する方法として、Scribe を使用すると、より具体的なバージョンの SBOM を作成できます。弊社で使用できるカスタマイズ オプションは次のとおりです。 ヴァリント 現在サポートしている SBOM を作成するときにツールを使用します。将来的には追加のオプションが利用可能になる予定です。

  • 特定のコンポーネント グループのみを含めるには、次を使用します。 –コンポーネント をクリックしてグループの種類を選択します。 
  • 特定のパッケージ タイプを含めたり除外したりするには、次を使用します。 -パッケージ型式 or –パッケージ除外タイプ 特定のパッケージ タイプを選択します。
  • 見つかったインストール済みパッケージを含めるには (パッケージ グループ) install) またはソースによって参照されるパッケージ (パッケージ グループ) index)、 使用する –パッケージグループ オプションから選択します。
  • コンポーネントを除外するには、次を使用します。 –フィルター正規表現, –フィルタースコープ、–フィルター-プル 除外したいコンポーネントを除外します。
  • ファイルコンテンツを添付するには、次を使用します –attach-regex 外部ファイルの内容を含めます。
  • カスタム環境とラベルを含めるには、次を使用します。 –env-ラベル をクリックしてカスタムフィールドを添付します。これにより、作成している SBOM にカスタム メタデータを追加できます。

未来を見る

Scribe は、コンテキストと、それを使用して SBOM のさまざまなコンポーネント間で行われる接続を最も重要なものと考えています。私たちのヴァリントの能力により、 署名、確認, ポリシーを管理する 私たちは、セキュリティ ポリシーを管理するだけでなく、さらに多くのことができるようになる未来を見ることは十分に可能だと考えています。依存関係グラフの情報が品質管理、特定のコンプライアンス ニーズ、さらにはフィンテックや農業などの無関係な分野でも使用できる未来を想像できます。

Scribe のプラットフォームには無料枠があり、すぐにすべての機能をすぐに試してみることができます。ぜひお勧めします 試してみる、時間の経過とともに蓄積されたそのような情報の有用性を確認し、その情報を何に使用できるかを確認します。私たち全員にとってより安全な未来を歓迎するために、ぜひご参加ください。 

このコンテンツは、エンドツーエンドのソフトウェア サプライ チェーン セキュリティ ソリューションの大手プロバイダーである Scribe Security によって提供されており、ソフトウェア サプライ チェーン全体のコード成果物とコード開発および配信プロセスに最先端のセキュリティを提供しています。 詳しくはこちら。