docker / docker/github-builder

Signing the main tag/manifest?

オープン
#104 コメント 3 件 リアクション 6 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

kind/enhancement status/triage
主要言語
言語のデータがありません
スター
83
フォーク
23
平均マージ
2日 22時間
マージ済み PR(30日)
8

説明

Description

Today if we do this:

    uses: docker/github-builder/.github/workflows/build.yml@v1
    with:
      output: image
      push: true
      platforms: linux/amd64,linux/arm64
      sbom: true
      meta-images: |
        ghcr.io/my-org/my-image
      meta-tags: |
        latest

We are able to cosign verify the two manifests per platform linux/amd64 and linux/arm64 individually and explicitly.

But we are not able to do this:

cosign verify \
  --certificate-oidc-issuer https://token.actions.githubusercontent.com \
  --certificate-identity-regexp ^https://github.com/docker/github-builder/.github/workflows/build.yml.*$ \
  ghcr.io/my-org/my-image:FIXME-WITH-LATEST-DIGEST

We'll get this error because there is no signature on the main tag/manifest:

Error: no signatures found
error during command execution: no signatures found

It's common practice to have the main tag/digest in Dockerfile for base images and in Kubernetes manifests for final container images to refer to the main tag/digest, letting then the platform pulling the actual digest based on the arch/platform. In the meantime, admission controller like Kyverno will check the signature on the main tag/digest.

Could we add the cosign signature on the main tag/digest too?

コントリビューションガイド

コントリビューションガイドを開く

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

調査の方向性

.github/workflows/build.yml から始めて、linux/amd64 および linux/arm64 のマニフェストに対して cosign 署名がどのように生成されるかを確認します。そのフローを、要求されている main tag/digest の検証コマンドと比較します。main マニフェストも正常に検証でき、既存のプラットフォームごとの署名が維持されていれば完了です。

索引モデルが issue の本文から書いたものです。

評価

技術スタック
docker, github-actions
領域
ci-cd, devops, security
issue の種類
機能追加
難易度
4/5
見積もり時間
3〜5日
活発さ
静か
明瞭さ
おおむね明確
初心者へのやさしさ
48/100

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。