コンテンツにスキップ

オープンソースパッケージに基づくSBOMの生成

Aikidoでは、**SBOM(Software Bill of Materials)VEX(Vulnerability Exploitability eXchange)**ファイルの両方をエクスポートでき、ソフトウェアコンポーネント(オープンソースコンポーネントを含む)への可視性を提供し、実際に修正が必要なものの優先順位付けに役立ちます。

ユースケース:

  • SBOMエクスポート(CycloneDX 1.6、SPDX-2.3、またはCSV)
    • M&A、調達、監査(ISO 27001、SOC2など)の際にサードパーティと共有する。
    • サイバーレジリエンス法(CRA)、医療機器規則(MDR)、Executive Order 14028などの規制へのコンプライアンス対応。
    • サードパーティのリスク管理ツールや調達ツールへ連携する。
  • VEXエクスポート(CycloneDXのみ)
    • どの脆弱性が悪用可能で、どれが対象外かを明確に示す。
    • デューデリジェンスの証明として、VEXは既知の脆弱性を積極的に管理していることをサードパーティに証明します。

ステップ1. Reports > Licenses & SBOMに移動します

ステップ2. 右上のアクションからSPDX、CycloneDX、またはCSV形式のSBOMをダウンロードします

フィルタとSBOMダウンロードオプションを備えたPythonパッケージのライセンスリスク概要画面。

任意. さまざまなパラメータでライセンスをフィルタしてから、SBOMをエクスポートできます。エクスポートには選択したフィルタ値が反映されます。

ライセンス・言語・リスク・コンテナのオプションでリポジトリを検索するフィルタメニュー。

チームでフィルタしたい場合は、ページ上部のTeam Filterを変更することで行えます。

Licenses & SBOMレポートを表示するためのチーム選択ドロップダウン。

マルチブランチスキャンが有効な場合、ドロップダウンで特定のブランチのリポジトリを選択することで、ブランチごとに異なるSBOMを取得できます。詳細はアプリ内チャットからお問い合わせください。

API経由での生成とエクスポート

Section titled “API経由での生成とエクスポート ”

Export SBOM API経由でSBOMを生成・ダウンロードできます。

BuildrootやYoctoなどのツールで構築された組み込みシステムは、ビルド時にSBOMを生成できます。これらのシステムには標準的なコンテナレジストリがないことが多いため、これらの自己生成SBOMをAPI経由でAikidoにアップロードし、サプライチェーンセキュリティとライセンスコンプライアンスを監視できます。

Buildroot

Buildrootは、組み込みのgenerate-cyclonedxユーティリティ(make show-infoの出力を利用)を通じてCycloneDX SBOMを生成します。

次のコマンドを実行します:

Terminal window
make show-info | utils/generate-cyclonedx > sbom.cdx.json

これにより、組み込みLinuxシステム内のすべてのパッケージをバージョン・ライセンス・ソース情報とともに列挙した単一のCycloneDX JSONファイルが生成されます。

Yocto SPDX 2.2 Engine

Yoctoは、create-spdxクラスを通じてネイティブなSPDX 2.2 SBOM生成を提供しており、Yocto 3.4(Honister)以降で安定しデフォルトで有効になっています。

すべてのレシピに対してSPDX 2.2ドキュメントを生成するようYoctoに指示するには、conf/local.confに以下を追加します:

INHERIT += "create-spdx"

通常のBitBakeビルドを実行します:

Terminal window
bitbake <your-image-name>

ビルドが成功すると、SPDXファイルは次の場所に書き出されます:

tmp/deploy/spdx/<MACHINE>/

トップレベルのイメージドキュメント(例: <IMAGE>-<MACHINE>.spdx.json)は、同じディレクトリ内のパッケージごとのSPDXドキュメントにリンクしています。Aikidoにアップロードする前に、パッケージごとのSPDXファイルを1つのSPDXファイルにマージすることを推奨します。

Yoctoは複数の*.spdx.jsonファイル(レシピごとに1つ)を生成するため、それらを手動で1つのSBOMファイルにマージする必要があります。これはSPDXMergeToolsbomasm - assembleを使うことで簡単に行えます。

生成したファイルをプッシュするには、Upload Container SBOM APIを使用します。APIキーの取得・使用方法の詳細についてはAPI認可のドキュメントを参照してください。

Terminal window
#Prevents word splitting of the JSON file
SBOM=$(cat /path/to/sbom.spdx.json)
# Accepts both CycloneDX and SPDX in JSON formats
curl -X POST "https://app.aikido.dev/api/public/v1/containers/sbom" \
-H "accept: application/json" \
-H "Authorization: Bearer $AIKIDO_API_KEY" \
-H "Content-Type: application/json" \
-d "{\"sbom\": $SBOM, \"container_image_name\": \"$YOUR_CONTAINER_NAME\"}"

アップロードされたSBOMは、Aikido上でContainersにレジストリSelf-reported SBOMとして表示され、脆弱性とライセンスリスクのスキャンが自動的に開始されます