Armadilloフォーラム

SBoM生成について

tmygt

2024年9月18日 16時02分

SBoM生成について質問があります。 v2.13.0の https://manual.atmark-techno.com/armadillo-iot-g4/armadillo-iotg-g4_pro… を参照しています。

1. https://manual.atmark-techno.com/armadillo-iot-g4/armadillo-iotg-g4_pro… に記載の `/usr/libexec/make-sbom/config/config.yaml` が見当たりません。正しい場所はどこですか

$ cat /usr/libexec/make-sbom/config/config.yaml
cat: /usr/libexec/make-sbom/config/config.yaml: そのようなファイルやディレクトリはありません

2. ルートファイルシステムのSBoMについて、6.25.3と6.26.3の2種類の生成方法があるように読み取ったのですが、正しいですか? (ルートファイルシステムビルド時に生成する方法と、SWUにパッケージングするときに生成する方法がある?)

3. ABOSとコンテナを使った製品を作った場合、製品全体のSBoMは下記3つのSBoMから構成されると考えています。

(1) bootloaderのSBoM
(2) kernel/rootfsのSBoM -> 6.25.3/6.26.3 の手順で生成
(3) コンテナのSBoM -> 6.26.4 の手順で生成

セキュアブートを利用する予定なので、bootloader/kernel/rootfsは自前でビルドする想定です。
(1)に相当するSBoMはどのように生成するのでしょうか。

以上、よろしくお願い致します。

コメント

at_reika.yamazaki

2024年9月18日 18時38分

お世話になっております。山崎です。

申し訳ございません。
1. のファイルパスについですが、正しいパスは以下になります。

/usr/share/make-sbom/config/config.yaml

マニュアルは今月のアップデートで修正いたします。

2. どちらも SBOM は生成しますが、役割が違います。
・「6.25.3. Alpine Linux ルートファイルシステムをビルドする」
こちらはルートファイルシステムをビルドすると同時に、ルートファイルシステムの SBOM を生成します。
・「6.26.3. ビルドしたルートファイルシステムの SBOM を作成する」
こちらは SWU イメージの内容に合わせた SBOM を出力します。
コマンドに示すようにオプション `-f` を使い、 `-f baseos-x2-[VERSION].tar.zst` のようにルートファイルシステムを指定することで、ルートファイルシステムが含まれる SWU イメージについての SBOM が出力されます。 `-f` でコンテナのイメージファイルを追加で指定した場合は、コンテナの内容も SBOM に含まれます。

もし、ルートファイルシステムのみの SBOM が不要の場合は、ルートファイルシステムのビルドのみを実行してルートファイルシステムを作成します。そのあと、「6.26.3. ビルドしたルートファイルシステムの SBOM を作成する」を実行することで SWU イメージ内にルートファイルシステムを含んだ SBOM が出力されます。

3.ブートローダーの SBOM については、お手数ですが弊社のダウンロードページからダウンロードしていただけますでしょうか。
G4 の場合は以下になります。
https://armadillo.atmark-techno.com/resources/software/armadillo-iot-g4…

以上、どうぞよろしくお願いいたします。

山崎様

回答ありがとうございます。1, 3 について承知いたしました。
2 について、理解を深めるためもう少し質問させてください。

> もし、ルートファイルシステムのみの SBOM が不要の場合は、ルートファイルシステムのビルドのみを実行してルートファイルシステムを作成します。そのあと、「6.26.3. ビルドしたルートファイルシステムの SBOM を作成する」を実行することで SWU イメージ内にルートファイルシステムを含んだ SBOM が出力されます。

すべてまとめたSBoMが生成されるほうが便利なのでこちらの方法をとりたいのですが、セキュアブートを使う場合(初回書き込みでは) Image.signedはSWUに含まれないので (参考: https://manual.atmark-techno.com/armadillo-iot-g4/armadillo-base-os-sec… ) 、rootfsのSBoMは別で生成する必要があると考えています。この理解はあっていますか?

at_reika.yamazaki

2024年9月19日 18時39分

お世話になっております。山崎です。

>すべてまとめたSBoMが生成されるほうが便利なのでこちらの方法をとりたいのですが、セキュアブートを使う場合(初回書き込みでは) Image.signedはSWUに含まれないので (参考: https://manual.atmark-techno.com/armadillo-iot-g4/armadillo-base-os-sec… ) 、rootfsのSBoMは別で生成する必要があると考えています。この理解はあっていますか?

あっています。
「5.7.5. セキュアブート対応 swu の作成」ではセキュアブートするための、ストレージ暗号化と暗号化セキュアブート設定を行う SWU イメージを作成しています。そのため、この SWU イメージには Image.signed やルートファイルシステム は含まれていないため、仰るように別で生成する必要があります。

>セキュアブートを有効にした場合のrootfs更新では、通常のrootfs更新と異なって Image.signed をソースとしますが (参考: https://manual.atmark-techno.com/armadillo-iot-g4/armadillo-base-os-sec… ) この場合でもswu生成時にrootfsのSBoMは生成できますか?

「5.10. セットアップ完了後のアップデートの運用について」の Linux カーネルの更新 (encrypted_rootfs_linux_update.desc) の場合ですね。
申し訳ございません。encrypted_rootfs_linux_update.desc では Image.signed の SBOM 作成に対応していません。
Image.signed と同等の内容の SBOM を作成したい場合は、もとの kernel イメージの内容を含めるように desc ファイルを修正する必要があります。
encrypted_rootfs_linux_update.desc に以下の★の行を追加することで、baseos ディレクトリに展開した内容を含めた SBOM を作成することができます。

# This example is intended for users with ENCRYPTED_ROOTFS.
# Ignore it if not using encryped rootfs.
 
# version must be updated everytime like normal updates
swdesc_option version=2
swdesc_option BUILD_SBOM=auto★
swdesc_option sbom_config_yaml=swu/config.yaml★
 
# Image.signed is an a linux image with initrd built using
# imx-boot/secureboot.sh linux
swdesc_boot_linux "Image.signed"
swdesc_sbom_source_file "baseos"★

各項目に関する詳細は以下をご確認下さると幸いです。
・6.26.4. SWU イメージと同時に SBOM を作成する
https://manual.atmark-techno.com/armadillo-iot-g4/armadillo-iotg-g4_pro…

上記の desc ファイルを使用すると update_linux.swu と自動時に update_linux.swu.spdx.json が生成されます。

以上、どうぞよろしくお願いいたします。

山崎様

ありがとうございます。製品全体のSBoM生成のイメージがつかめました。

今後ともよろしくお願いいたします