ci: add distroless-fips image variant built with --config=aws-lc-fips#45813
ci: add distroless-fips image variant built with --config=aws-lc-fips#45813frbvianna wants to merge 1 commit into
Conversation
|
Hi @frbvianna, welcome and thank you for your contribution. We will try to review your Pull Request as quickly as possible. In the meantime, please take a look at the contribution guidelines if you have not done so already. |
Adds a new `distroless-fips-v{X}.{Y}.{Z}` Docker image published
alongside each standard release, built with `--config=aws-lc-fips`.
Changes:
- ci/do_ci.sh: add `release.server_only.fips` target that appends
--config=aws-lc-fips to BAZEL_RELEASE_OPTIONS and outputs the binary
as release.fips.tar.zst
- distribution/docker/Dockerfile-envoy: add ENVOY_RELEASE_TARBALL build
arg (default: release.tar.zst) to allow the FIPS build to supply an
alternative tarball
- distribution/docker/build.sh: add -distroless-fips to BUILD_TYPES;
update build_args to strip -fips when deriving the Docker target and
pass --build-arg ENVOY_RELEASE_TARBALL=release.fips.tar.zst for FIPS
builds
- .github/workflows/_publish_build.yml: add binary-fips and docker-fips
jobs mirroring the existing binary/docker jobs
- .github/workflows/_publish_release_container.yml: add
distroless-fips-dev and distroless-fips-v{X}.{Y}.{Z} manifest entries
Closes envoyproxy#45812
Signed-off-by: Felipe Vianna <felipe.vianna@sap.com>
70413f0 to
310a3da
Compare
|
@frbvianna i see a few problems wit this idea firstly we dont publish any fips builds at all - they are not certified in any way - what we provide is the setup for downstreams to build fips for their own compliance/certification next - we also dont currently have any aws-lc ci - its not really supported by the project, more accomodated and finally - for us to consider publishing any additional container builds - we would first need to consider publishing a binary for that |
@phlax, thanks for taking a look. I understand these are not certified, however, if we are to use a FIPS-compliant TLS module in Envoy, my understanding is that we should build our own Envoy artifact. Is there an alternative to that? I thought that simply releasing the image built with either
Is it feasible for
Do you see an issue with that? |
The issues are maintenance and CI resources for qualification. We do not qualify either FIPS configuration by building and running Envoy test suite. If we commit this change the only guarantee we have for this docker image is that the binary had been successfully linked. Is this something you'd be willing to deploy into your production? Adding qualification will require CI resources which are tight already. We could limit this qualification to just the points of release, but then who would be responsible for the eventual bit rot, failed build or tests? Would you commit to long term maintenance of these images? |
Summary
Adds a
distroless-fips-v{X}.{Y}.{Z}Docker image published alongside each standard release, built with--config=aws-lc-fips. Adistroless-fips-devimage is also published on each push tomain.This addresses #45812.
Changes
ci/do_ci.sh: addrelease.server_only.fipstarget that appends--config=aws-lc-fipstoBAZEL_RELEASE_OPTIONSand outputs the binary asrelease.fips.tar.zstdistribution/docker/Dockerfile-envoy: addENVOY_RELEASE_TARBALLbuild arg (default:release.tar.zst) to allow the FIPS build to supply an alternative tarball without duplicating theenvoy-distrolessstagedistribution/docker/build.sh: add-distroless-fipstoBUILD_TYPES; updatebuild_argsto strip-fipswhen deriving the Docker--targetand pass--build-arg ENVOY_RELEASE_TARBALL=release.fips.tar.zstfor FIPS builds.github/workflows/_publish_build.yml: addbinary-fipsanddocker-fipsjobs mirroring the existingbinary/dockerjobs, withtimeout-minutes: 180to account for the longer AWS-LC FIPS compilation.github/workflows/_publish_release_container.yml: adddistroless-fips-devanddistroless-fips-v{X}.{Y}.{Z}manifest entriesNotes
--config=aws-lc-fipsis used (not--config=boringssl-fips) as it supports bothamd64andarm64; the boringssl-fips config is limited to Linux x86_64envoy-distrolesstarget with a FIPS-built binary injected via theENVOY_RELEASE_TARBALLbuild arg