bazel
The Bazel build image — Google's fast, scalable, multi-language build and test system packaged for hermetic builds in CI pipelines and remote build environments.
What is Bazel?
The Bazel image packages Bazel, the open-source build and test tool originally developed at Google, so teams can run fast, reproducible builds from a container. Bazel builds code in many languages — Java, C++, Go, Python, Rust, and more — using explicit dependency graphs, aggressive caching, and parallel or remote execution, which makes it well suited to large monorepos. The image is commonly used in CI jobs and remote build workers, often through Bazelisk to pin a specific Bazel version, and is configured through .bazelrc, MODULE.bazel or WORKSPACE files, and remote cache settings. It is used by build and platform engineering teams that need a consistent toolchain across developer machines and pipelines.
What is Echo's Bazel image?
Echo's Bazel image is a hardened build of Bazel on Echo's hardened base. Echo images are designed to be a drop-in replacement: swap the image reference in your Dockerfile or deployment manifest and CVEs go to zero without disrupting your .bazelrc settings, Bazel version pinning, remote cache and execution configuration, and toolchains. Every image is tested across clouds, image use cases, and deployment targets. Echo ships every image in two variants:
- Distroless variant — optimized for runtime use, with the smallest possible attack surface
- Default variant — includes essential build tools, package managers, and shells for teams that need operational access
For production Bazel deployments, the distroless variant keeps all runtime operations — dependency analysis, action execution, caching, test running, and artifact output — fully intact while minimizing exposure; the default variant suits build and platform engineering teams that need shell access for debugging builds, inspecting the dependency graph, or diagnosing cache behavior.
What is the difference between Echo's Bazel image and the public Bazel image?
Public Bazel images ship on bases that include OS-level tooling convenient for development but which contribute CVEs that accumulate on a build tooling image used in production. Bazel images run inside CI pipelines and operational jobs with access to source code, remote cache credentials, and build outputs. OS-level CVEs in the base image — particularly in libraries such as openssl, zlib, and libc, git, and the bundled JDK dependencies — create exploitable paths in an environment that application-level controls never see. Because tooling images are pulled and executed constantly across pipelines, they are also a steady source of scanner noise — every package in the base becomes a finding your security team must triage, even when none of it is exercised by the job. Echo's build retains everything Bazel needs for dependency analysis, action execution, caching, test running, and artifact output while removing the packages that don't belong in a production Bazel build tooling image. As we covered in our post on how to protect your company from software supply chain attacks, build and automation images that run with access to source code, credentials, and deployment targets are a high-value path into everything downstream. Echo commits to a 7-day SLA for critical and high severity vulnerabilities, and 10 days for medium, low, and unknown — with vulnerabilities triaged within 24 hours. Echo images are recognized by all major scanners and mirrored to all major registries, so they fit into existing pipelines without changing your registry, scanner, or runtime tooling.
FAQ
Can I replace my Bazel image with Echo's Bazel image?
Yes. Echo's Bazel image is a drop-in replacement. Update the FROM line in your Dockerfile and your workloads keep running. .bazelrc configuration, remote cache and execution endpoints, Bazelisk version pinning, and CI invocation flags all continue to work without changes to your BUILD files or pipelines.
Is Echo's Bazel image FIPS-validated?
Yes. Echo's FIPS-validated images use cryptographic modules with an active FIPS 140-3 CMVP certificate, making them fit for federal use — unlike FIPS-compliant images that haven't been validated. This matters for teams running Bazel workloads inside FedRAMP boundaries, where a build tooling image that compiles and tests source code and publishes artifacts to registries and caches must meet cryptographic requirements across the full stack — including the OpenSSL and TLS libraries bundled with the Bazel image.
What is Echo's vulnerability management SLA on the Bazel image?
Echo commits to a 7-day SLA for critical and high severity vulnerabilities, and 10 days for medium, low, and unknown — with vulnerabilities triaged within 24 hours. Patches are mirrored automatically into your private registry so you're always running a clean version — critical for a tooling image that is pulled and run constantly across pipelines with access to source code, remote cache credentials, and build outputs.
Is Echo's Bazel image distroless?
Echo ships every image in two variants: a distroless variant optimized for runtime use, and a default variant that includes essential build tools, package managers, and shells. For production Bazel deployments, the distroless variant is the leaner, more secure choice; for build and platform engineering teams that need shell access for debugging builds, inspecting the dependency graph, or diagnosing cache behavior, the default variant is the right fit.
How does Echo achieve such a drastic CVE reduction in Bazel?
Echo's Bazel image is built from source with only the absolute essentials needed to run the Bazel build tooling image, which significantly shrinks the attack surface. Echo also patches aggressively over time, with backports available so you can stay on the Bazel version your applications and their dependencies are certified against — avoiding a disruptive upgrade forced purely by OS-level vulnerabilities in the base image rather than by your own requirements.
Will Echo's Bazel image help us achieve FedRAMP?
Yes. The hard parts of FedRAMP — managing vulnerabilities, applying fixes, and using FIPS-validated cryptography — are baked into Echo images, including STIG-hardened configuration and ConMon/POA&M-ready reporting. For build and platform engineering teams running Bazel under an ATO — whether that's a monorepo build in CI, a remote build worker, or a release pipeline producing signed artifacts — Echo's hardened Bazel image keeps the build tooling image layer in-boundary and compliant without requiring custom hardening scripts or manual base image patching between compliance cycles.
.avif)