使用 GitHub Actions 添加 SBOM 和出处证明
目录
软件物料清单 (SBOM) 和来源证明添加了有关 您的镜像,以及它是如何构建的。
版本 4 及更高版本支持证明。docker/build-push-action
默认出处
GitHub Action 会自动添加 provenance
证明您的镜像,但需满足以下条件:docker/build-push-action
- 如果 GitHub 存储库是公开的,则 的出处证明会自动添加到镜像中。
mode=max
- 如果 GitHub 存储库是私有的,则 的来源证明会自动添加到镜像中。
mode=min
- 如果您使用的是
docker
导出器,或者 您正在将构建结果加载到运行程序中,没有 证明将添加到镜像中。这些输出格式不支持 证明。load: true
警告
如果您用于为 public GitHub 存储库,附加到镜像的来源证明 默认情况下,包含 build 参数的值。如果您误用了 build 参数将密钥传递给您的构建,例如用户凭证或 authentication tokens 时,这些密钥会在 Proven 证明。重构您的构建以改用 secret 挂载来传递这些密钥。还要记住轮换您可能已暴露的任何秘密。
docker/build-push-action
最高级别的出处
建议您使用最高级别的 prosourceance 构建镜像
证明。私有仓库默认只添加 min-level 来源,
但您可以通过将 GitHub Action 上的输入设置为 .provenance
docker/build-push-action
mode=max
请注意,向镜像添加证明意味着您必须将镜像推送到 注册表,而不是将镜像加载到 跑步者。这是因为本地镜像存储不支持加载 带有证明的镜像。
name: ci
on:
push:
env:
IMAGE_NAME: user/app
jobs:
docker:
runs-on: ubuntu-latest
steps:
- name: Login to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ vars.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Extract metadata
id: meta
uses: docker/metadata-action@v5
with:
images: ${{ env.IMAGE_NAME }}
- name: Build and push image
uses: docker/build-push-action@v6
with:
push: true
provenance: mode=max
tags: ${{ steps.meta.outputs.tags }}
SBOM 系列
SBOM 证明不会自动添加到镜像中。添加 SBOM 的步骤
证明,请将 的 input 设置为 true。sbom
docker/build-push-action
请注意,向镜像添加证明意味着您必须将镜像推送到 注册表,而不是将镜像加载到 跑步者。这是因为本地镜像存储不支持加载 带有证明的镜像。
name: ci
on:
push:
env:
IMAGE_NAME: user/app
jobs:
docker:
runs-on: ubuntu-latest
steps:
- name: Login to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ vars.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Extract metadata
id: meta
uses: docker/metadata-action@v5
with:
images: ${{ env.IMAGE_NAME }}
- name: Build and push image
uses: docker/build-push-action@v6
with:
sbom: true
push: true
tags: ${{ steps.meta.outputs.tags }}