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

content: draft: define how downstream users can verify the SLSA source track level of revisions #1094

Merged
merged 40 commits into from
Sep 23, 2024
Merged
Changes from 1 commit
Commits
Show all changes
40 commits
Select commit Hold shift + click to select a range
aa087ad
Initial draft of a 'source attestation'.
TomHennen Jul 10, 2024
6ebf749
fix spelling
TomHennen Jul 10, 2024
2b076ab
make linter happy
TomHennen Jul 10, 2024
48f5301
We need a list of branches that pointed to the revision.
TomHennen Jul 10, 2024
d028178
make linter happy
TomHennen Jul 10, 2024
da726cd
allow other properties in verifiedLevels
TomHennen Jul 10, 2024
0c2d8af
resourceUri does not need refs anymore
TomHennen Jul 10, 2024
a310289
fully qualify git branches
TomHennen Jul 12, 2024
1c51364
make linter happy
TomHennen Jul 12, 2024
9b05f90
add instructions on how to verify
TomHennen Jul 12, 2024
62d9375
make linter happy
TomHennen Jul 12, 2024
9c1b891
Update docs/spec/draft/source-requirements.md
TomHennen Jul 25, 2024
a540709
clarify tamper-proof properties, start section on evidence
TomHennen Jul 25, 2024
d310507
Merge branch 'source_attestation' of github.com:TomHennen/slsa into s…
TomHennen Jul 25, 2024
fd051aa
flesh out Source Level Evidence
TomHennen Jul 25, 2024
c7e6fd7
make linter happy
TomHennen Jul 25, 2024
88f4fbc
Use standardized language for the source attestations
TomHennen Aug 14, 2024
a50bfb5
merge
TomHennen Aug 15, 2024
c54d16b
clarify attestations are about revisions (for the most part)
TomHennen Aug 15, 2024
f8b87a4
issuer -> verifier
TomHennen Aug 15, 2024
be65286
clarify source level evidence
TomHennen Aug 16, 2024
55b7108
detailed -> full
TomHennen Aug 16, 2024
7916e37
fix typo
TomHennen Aug 16, 2024
21cadb0
more evidence examples
TomHennen Aug 16, 2024
858d37f
clarify that the source track may define new types of tags
TomHennen Aug 16, 2024
72d3163
clarify who the attestors are
TomHennen Aug 20, 2024
7f2ad75
Add SCAI as example evidence
TomHennen Sep 9, 2024
3e502cf
Add TODOs
TomHennen Sep 9, 2024
ef1eb82
'full attestation' -> 'provenance attestation'
TomHennen Sep 9, 2024
63d5c48
clarify when source_branches get set
TomHennen Sep 9, 2024
c5ab4a9
Merge branch 'main' of github.com:slsa-framework/slsa into source_att…
TomHennen Sep 13, 2024
2844f59
Merge branch 'main' into source_attestation
TomHennen Sep 17, 2024
85a6c7f
Update docs/spec/draft/source-requirements.md
TomHennen Sep 19, 2024
2de9531
Update docs/spec/draft/source-requirements.md
TomHennen Sep 19, 2024
7955011
attestor->issuer and full->provenance
TomHennen Sep 19, 2024
fb001a4
Update docs/spec/draft/source-requirements.md
TomHennen Sep 20, 2024
01a55cd
Update docs/spec/draft/source-requirements.md
TomHennen Sep 20, 2024
0741877
remove old TODO
TomHennen Sep 20, 2024
bd71904
Update docs/spec/draft/source-requirements.md
TomHennen Sep 23, 2024
b197be7
Update docs/spec/draft/source-requirements.md
TomHennen Sep 23, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
58 changes: 58 additions & 0 deletions docs/spec/draft/source-requirements.md
Original file line number Diff line number Diff line change
Expand Up @@ -129,3 +129,61 @@ Trusted robots MAY be exempted from the code review process. It is RECOMMENDED t
**[Different persons]** The organization strives to ensure that no two user accounts correspond to the same person. Should the organization discover that it issued multiple accounts to the same person, it MUST act to rectify the situation. For example, it might revoke project privileges for all but one of the accounts and perform retroactive code reviews on any changes where that person's accounts are the author and/or code reviewer(s).

