ライブラリのバージョンを一覧表示する syft で遊んでみた。
こんにちは k-jun です。今回は 自動で Software Bill of Materials (SBOM) を出力してくれるツール syft を試して見ます。
https://github.com/anchore/syft
自動で package を探索し、関連するライブラリなどを一覧で出力してくれるようです。再現環境を用意する際にもバージョンを簡単に合わせることができて便利そうです。
Setup
$ brew tap anchore/syft $ brew install syft
Run
内容すらも忘れた適当な TODO アプリに対して syft を適用してみます。
$ syft todo-app ✔ Loaded image ✔ Parsed image ✔ Cataloged packages [91 packages] NAME VERSION TYPE adduser 3.118 deb apt 1.8.2.1 deb base-files 10.3+deb10u4 deb base-passwd 3.5.46 deb bash 5.0-4 deb bsdutils 1:2.33.1-0.1 deb coreutils 8.30-3 deb dash 0.5.10.2-5 deb debconf 1.5.71 deb debian-archive-keyring 2019.1 deb debianutils 4.8.6.1 deb diffutils 1:3.7-3 deb dpkg 1.19.7 deb e2fsprogs 1.44.5-1+deb10u3 deb fdisk 2.33.1-0.1 deb findutils 4.6.0+git+20190209-2 deb gcc-8-base 8.3.0-6 deb gpgv 2.2.12-1+deb10u1 deb grep 3.3-1 deb gzip 1.9-3 deb hostname 3.21 deb init-system-helpers 1.56+nmu1 deb iproute2 4.20.0-2 deb iputils-ping 3:20180629-2+deb10u1 deb libacl1 2.2.53-4 deb libapt-pkg5.0 1.8.2.1 deb libattr1 1:2.4.48-4 deb libaudit-common 1:2.8.4-3 deb libaudit1 1:2.8.4-3 deb libblkid1 2.33.1-0.1 deb libbz2-1.0 1.0.6-9.2~deb10u1 deb libc-bin 2.28-10 deb libc6 2.28-10 deb libcap-ng0 0.7.9-2 deb libcap2 1:2.25-2 deb libcap2-bin 1:2.25-2 deb libcom-err2 1.44.5-1+deb10u3 deb libdb5.3 5.3.28+dfsg1-0.5 deb libdebconfclient0 0.249 deb libelf1 0.176-1.1 deb libext2fs2 1.44.5-1+deb10u3 deb libfdisk1 2.33.1-0.1 deb libffi6 3.2.1-9 deb libgcc1 1:8.3.0-6 deb libgcrypt20 1.8.4-5 deb libgmp10 2:6.1.2+dfsg-4 deb libgnutls30 3.6.7-4+deb10u4 deb libgpg-error0 1.35-1 deb libhogweed4 3.4.1-1 deb libidn2-0 2.0.5-1+deb10u1 deb liblz4-1 1.8.3-1 deb liblzma5 5.2.4-1 deb libmnl0 1.0.4-2 deb libmount1 2.33.1-0.1 deb libncursesw6 6.1+20181013-2+deb10u2 deb libnettle6 3.4.1-1 deb libp11-kit0 0.23.15-2 deb libpam-modules 1.3.1-5 deb libpam-modules-bin 1.3.1-5 deb libpam-runtime 1.3.1-5 deb libpam0g 1.3.1-5 deb libpcre3 2:8.39-12 deb libseccomp2 2.3.3-4 deb libselinux1 2.8-1+b1 deb libsemanage-common 2.8-2 deb libsemanage1 2.8-2 deb libsepol1 2.8-1 deb libsmartcols1 2.33.1-0.1 deb libss2 1.44.5-1+deb10u3 deb libstdc++6 8.3.0-6 deb libsystemd0 241-7~deb10u4 deb libtasn1-6 4.13-3 deb libtinfo6 6.1+20181013-2+deb10u2 deb libudev1 241-7~deb10u4 deb libunistring2 0.9.10-1 deb libuuid1 2.33.1-0.1 deb libxtables12 1.8.2-4 deb libzstd1 1.3.8+dfsg-3 deb login 1:4.5-1.1 deb mawk 1.3.3-17+b3 deb mount 2.33.1-0.1 deb ncurses-base 6.1+20181013-2+deb10u2 deb ncurses-bin 6.1+20181013-2+deb10u2 deb passwd 1:4.5-1.1 deb perl-base 5.28.1-6 deb sed 4.7-1 deb sysvinit-utils 2.93-8 deb tar 1.30+dfsg-6 deb tzdata 2020a-0+deb10u1 deb util-linux 2.33.1-0.1 deb zlib1g 1:1.2.11.dfsg-1 deb
こんな感じで出力されるんですね。結構良さそう。json フォーマットなど他のフォーマットにも対応している様子。
$ syft todo-app -o json | head ✔ Loaded image ✔ Parsed image ✔ Cataloged packages [91 packages] { "artifacts": [ { "id": "c78f941fc6ded0fe", "name": "adduser", "version": "3.118", "type": "deb", "foundBy": "dpkgdb-cataloger", "locations": [ {
行えることはシンプルですが、使い所もありそうで結構面白そうですね。それでは今回はこのへんで。