Google On-line Safety Weblog: Introducing rules_oci


Right this moment, we’re asserting the Basic Availability 1.0 model of rules_oci, an open-sourced Bazel plugin (“ruleset”) that makes it easier and safer to construct container photos with Bazel. This effort was a collaboration we had with Side and the Guidelines Authors Particular Curiosity Group. On this submit, we’ll clarify how rules_oci differs from its predecessor, rules_docker, and describe the advantages it gives for each container picture safety and the container group.

Google’s fashionable construct and take a look at device, generally known as Bazel, is gaining quick adoption inside enterprises due to its capacity to scale to the most important codebases and deal with builds in nearly any language. As a result of Bazel manages and caches dependencies by their integrity hash, it’s uniquely suited to make assurances in regards to the provide chain based mostly on the Belief-on-First-Use precept. A technique Google makes use of Bazel is to construct extensively used Distroless base photos for Docker. 

Distroless is a sequence of minimal base photos which enhance supply-chain safety. They prohibit what’s in your runtime container to exactly what’s vital on your app, which is a greatest follow employed by Google and different tech corporations which have used containers in manufacturing for a few years. Utilizing minimal base photos reduces the burden of managing dangers related to safety vulnerabilities, licensing, and governance points within the provide chain for constructing purposes.

Traditionally, constructing container photos was supported by rules_docker, which is now in upkeep mode. The brand new ruleset, known as rules_oci, is best fitted to Distroless in addition to most Bazel container builds for a number of causes:

  • The Open Container Initiative customary has modified the taking part in subject, and there at the moment are a number of container runtimes and picture codecs. rules_oci just isn’t tied to operating a docker daemon already put in on the machine.

  • rules_docker was created earlier than many glorious container manipulation instruments existed, resembling Crane, Skopeo, and Zot. rules_oci is ready to merely depend on trusted third-party toolchains and keep away from constructing or sustaining any Bazel-specific instruments.

  • rules_oci doesn’t embrace any language-specific guidelines, which makes it far more maintainable than rules_docker. Additionally, it avoids the pitfalls of stale dependencies on different language rulesets.

There are different nice options of rules_oci to spotlight as nicely. For instance, it makes use of Bazel’s downloader to fetch layers from a distant registry, enhancing caching and permitting clear use of a personal registry. Multi-architecture photos make it extra handy to focus on platforms like ARM-based servers, and assist Home windows Containers as nicely. Code signing permits customers to confirm {that a} container picture they use was created by the developer who signed it, and was not modified by any third-party alongside the way in which (e.g. person-in-the-middle assault). Together with the work on Bazel group’s roadmap, you’ll additionally get a Software program Invoice of Supplies (SBOM) displaying what went into the container you employ.

Since adopting rules_oci and Bazel 6, the Distroless group has seen numerous enhancements to our construct processes, picture outputs, and safety metadata:

  • Native assist for signing permits us to get rid of a race situation that would have left some photos unsigned. We now signal on immutable digests references to pictures through the construct as a substitute of tags after the construct.

  • Native assist for oci indexes (multi platform photos) allowed us to take away our dependency on docker throughout construct. This additionally means extra pure and debuggable failures when one thing goes flawed with multi platform builds.

  • Enhancements to fetching and caching means our CI builds are sooner and extra dependable when utilizing distant repositories.

  • Distroless photos at the moment are accompanied by SBOMs embedded in a signed attestation, which you’ll be able to view with cosign and a few jq magic:

cosign obtain attestation gcr.io/distroless/base:latest-amd64 | jq -rcs ‘.[0].payload’ | base64 -d | jq -r ‘.predicate’ | jq

Ultimately, rules_oci allowed us to modernize the Distroless construct whereas additionally including vital provide chain safety metadata to permit organizations to make higher choices in regards to the photos they eat.

Right this moment, we’re joyful to announce that rules_oci is now a 1.0 model. This stability assure follows the semver customary, and guarantees that future releases received’t embrace breaking public API adjustments. Side gives sources for utilizing rules_oci, resembling a Migration information from rules_docker. It additionally gives assist, coaching, and consulting companies for successfully adopting rules_oci to construct containers in all languages.

Should you use rules_docker at this time, or are contemplating utilizing Bazel to construct your containers, it is a nice time to present rules_oci a attempt. You may assist by submitting actionable points, contributing code, or donating to the Guidelines Authors SIG OpenCollective. Because the mission is developed and maintained fully as community-driven open supply, your assist is crucial to preserving the mission wholesome and aware of your wants.

Particular due to Sahin Yort and Alex Eagle from Side. 

Related Articles

LEAVE A REPLY

Please enter your comment!
Please enter your name here

Latest Articles