How to Integrate with GitHub + Sigstore for Image Signature Validation

Learn how to configure Sysdig Secure to validate container images signed in GitHub Actions using Sigstore.

Overview

Sigstore provides a way to sign and verify container images using short-lived, identity-bound certificates through OIDC. GitHub integrates with Sigstore’s public services, allowing images built in GitHub Actions to be signed keylessly.
With Sysdig Secure, verification occurs automatically during cluster admission based on policy rules you define in the backend. No Sigstore service deployment is required.

Purpose of Integration

Use GitHub and Sigstore to ensure that only images signed by trusted GitHub workflows are admitted to your Kubernetes or OpenShift clusters. Admission control rejects unsigned or incorrectly signed images, improving provenance, compliance, and supply chain security.

Benefits

CapabilityDescription
Policy-driven verificationTrust rules are defined in the Sysdig Image Signature Validation policy.
Keyless OIDC signingTrust GitHub Actions identities without managing long-lived private keys.
No infrastructure to hostUses public Sigstore services; Fulcio, Rekor, or TUF hosting is not required.
Admission enforcementBlocks non-conforming images before deployment.

Summary

This integration verifies container images signed in GitHub Actions using OIDC identities.
Verification criteria are defined in the Sysdig Image Signature Validation policy, and Cluster Shield enforces those rules during admission.

Configuration

Cluster Shield

No GitHub or Sigstore configuration is required in Helm values.
You can enable signature checks globally. The backend policy determines verification behavior.

features:
  supply_chain:
    enabled: true
    image_signature:
      cosign:
        enabled: true

Policy Configuration

Use the Image Signature Validation Policy to define how Sysdig verifies image signatures. You can choose between two mutually exclusive verification mechanisms:

Public Key verification (PKI-based)

  • Provide a PEM-encoded public key.
  • Sysdig verifies images signed with the corresponding private key.
  • Use this method when you control your own signing keys, such as in a non-keyless CI setup.

Example

-----BEGIN PUBLIC KEY-----
MFswDQYJKoZIhvcNAQEBBQADSgAwRwJAXWRPQyGlEY+SXz8Uslhe+MLjTgWd8lf/
nA0hgCm9JFKC1tq1S73cQ9naClNXsMqY7pwPt1bSY8jYRqHHbdoUvwIDAQAB
-----END PUBLIC KEY-----

OIDC Provider (GitHub/Sigstore keyless verification)

  • Specify the OIDC Issuer, for example https://token.actions.githubusercontent.com.
  • Define the Certificate Identity using a regular expression that matches the signer identity (for example, a GitHub repo/workflow path, service account, or email).
  • Optionally, provide a Certificate Chain (PEM) to override the default chain.
  • This is useful if you have a custom TUF root or want to pin or override a chain for the policy.

Examples

  • OIDC Issuer (regexp supported): ^https://token.actions.githubusercontent.com$
  • Certificate Identity (regexp supported): ^https://github.com/my-org/my-repo/.github/workflows/build\.yml@refs/heads/main$ or ^https://github.com/my-org/.* or ^system:serviceaccount:my-ns:my-sa$ or ^user@example\.com$

Choose either Public Key or OIDC Provider in a single policy. They are mutually exclusive.

Example Use Cases

  • Allow only images signed by the my-org/my-repo main branch workflow in production namespaces.
  • Block all third-party images unless signed by your central build key (Public Key mode).
  • Allow platform namespaces to deploy images signed by a service account identity via OIDC.

See Also