Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Verify Sigstore signature on project sync #14193

Draft
wants to merge 3 commits into
base: devel
Choose a base branch
from

Conversation

mayaCostantini
Copy link
Contributor

SUMMARY

Introduce Sigstore signature verification for projects on update as part of the roadmap for Sigstore integration in the Ansible ecosystem.

What is Sigstore?

This section is a short introduction to project Sigstore. For more information, refer to the project documentation.

Project Sigstore is a new standard for signing, verifying and protecting software that solves the following issues:

  • Key management: Sigstore solves the issue of private key storage and revocation by providing “keyless” signatures for software artifacts, eliminating the need for the user to store private GPG keys which could eventually become compromised.

  • Identity-based signatures: Sigstore generates free, short-lived signing certificates based on identities, delegating the authentication part to an OIDC provider (Google, GitHub, Microsoft…).

  • An immutable Transparency Log (Rekor) for signature and provenance attestations is used to store signature entries and facilitate verification and audits in case of identity compromise.

The Sigstore signature verification workflow for projects would exist in parallel with the current implementation for GPG signature verification.

Sigstore provides “keyless” signing for software artifacts, where a signer can connect to an OIDC provider and Sigstore will produce an ephemeral signing certificate and store a signature entry in an immutable transparency log queried during signature verification.

Changes introduced by this PR

This change allows to verify a project Sigstore signature, generated with ansible-sign (change to be supported in the CLI can be seen here) during a sync.

A new type of Credential sigstore is introduced to define the parameters for verifying a project signature:

  • Rekor instance URL: The URL of the Sigstore Rekor instance the signatures were logged to
  • TUF instance URL: The URL of the TUF instance used to retrieve Rekor and Fulcio public keys
  • Rekor root public key: The PEM public key for the Rekor instance
  • Fulcio certificate chain: Chain of PEM CA certificates to verify the Fulcio signing certificate
  • Sigstore certificate identity: The OIDC identity of the signer to look for in the certificate SAN (i.e. email address, GitHub Actions workflow)
  • Sigstore OIDC provider URL: The URL of the OIDC provider that issued the signer identity
  • Sigstore GitHub Actions trigger: The GitHub Actions event name that triggered the workflow
  • Sigstore git commit SHA: The git commit SHA that the workflow run was invoked with
  • Sigstore GitHub workflow name: The name of the workflow that was triggered
  • Sigstore GitHub repository: The repository slug that the workflow was triggered under
  • Sigstore GitHub ref: The git ref that the workflow was invoked with
  • Sigstore verify offline: Verify signatures offline (default: False)

Here is an overview of the configuration options for this type of credential:

sigstore_credential_awx

When launching a project sync, if enabled, the job will look for a checksums manifest and for Sigstore signature materials under .ansible-sign/and will succeed only if the signature was successfully verified:

sigstore_sync_ok

ISSUE TYPE
  • New or Enhanced Feature
COMPONENT NAME
  • API
  • UI
  • Collection
  • Docs
AWX VERSION
awx: 22.3.1.dev72+g693541633a

@mayaCostantini mayaCostantini marked this pull request as draft July 3, 2023 09:33
@github-actions github-actions bot added component:api component:awx_collection issues related to the collection for controlling AWX community labels Jul 3, 2023
@AlanCoding AlanCoding requested a review from relrod July 5, 2023 15:17
@github-actions github-actions bot added the dependencies Pull requests that update a dependency file label Aug 28, 2023
@mayaCostantini mayaCostantini marked this pull request as ready for review October 6, 2023 07:47
@dmzoneill dmzoneill marked this pull request as draft February 19, 2024 15:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
community component:api component:awx_collection issues related to the collection for controlling AWX dependencies Pull requests that update a dependency file
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant