Ingest and Attest SBOM with Harness GitHub Actions
Ingest and Attest SBOM with Harness Github Actions
Harness GitHub Actions provide a seamless way to integrate Harness's Software Supply Chain Security (SCS) capabilities directly into GitHub workflows. You can use this GitHub Action to perform various supply chain security tasks. The Harness GitHub Action includes multiple sub-actions, each designed for specific tasks. This document focuses on the harness/github-actions/sbom-ingestion sub-action, which is used to ingest an SBOM and attest it if needed.
The harness/github-actions/sbom-ingestion is responsible for feeding the Software Bill of Materials (SBOM) data to SCS and optionally attesting it. The SBOM will be saved to the SCS module and can be found in the Artifact section. If attestation is enabled, the SBOM attestation will be signed, and the .att attestation file will be pushed to the configured container registry.
Before you begin
Here are the prerequisites for using the GitHub Action.
Harness Account: Ensure you have a Harness account with the SCS license enabled.
Harness Account Details: Save the following Harness account details, which are required for all sub-actions. It is recommended to securely store these values using GitHub Secrets.
Key
Value Example
Description
Required
HARNESS_ACCOUNT_URL
https://example.harness.io
The URL of your Harness account.
Yes
HARNESS_ACCOUNT_ID
ppdfedDDDL_dharzdPs_JtWT7g
The unique identifier for your Harness account.
Yes
HARNESS_ORG_ID
SCS
The identifier for your Harness organization.
Yes
HARNESS_PROJECT_ID
SCS_ORG
The identifier for your Harness project within the organization.
Yes
HARNESS_API_KEY
${{ secrets.SCS_API_KEY }}
The API key for authenticating with Harness. Create an API key using a Service Account (recommended) or a Personal Account , and then add the key to GitHub Actions Secrets with "HARNESS_API_KEY" as the key name.
Yes
VAULT_ADDR
https://myvault.example.com
The URL of your Vault
No
Security Keys: For attestation generation and verification, Key pair is required. The key should be generated using Cosign of type
ecdsa-P256. Currently, HashiCorp Vault is supported for storing and retrieving the key. Additional Key Management Services (KMS) will be supported in the future.
Usage example
- name: SBOM Ingestion
uses: harness/github-actions/sbom-ingestion@1.1.0
with:
HARNESS_ACCOUNT_URL: https://myaccount.harness.io
HARNESS_ACCOUNT_ID: my_account_id_9YpRharzPs
HARNESS_ORG_ID: my_org_id_default
HARNESS_PROJECT_ID: example_project_id
HARNESS_API_KEY: ${{ secrets.API_KEY_SAVED_AS_GH_SECRET }}
VAULT_ADDR: ${{ secrets.VAULT_URL }}
TARGET: <image>:<tag>
SBOM_FILE_PATH: <path_to_sbom_file>
ATTEST: true
KMS_KEY: <path_to_your_key>Configuration
Make sure to include the required configurations from the Before you begin section in your workflow. Below are the specific configurations for the sbom-ingestion sub-action.
Key
Value Example
Description
Required
TARGET
example_image:latest
The target artifact (Docker image) for SBOM ingestion.
Yes
SBOM_FILE_PATH
path/to/sbom.json
The file path to the SBOM that needs to be ingested.
Yes
ATTEST
true or false
Boolean flag to determine if attestation is required.
No
KMS_KEY
path/to/your/key
Path to the Private key used for signing the attestation.
No
Sample workflow
The following sample workflow uses the harness/github-actions/sbom-ingestion sub-action.
Next steps
Go to Enforce SBOM Policies with GitHub Actions to verify the ingested SBOM and enforce policies on it.
Last updated
Was this helpful?