SBOMで推移的な依存関係を集めるには
まずは現時点の制約を押さえる
1 コンポーネントの検出≒パッケージマネージャの設定ファイルを見る
2 パッケージマネージャの設定ファイルには直接的な依存関係しか書いてない
1+2により、構造的に推移的な依存関係はそもそも取れない。
この状態で取るためには、
3 「パッケージマネージャの設定ファイル」から取得した依存先コンポーネントの(パッケージマネージャの)設定ファイルを見る
が必要。
https://gyazo.com/16aa2a693bc1132a68ab72fd530e9a93
1+2で取れるのはComponent1,2,3の直接的な依存部分のみ
Component1が依存するa,bは取れない
ここを取りたければComponent-1のパッケージマネージャの設定ファイルが要る
そのためにはComponent-1の情報を取ってくる必要がある
通常はGitHubにあるはずだからそこからDLしてくる
パッケージマネージャ側で取れることがある
npmでいうと node_modules/ の中身がこれに該当。コマンドとしてはnpm installだったりnpm ciだったり
python pipでいうとpip install -r requirements.txt ./などが相当する(インストール先の明示的な指定)
java mavenでいうとmvn dependency:copy-dependencies -DoutputDirectory=OUTPUT_DIR -DexcludeTransitive=true
つまり推移的依存関係も集めたいなら、
何とかして直接的な依存先が使っているパッケージマネージャ設定ファイルも手に入れろ
≒直接的な依存先のファイル一式を入手しろ
理想は「推移的な依存を集めるための環境と処理」なる概念だろう
事前に深さを設定しておいて、その分はひたすら入手しにいく
入手先の配置はフラットでいい
入手先はpURLなどを見ればいい