Using the Chainguard Console to Manage Custom Assembly Resources
How to use Chainguard's Custom Assembly tool in the Chainguard console.
Custom Assembly is a tool from Chainguard that allows users to build customized container images by assembling packages from a curated, secure set of base images provided by Chainguard.
While no system is perfectly secure, Custom Assembly is designed to help you build container images with a strong security posture. By using only guarded packages from Chainguard’s curated and actively maintained images, you benefit from daily CVE scanning and Chainguard’s CVE remediation SLA. This helps minimize risk and provides a clear path for responding to vulnerabilities.
No. Base packages such as glibc, busybox, and others included in your selected starting image cannot be removed. You can think of them as the “crust”—you can add toppings, but not change the crust.
Not exactly. You can only include packages from images you’re entitled to through your Chainguard subscription to stay covered by the SLA.
If you add packages from the general Wolfi OSS repository (not part of a paid image), those packages are not covered by Chainguard’s SLA and may contain unpatched CVEs.
No. Chainguard supports the Custom Assembly tooling itself but does not debug runtime behavior. For example, if your app crashes due to misconfiguration or conflicting dependencies, you’re responsible for resolving it.
FIPS packages can be used with Custom Assembly, but there is no guarantee that your resulting image will operate in FIPS mode. The FIPS Commitment does not apply to custom images.
Yes. Each image comes with:
These tools help you understand exactly what’s inside your container.
Today, Chainguard delivers an SLA for CVE remediation for all our container images.
However, when you re-configure Chainguard’s standard, off-the-shelf images, we cannot extend our SLA to packages you add on because we do not have control over the build. You’re thus responsible for maintaining these added packages or run the risk of accruing CVEs.
Customized images built using Custom Assembly will maintain the same engineering and security best practices as Chainguard’s standard containers, with all packages guarded under our CVE remediation SLA.
One bit of nuance in all this is that the SLA doesn’t directly apply to the images customized with Custom Assembly; it only directly applies to the source image. BUT — as long as you include only guarded package-versions from images that your organization is entitled to, which are scanned daily for CVEs, you will benefit from the SLA.
When you use Custom Assembly, you’re not just randomly sticking together packages from anywhere. You’re assembling from the curated, protected library of packages that your organization has been granted access to by Chainguard. And if a vulnerability crops up in an entitled package? We’re already on it.
So customized images benefit from Chainguard’s CVE SLA — that’s great! But what isn’t supported?
The following is a list of things that our SLA won’t cover:
At the moment, base packages included in the starting image — like glibc
, busybox
, or core utilities — are locked in. So if you select mysql as the base image, any customized images built from it will include the mysql container image’s base packages.
Let’s put it like this: you can add toppings, but you can’t change the crust.
With Custom Assembly, you can only use packages from the images you’re entitled to through your Chainguard subscription and still be covered by our SLA.
For example, if you add packages from sources like Wolfi (OSS packages), those additions are not covered by the SLA. The main reason is that a Wolfi package that’s in a paid image is supported and actively maintained. There isn’t a guarantee that free Wolfi packages will be supported and may include CVEs, so we can’t guarantee that the CVE SLA will hold.
It’s important to understand what is included in your Custom Assembly, as unsupported packages added from external sources may leave you exposed to untracked vulnerabilities. Like we said before, you can pick your own toppings, but you can’t bring your own pepperoni from home.
You’ll get full build logs, SBOMs, and provenance for each image. But if your app throws a Segmentation fault (core dumped)
after adding 6 versions of openssl
… yeah, that one’s on you.
Along these same lines, Chainguard cannot guarantee FIPS compliance for container images built with Custom Assembly. You’re of course allowed to use Custom Assembly with FIPS container images, but this use may result in the custom image not being compliant with FIPS requirements.
Specifically, the SLA states that “in no event shall the FIPS Commitment apply to any Images used with Custom Assembly.” This indicates that while FIPS packages can be used in a custom image, there is no guarantee that the final custom image will operate in FIPS mode.
To sum this point up: Chainguard supports the Custom Assembly tooling, not the runtime behavior of what you build. It’s your party — we’re just delivering the pizza!
While you can’t eliminate risk entirely, there are several best practices that help you maintain a secure custom image: Use only packages from Chainguard images you’re entitled to, which are covered by the CVE remediation SLA.
Custom Assembly provides the tools and defaults for secure image creation — but ongoing vigilance is key.
Build failures can occur for a number of reasons, including the following:
chainctl
, you choose to add a package which you don’t have access to.In any case, you won’t know whether a container image build fails until after it’s complete. If you need assistance troubleshooting, please reach out.
Last updated: 2025-03-21 11:07