Skip to main content

Syft Integration in the Docker Images Plugin

Syft, an open-source scanning tool, is integrated in the Docker Images plugin (starting with the 2022 R4 release). This tool generates a Software Bill of Materials (SBOM) from the discovery of packages and libraries in container images, file systems, archives, and other artifacts. Its integration with the Docker Images plugin enables the plugin to report findings from Docker images containing Alpine, RPM, and Debian Linux distribution packages that reside in RedHat Enterprise Linux, Ubuntu, and CentOS Linux operating systems.

info

Support for CentOS operating system currently has a known issue in Code Insight in which not all codebase files are being displayed in the Analysis Workbench after a scan.

The following sections provide more information about the integration of Syft in the Docker Images plugin:

Forge Support

The following table shows the supported forges (by package type) for inventory detected by Syft.

PackageForge Support for Inventory
RPMInventory items are associated with components from the following forges: centos fedora gnu fsf github savannah If the component is not found in any of these forges, a custom component is created for the inventory item.
AlpineInventories are associated with components from the following forges: Alpine centos fedora gnu github If the component is not found in any of these forges, a custom component is created for the inventory item.
DebianLibrary collection is currently not available for Debian packages. All inventories detected in this package type are associated with a custom component.

Important Information About the Syft Integration

As you configure and use the Docker Images plugin, keep the following in mind about the Syft integration in the plugin:

Syft as Part of Plugin Bundle

The Syft artifacts are bundled with the Docker Images plugin and are located in the syft directory (directly under the code-insight-docker-images-plugin directory in the Code Insight plugins zip file). Once the zip file is extracted, the syft directory must remain as is along side the code-insight-docker-plugin.jar file. By default, during a scan, Code Insight looks for the syft directory in the same location where this jar file (which runs the scan) is executing. If the syft directory is not found in this location, the scan fails.

note

The Docker Images plugin uses the 1.9.0 version of Syft.

Inventory Detection Notes

An inventory item discovered by the Syft detection process shows the following system-generated content in the Notes field for the inventory item:

Detected By: SyftParser
Attributes:
Source: Syft parser attribute
This item is created as per scan data from Syft

The Notes field can include other Syft parser attributes as well, as shown in this example:

Inventory Names with Licenses

Only the names of those licenses reported by Syft that have matching names in the Code Insight Data Library are explicitly included in the inventory name. If multiple licenses are reported by Syft, the inventory name can include the names of up to three license matches along with an or more clause, indicating that more licenses (with matches or no matches in the data library) are available for you to review. You can see the names of all matched and non-matched licenses detected by Syft for a given inventory item by accessing the inventory’s Detection Notes in the Code Insight UI.

If Syft reports only licenses that have no matches in the data library (or reports no licenses at all), the inventory name shows Unknown License in its name. You can still see the names of any reported non-matched licenses by reviewing the Detection Notes for the inventory item.

The following table shows examples of how inventory names in Code Insight reflect the licenses reported by Syft for a given component.

Licenses Reported by SyftLicenses Matched in Data LibraryExample Inventory Name
"GPL-2", "LGPL-2"GPL-2.0-only, LGPL-2.0-onlylibgcrypt20 1.10.1-2 (GPL-2.0-only or LGPL-2.0-only)
"GPL-2", "LGPL-2", "MIT", "Apache-2"GPL-2.0-only, LGPL-2.0-only, MIT, Apache-2.0libgcrypt20 1.10.1-2 (GPL-2.0-only or LGPL-2.0-only or MIT or more)
"GP-2", "LL-2"Nonelibgcrypt20 1.10.1-2 (Unknown License)
"GPL-2", "LL-2"GPL-2.0-onlylibgcrypt20 1.10.1-2 (GPL-2.0-only or more)
"GPL-2"GPL-2.0-onlylibgcrypt20 1.10.1-2 (GPL-2.0-only)
NoneNot applicablelibgcrypt20 1.10.1-2 (Unknown License)