Timoni modules are distributed as OCI artifacts. When publishing a module version to a container registry,
the OCI artifact can be cryptographically signed to improve the software supply chain security.
Cosign
Timoni can sign modules using Sigstore Cosign.
Cosign is a tool that allows you to sign and verify
OCI artifacts with a public/private key pair or with an OIDC token provided by GitHub, Google or Microsoft.
To sign modules, you need to install
the Cosign v2 binary and place it in the PATH for Timoni to use it.
When --registry-insecure is set, Timoni also permits Cosign to use plain HTTP or skip TLS verification.
Use this option only for testing.
When --creds is set, Timoni also uses those credentials for Cosign.
Sign with static keys
Generate a cosign key pair:
Export the private key password with:
Sign the module while pushing:
Timoni will push the module to the registry and will pass the OCI artifact digest to Cosign.
Cosign will push the signature to the registry and will record the signature in
the Rekor transparency log.
To verify the module signature:
To verify the module signature while pulling:
Sign with Cosign keyless
For keyless signing, the Cosign CLI would prompt you to confirm that your email will be stored
in the public transparency logs. Timoni adds --yes to the cosign command to prevents this prompt.
Using Timoni with Cosign keyless signature means that users agree to this statement:
Sign the module while pushing:
Signing in CIWhen using timoni push in CI workflows, you can configure GitHub and
GitLab to provide Cosign with an OIDC token.
To automate the publishing and signing of module versions, please see the Timoni GitHub Actions.
To verify the module signature:
Verify Signature from GitHub action or GitLab CI/CDWhen the signature was created in GitHub via the keyless signing you should set the flag --certificate-identity-regexp
to a value like ^https://github.com/<user|org>/<repo-name>.* and set the flag --certificate-oidc-issuer-regexp
to https://token.actions.githubusercontent.com.GitLab is the same setup for the identity flag, https://gitlab.com instead of https://github.com and the oidc
issuer is the GitLab instance domain e.g. https://gitlab.com
Example verification of the podinfo module:
To verify the module signature while pulling: