Software attestations are emerging as a key verifiable control for software supply chain security, and are essential for US government vendors to meet Executive Order 14028 requirements. Producing accurate software attestations that conform to existing formats (like in-toto) and criteria set by widely accepted frameworks (like SLSA) will improve the integrity of your software and its composing artifacts, and secure your software supply chain.
The following types of attestations are available
Attestations are accessed through the Build Graph API and items are returned in your query as one of three types
"__typename": "Source"
in your GraphQL output."__typename": "ArtifactSucceeded"
in your GraphQL output.After signing in to your Platform account go to https://platform.activestate.com/sv/buildplanner/graphql to begin a GraphQL session. Enter the following code sample in the “query field” (left side of the screen) of the GraphQL interface, replacing the following bracketed information with the details of your project. If you are returning to the GraphQL interface, be sure to clear the cached code and paste in the new code sample.
<orgname>
The name of your organization<projectname>
The name of your project<projectCommitID>
A “commit ID” from your project. A record of these commits can be found in the History tab of your project page.query slsa {
project(
organization: "<orgname>"
project: "<projectname>"
) {
__typename
... on Project {
commit(vcsRef: "<projectCommitID>") {
... on Commit {
build {
... on Build {
nodes {
__typename
... on Source {
nodeId
namespace
name
version
attestations {
... on Attestations {
slsa_provenance(version: "0.2")
slsa_vsa(version: "0.2")
}
}
}
... on ArtifactSucceeded {
nodeId
displayName
attestations {
... on Attestations {
slsa_provenance(version: "0.2")
slsa_vsa(version: "0.2")
}
}
}
}
}
}
}
}
}
}
}
An example query is shown below. The fields necessary for a successful query have been outlined in red.
After entering the information from your project, clicking the execute button (“play” button in the top menu) will return the requested attestation information.
If the project is private you will need to provide a JSON Web Token (JWT) generated using the State Tool. To receive the JWT for your project
state export jwt
{ "Authorization": "Bearer <JWT pasted from clipboard>"}
Your GraphQL query will produce two separate items, a provenance attestation and a verification summary attestation.
All provenance attestations adhere to the current SLSA requirements. You can view a provenance attestation for each artifact by copying the URL shown after the "slsa_provenance"
field in the GraphQL query above and pasting it into your browser.
The details in the JSON output for each artifact include
Similar to the project’s provenance attestation, the verification summary can be found in your initial GraphQL query output as a URL following "slsa_vsa"
. VSAs are only available for “artifact” types (listed as "__typename": "ArtifactSucceeded"
in your GraphQL output).
The VSA is broken down into three independent layers