Benefits: A compromise of a single human or account does not result in compromise of the project, since all changes require review from two humans.

## Source Attestations

There are two uses for source attestations within the source track:

1. Assertions: Communicate to downstream users what high level security properties a given source revision meets.
2. Evidence: Provide trustworthy metadata which can be used to determine what high level security properties a given source revision meets.

To provide interoperability and ensure ease of use, it's essential that the 'assertions' are applicabile across all Source Control Platforms.
TomHennen marked this conversation as resolved.
Show resolved Hide resolved
Due to the significant differences in how SCPs operate and how they may chose to meet the Source Track requirements it is preferable to
allow for flexibility with 'evidence' attestations. To that end SLSA leaves 'evidence' attestations undefined and up to the SCPs to determine
what works best in their environment.
TomHennen marked this conversation as resolved.
Show resolved Hide resolved

### Source Level Assertions

Source level assertions are issued by the SCP or some other authority that has sufficient evidence to make the determination of a given
TomHennen marked this conversation as resolved.
Show resolved Hide resolved
revision's source level.

These assertions are communicated in [Verification Summary Attestations (VSAs)](./verification_summary.md) as follows:

1. `subject.uri` SHOULD be set to a human readable URI of the revision.
1. `subject.digest` MUST include the revision identifier (e.g. `gitCommit`) and MAY include other digests over the contents of the revision (e.g. `gitTree`, `dirHash`, etc...).
SCPs that do not use cryptographic digests MUST define a canonical type that is used to identify immutable revisions (e.g. `svn_revision_id`)[^1].
1. `resourceUri` MUST be set to the URI of the repository, preferably using [SPDX Download Location](https://spdx.github.io/spdx-spec/v2.3/package-information/#77-package-download-location-field) and SHOULD
provide the branch or refs. E.g. `git+https://github.com/foo/hello-world@refs/heads/main`.
TomHennen marked this conversation as resolved.
Show resolved Hide resolved
1. `verifiedLevels` MUST include the SLSA source track level the issuer asserts the revision meets. One of `SLSA_SOURCE_LEVEL_0`, `SLSA_SOURCE_LEVEL_1`, `SLSA_SOURCE_LEVEL_2`, `SLSA_SOURCE_LEVEL_3`.
1. `dependencyLevels` MAY be empty as source revisions are typically terminal nodes in a supply chain.
TomHennen marked this conversation as resolved.
Show resolved Hide resolved

Source Level Assertion issuers MAY issue assertions based on their understanding of the underlying system, but SHOULD prefer to issue assertions based on Source Level Evidence appropriate to their SCP.
TomHennen marked this conversation as resolved.
Show resolved Hide resolved

#### Example

```
"_type": "https://in-toto.io/Statement/v1",
"subject": [{
"uri": "https://github.com/foo/hello-world/commit/9a04d1ee393b5be2773b1ce204f61fe0fd02366a"
"digest": {"gitCommit": "9a04d1ee393b5be2773b1ce204f61fe0fd02366a"}
}],

// Predicate
"predicateType": "https://slsa.dev/verification_summary/v1",
"predicate": {
"verifier": {
TomHennen marked this conversation as resolved.
Show resolved Hide resolved
"id": "https://example.com/source_verifier",
},
"timeVerified": "1985-04-12T23:20:50.52Z",
"resourceUri": "git+https://github.com/foo/hello-world@refs/heads/main",
TomHennen marked this conversation as resolved.
Show resolved Hide resolved
"policy": {
"uri": "https://example.com/slsa_source.policy",
},
"verificationResult": "PASSED",
"verifiedLevels": ["SLSA_SOURCE_LEVEL_3"],
}
```

[^1]: in-toto attestations allow non-cryptographic digest types: https://github.com/in-toto/attestation/blob/main/spec/v1/digest_set.md#supported-algorithms.


Loading