Skip to content

Sigstore: accept a cluster's public ServiceAccount issuer alongside the kind default - #114

Merged
jfillman merged 1 commit into
mainfrom
sigstore/dual-issuer
Oct 16, 2026
Merged

jfillman merged 1 commit into
mainfrom
sigstore/dual-issuer

Conversation

@jfillman

Copy link
Copy Markdown
Owner

Lets Fulcio and the verify Tasks accept a cluster's own public ServiceAccount issuer next to the kind default, so a cluster can switch issuers without breaking keyless signing. First user: kiac-dev → https://hangarplatform.dev/oidc/kiac-dev (IRSA-style AWS federation for Crossplane's AWS providers).

Changes

  • glidepath-control-plane: new fulcio.publicIssuers (default []). The fulcio-bootstrap hook now rewrites fulcio-config on every sync; the signing root is still minted only once. It restarts fulcio-server when the config changes, because config.yaml is a subPath mount. The Role gains get/patch on deployments/fulcio-server only.
  • glidepath-catalog: new sigstoreIssuers (default: the kind issuer). verify-image-provenance and verify-sast-attestation use --certificate-oidc-issuer-regexp '^(a|b)$', with each entry escaped through regexQuoteMeta.
  • docs/admin/image-signing.md: the staged issuer switch.

Checks

  • Defaults are a no-op. With publicIssuers: [], the regenerated fulcio-config is byte-identical to kiac-dev's live one (1409 bytes), so the hook logs "unchanged" and nothing restarts.
  • helm lint passes on both charts. The rendered hook script passes bash -n with and without a public issuer, and the SERVERCONFIG heredoc terminator is still at column 0.
  • Fulcio v1.8.8 source: a failing issuer is logged and skipped, not fatal (prepare()), and is retried on demand (GetVerifier). An entry without ca-cert uses system roots. Egress from fulcio-system to hangarplatform.dev returned 200 from a probe pod.

The kiac-dev values that turn it on go in a separate gitops-cluster-dev PR.

🤖 Generated with Claude Code

…he kind default

fulcio.publicIssuers (control-plane) adds issuers to fulcio-config; the bootstrap hook now rewrites
fulcio-config on every sync (the signing root is still minted once) and restarts fulcio-server when
it changes, since config.yaml is a subPath mount. sigstoreIssuers (catalog) is the list the verify
Tasks accept, via --certificate-oidc-issuer-regexp with each entry quoted. Defaults are unchanged and
render byte-identical to kiac-dev's live fulcio-config.

Groundwork for kiac-dev signing tokens as https://hangarplatform.dev/oidc/kiac-dev (IRSA-style AWS
federation for Crossplane). docs/admin/image-signing.md has the staged switch.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@jfillman
jfillman merged commit 32cd9b3 into main Oct 16, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant