オープンソースパッケージに基づいてSBOMを生成する
Aikidoでは、**SBOM(Software Bill of Materials)とVEX(Vulnerability Exploitability eXchange)**の両方のファイルをエクスポートできます。これらのエクスポートにより、ソフトウェアコンポーネント(オープンソースコンポーネントを含む)を可視化し、実際に修正が必要なものの優先順位付けに役立てることができます。
ユースケース:
- SBOMエクスポート(CycloneDX 1.6、SPDX-2.3、またはCSV)
- M&A、調達、監査(例:ISO 27001、SOC2)の際にサードパーティと共有する。
- Cyber Resilience Act(CRA)、Medical Device Regulation(MDR)、Executive Order 14028などの規制へのコンプライアンス対応。
- サードパーティのリスク管理ツールや調達ツールに取り込む。
- VEXエクスポート(CycloneDXのみ)
- どの脆弱性が悪用可能で、どの脆弱性が該当しないかを明確に示す。
- デューデリジェンスの証明。VEXは、既知の脆弱性を積極的に管理していることをサードパーティに証明します。
SBOMの場所
ステップ1. Reports > Licenses & SBOM に移動します
ステップ2. 右上のアクションからSPDX、CycloneDX、またはCSV形式のSBOMをダウンロードします

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

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

マルチブランチスキャンを有効にしている場合、ドロップダウンで特定のブランチリポジトリを選択することで、ブランチごとに異なるSBOMを取得できます。詳細については、アプリ内チャットでお問い合わせください。
API経由での生成とエクスポート
Export SBOM APIを使用して、SBOMを生成・ダウンロードできます。
自己生成したSBOMの監視
BuildrootやYoctoなどのツールで構築された組み込みシステムでは、ビルド時にSBOMを生成できます。これらのシステムには標準的なコンテナレジストリがないことが多いため、自己生成したSBOMをAPI経由でAikidoにアップロードし、サプライチェーンセキュリティとライセンスコンプライアンスを監視できます。
Buildroot / YoctoによるSBOMの生成
Buildrootは、組み込みのgenerate-cyclonedxユーティリティを使用してCycloneDX SBOMを生成します。このユーティリティはmake show-infoの出力を利用します。
SBOMを生成する
次のコマンドを実行します:
make show-info | utils/generate-cyclonedx > sbom.cdx.jsonこれにより、組み込みLinuxシステム内のすべてのパッケージを、バージョン、ライセンス、ソース情報とともに一覧にした単一のCycloneDX JSONファイルが生成されます。
YoctoのSPDX 2.2エンジンの使用
Yoctoはcreate-spdxクラスを通じてネイティブなSPDX 2.2 SBOM生成機能を提供しています。この機能はYocto 3.4(Honister)以降で安定しており、デフォルトで有効になっています。
YoctoのSPDX 2.2エンジンを設定する
conf/local.confに以下を追加し、すべてのレシピに対してSPDX 2.2ドキュメントを生成するようYoctoに指示します:INHERIT += "create-spdx"YoctoのオプションSPDX_INCLUDE_SOURCESは、SBOMのサイズを不必要に増大させるため、無効にすることをお勧めします。
イメージをビルドする
通常のBitBakeビルドを実行します:
bitbake <your-image-name>ビルドが成功すると、SPDXファイルは次の場所に書き込まれます:
tmp/deploy/spdx/<MACHINE>/トップレベルのイメージドキュメント(例:
<IMAGE>-<MACHINE>.spdx.json)は、同じディレクトリ内のパッケージごとのSPDXドキュメントにリンクしています。Aikidoにアップロードする前に、パッケージごとのSPDXファイルを単一のSPDXファイルにマージすることをお勧めします。単一のSBOMにマージする
Yoctoは複数の
*.spdx.jsonファイル(レシピごとに1つ)を生成するため、それらを手動で1つのSBOMファイルにマージする必要があります。これはSPDXMergeToolまたはsbomasm - assembleを使用して簡単に行えます。
SBOMをAikidoにアップロードする
Upload Container SBOM APIを使用して、生成したファイルをプッシュします。 APIキーの取得方法と使用方法の詳細については、APIの認証に関するドキュメントを参照してください。
#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\"}"Aikidoは、アップロードされたSBOMをレジストリSelf-reported SBOMとしてContainersの下に一覧表示し、脆弱性とライセンスリスクのスキャンを自動的に開始します。