Docker BuildKit 新增对供应链安全实践和缓存后端的支持

Docker BuildKit v0.11 版本发布总结

Docker 发布了 BuildKit 的 0.11 版本,这是用于构建镜像的后端工具。此版本引入了多项新功能,包括认证创建、可重复构建改进以及云缓存后端支持。

新功能概述

  1. 认证创建支持

    • 软件物料清单 (SBOM):记录镜像中包含的组件信息。与 docker sbom 类似,但允许将结果嵌入镜像中。可以通过 --sbom 标志生成 SBOM:

      $ docker buildx build --sbom=true -t <myorg>/<myimage> --push .

      SBOM 可以通过 imagetools 子命令进行检查:

      $ docker buildx imagetools inspect moby/buildkit:latest --format '{{ range (index .SBOM "linux/amd64").SPDX.packages }}{{ println .name }}{{ end }}'
    • SLSA 来源证明:SLSA(供应链软件制品等级)是一个安全框架,提供与供应链安全相关的标准和控件。来源证明是关于构建过程的元数据,包括所有权、来源、依赖项和构建过程信息。可以通过 --provenance 标志生成来源证明:

      $ docker buildx build --provenance=true -t <myorg>/<myimage> --push .

      来源证明也可以通过 imagetools 查询:

      $ docker buildx imagetools inspect moby/buildkit:latest --format '{{ json (index .Provenance "linux/amd64").SLSA.invocation.configSource }}'

      来源证明生成还支持可选模式参数,以包含更多详细信息。

  2. 可重复构建改进

    • 引入了 SOURCE_DATE_EPOCH 构建参数,用于设置镜像配置和层中的时间戳,以解决因时间戳差异导致的可重复构建问题。
  3. 云缓存后端支持

    • BuildKit 现在支持使用 Amazon S3 和 Azure Blob Storage 作为缓存后端,适用于 CI 管道等环境中,有助于提高性能。可以通过 --cache-to--cache-from 标志指定缓存后端:

      $ docker buildx build --push -t <user>/<image> \
        --cache-to type=s3,region=<region>,bucket=<bucket>,name=<cache-image>[,parameters...] \
        --cache-from type=s3,region=<region>,bucket=<bucket>,name=<cache-image> .
      
      $ docker buildx build --push -t <registry>/<image> \
        --cache-to type=azblob,name=<cache-image>[,parameters...] \
        --cache-from type=azblob,name=<cache-image>[,parameters...] .

更多信息

此版本通过引入认证创建、改进可重复构建以及支持云缓存后端,进一步增强了 Docker 镜像构建的功能和安全性。

阅读 24
0 条评论