Skip to content

Commit 16a1a47

Browse files
committed
Reformat using markdownlint and set up GH Action.
Also set up dependabot to keep the GitHub Action up-to-date.
1 parent 8179537 commit 16a1a47

File tree

9 files changed

+166
-106
lines changed

9 files changed

+166
-106
lines changed

.github/dependabot.yml

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
version: 2
2+
updates:
3+
- package-ecosystem: github-actions
4+
directory: "/"
5+
schedule:
6+
interval: daily

.github/workflows/lint.yml

+11
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
name: Lint
2+
on: [pull_request]
3+
jobs:
4+
lint:
5+
runs-on: ubuntu-latest
6+
steps:
7+
- name: Markdown Lint
8+
uses: nosborn/github-action-markdown-cli@6e34c67b8bd3406dd8ee6eeba353ca4c66793501 # v2.0.0
9+
with:
10+
files: .
11+
config_file: ".markdownlint.yaml"

.markdownlint.yaml

+43
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
# MD004/ul-style - Unordered list style
2+
MD004:
3+
style: "dash"
4+
5+
# MD007/ul-indent - Unordered list indentation
6+
MD007:
7+
indent: 4
8+
9+
# MD013/line-length - Line length
10+
MD013: false
11+
12+
# MD029/ol-prefix - Ordered list item prefix
13+
MD029:
14+
# List style
15+
style: "ordered"
16+
17+
# MD030/list-marker-space - Spaces after list markers
18+
MD030:
19+
# Spaces for single-line unordered list items
20+
ul_single: 3
21+
# Spaces for single-line ordered list items
22+
ol_single: 2
23+
# Spaces for multi-line unordered list items
24+
ul_multi: 3
25+
# Spaces for multi-line ordered list items
26+
ol_multi: 2
27+
28+
# MD033/no-inline-html - Inline HTML
29+
MD033: false
30+
31+
# MD034/no-bare-urls - Bare URL used
32+
MD034: false
33+
34+
# MD046/code-block-style - Code block style
35+
MD046:
36+
style: "fenced"
37+
38+
# MD047/single-trailing-newline - Files should end with a single newline character
39+
MD047: true
40+
41+
# MD048/code-fence-style - Code fence style
42+
MD048:
43+
style: "backtick"

README.md

+20-19
Original file line numberDiff line numberDiff line change
@@ -42,11 +42,11 @@ software developers and consumers.
4242

4343
SLSA addresses three issues:
4444

45-
- Software producers want to secure their supply chains but don't know
45+
- Software producers want to secure their supply chains but don't know
4646
exactly how;
47-
- Software consumers want to understand and limit their exposure to supply
47+
- Software consumers want to understand and limit their exposure to supply
4848
chain attacks but have no means of doing so;
49-
- Artifact signatures alone prevent only a subset of the attacks we care about.
49+
- Artifact signatures alone prevent only a subset of the attacks we care about.
5050

5151
### Supply Chain Threats
5252

@@ -225,7 +225,7 @@ dependencies' supply chains plus its own sources and builds.
225225

226226
Special cases:
227227

228-
* A ZIP file is containing source code is a package, not a source, because it
228+
- A ZIP file is containing source code is a package, not a source, because it
229229
is built from some other source, such as a git commit.
230230

231231
### SLSA Levels
@@ -297,6 +297,7 @@ Common - [Security] | | | | ✓
297297
Common - [Access] | | | | ✓
298298
Common - [Superusers] | | | | ✓
299299

300+
<!-- markdownlint-disable-next-line MD036 -->
300301
_○ = required unless there is a justification_
301302

302303
[Access]: requirements.md#access
@@ -366,15 +367,15 @@ satisfy all of the SLSA build requirements.
366367
That said, verified reproducible builds are not a complete solution to supply
367368
chain integrity, nor are they practical in all cases:
368369

369-
* Reproducible builds do not address source, dependency, or distribution
370+
- Reproducible builds do not address source, dependency, or distribution
370371
threats.
371-
* Reproducers must truly be independent, lest they all be susceptible to the
372+
- Reproducers must truly be independent, lest they all be susceptible to the
372373
same attack. For example, if all rebuilders run the same pipeline software,
373374
and that software has a vulnerability that can be triggered by sending a
374375
build request, then an attacker can compromise all rebuilders, violating the
375376
assumption above.
376-
* Some builds cannot easily be made reproducible, as noted above.
377-
* Closed-source reproducible builds require the code owner to either grant
377+
- Some builds cannot easily be made reproducible, as noted above.
378+
- Closed-source reproducible builds require the code owner to either grant
378379
source access to multiple independent rebuilders, which is unacceptable in
379380
many cases, or develop multiple, independent in-house rebuilders, which is
380381
likely prohibitively expensive.
@@ -396,38 +397,38 @@ data models. Currently this is joint work between
396397
[Binary Authorization](https://cloud.google.com/binary-authorization) and
397398
[in-toto](https://in-toto.io/) but we invite wider participation.
398399

399-
* [Standard attestation format](https://github.com/in-toto/attestation#in-toto-attestations)
400+
- [Standard attestation format](https://github.com/in-toto/attestation#in-toto-attestations)
400401
to express provenance and other attributes. This will allow sources and
401402
builders to express properties in a standard way that can be consumed by
402403
anyone. Also includes reference implementations for generating these
403404
attestations.
404-
* Policy data model and reference implementation.
405+
- Policy data model and reference implementation.
405406

406407
For a broader view of the software supply chain problem:
407408

408-
* [Know, Prevent, Fix: A framework for shifting the discussion around
409+
- [Know, Prevent, Fix: A framework for shifting the discussion around
409410
vulnerabilities in open
410411
source](https://security.googleblog.com/2021/02/know-prevent-fix-framework-for-shifting.html)
411-
* [Threats, Risks, and Mitigations in the Open Source Ecosystem]
412+
- [Threats, Risks, and Mitigations in the Open Source Ecosystem]
412413

413414
Prior iterations of the ideas presented here:
414415

415-
* [Building Secure and Reliable Systems, Chapter 14: Deploying Code](https://sre.google/static/pdf/building_secure_and_reliable_systems.pdf#page=339)
416-
* [Binary Authorization for Borg] - This is how Google implements the SLSA
416+
- [Building Secure and Reliable Systems, Chapter 14: Deploying Code](https://sre.google/static/pdf/building_secure_and_reliable_systems.pdf#page=339)
417+
- [Binary Authorization for Borg] - This is how Google implements the SLSA
417418
idea internally.
418419

419420
Other related work:
420421

421-
* [CII Best Practices Badge](https://bestpractices.coreinfrastructure.org/en)
422-
* [Security Scorecards](https://github.com/ossf/scorecard) - Perhaps SLSA
422+
- [CII Best Practices Badge](https://bestpractices.coreinfrastructure.org/en)
423+
- [Security Scorecards](https://github.com/ossf/scorecard) - Perhaps SLSA
423424
could be implemented as an aggregation of scorecard entries, for at least
424425
the checks that can be automated.
425-
* [Trustmarks](https://trustmark.gtri.gatech.edu/)
426+
- [Trustmarks](https://trustmark.gtri.gatech.edu/)
426427

427428
Other takes on provenance and CI/CD:
428429

429-
* [The Path to Code Provenance](https://medium.com/uber-security-privacy/code-provenance-application-security-77ebfa4b6bc5)
430-
* [How to Build a Compromise-Resilient CI/CD](https://www.youtube.com/watch?v=9hCiHr1f0zM)
430+
- [The Path to Code Provenance](https://medium.com/uber-security-privacy/code-provenance-application-security-77ebfa4b6bc5)
431+
- [How to Build a Compromise-Resilient CI/CD](https://www.youtube.com/watch?v=9hCiHr1f0zM)
431432

432433
<!-- Links -->
433434

controls/README.md

+8-8
Original file line numberDiff line numberDiff line change
@@ -7,23 +7,23 @@ NOTE: This is still a work in progress.
77

88
## Contents
99

10-
* [Software Attestations](attestations.md): How to represent software artifact
10+
- [Software Attestations](attestations.md): How to represent software artifact
1111
metadata.
12-
* [Policies](policy.md): Conventions for how to express security policies
12+
- [Policies](policy.md): Conventions for how to express security policies
1313
based on attestations.
14-
* [Survey](survey.md): Survey of existing and in-development controls that
14+
- [Survey](survey.md): Survey of existing and in-development controls that
1515
relate to the framework.
1616

1717
## Project Goals
1818

1919
(1) Build an ecosystem around software attestations and policies, applicable to
2020
use cases beyond SLSA and supply chain integrity:
2121

22-
* Establish clear and consistent terminology and data models.
23-
* Define simple interfaces between layers/components, to allow
22+
- Establish clear and consistent terminology and data models.
23+
- Define simple interfaces between layers/components, to allow
2424
compatibility between implementations and to encourage discrete,
2525
composable technologies.
26-
* Recommend a cohesive suite of formats, conventions, and tools that are
26+
- Recommend a cohesive suite of formats, conventions, and tools that are
2727
known to work well together.
2828

2929
Currently, there are various projects in this space with overlapping missions
@@ -34,8 +34,8 @@ desire.
3434

3535
(2) Provide recipes for achieving SLSA, built on the ecosystem above:
3636

37-
* Identify base technologies that meet the SLSA requirements, which serves as
37+
- Identify base technologies that meet the SLSA requirements, which serves as
3838
guidance to system implementers on how to build SLSA-compl8iant services.
3939
Example: "CI/CD systems should produce provenance attestations in format X."
40-
* Recommend simple end-to-end solutions for end users (software developers) to
40+
- Recommend simple end-to-end solutions for end users (software developers) to
4141
achieve SLSA. Example: "Configure GitHub this way to reach SLSA 3."

controls/attestations.md

+11-11
Original file line numberDiff line numberDiff line change
@@ -21,14 +21,14 @@ in the trusted computing world.)
2121
An attestation is the generalization of raw artifact/code signing, where the
2222
signature is directly over the artifact or a hash of artifact:
2323

24-
* With raw signing, a signature *implies* a single bit of metadata about the
24+
- With raw signing, a signature *implies* a single bit of metadata about the
2525
artifact, based on the public key. The exact meaning must be negotiated
2626
between signer and verifier, and a new keyset must be provisioned for each
2727
bit of information. For example, a signature might denote who produced an
2828
artifact, or it might denote fitness for some purpose, or something else
2929
entirely.
3030

31-
* With an attestation, the metadata is *explicit* and the signature only
31+
- With an attestation, the metadata is *explicit* and the signature only
3232
denotes who created the attestation. A single keyset can express an
3333
arbitrary amount of information, including things that are not possible with
3434
raw signing. For example, an attestation might state exactly how an artifact
@@ -101,17 +101,17 @@ recognize that other choices may be necessary in various cases.
101101

102102
Summary: Generate [in-toto](https://in-toto.io) attestations.
103103

104-
* Envelope: **[DSSE](https://github.com/secure-systems-lab/dsse/)** (TODO:
104+
- Envelope: **[DSSE](https://github.com/secure-systems-lab/dsse/)** (TODO:
105105
Recommend Crypto/PKI)
106-
* Statement:
106+
- Statement:
107107
**[in-toto/attestation](https://github.com/in-toto/attestation/)**
108-
* Predicate: Choose as appropriate.
109-
* [Provenance](https://github.com/in-toto/attestation/tree/main/spec/provenance.md)
110-
* [SPDX](https://github.com/in-toto/attestation/tree/main/spec/spdx.md)
111-
* If none are a good fit, invent a new one.
112-
* Bundle and Storage/Lookup:
113-
* Local Filesystem: TODO
114-
* Docker/OCI Registry:
108+
- Predicate: Choose as appropriate.
109+
- [Provenance](https://github.com/in-toto/attestation/tree/main/spec/provenance.md)
110+
- [SPDX](https://github.com/in-toto/attestation/tree/main/spec/spdx.md)
111+
- If none are a good fit, invent a new one.
112+
- Bundle and Storage/Lookup:
113+
- Local Filesystem: TODO
114+
- Docker/OCI Registry:
115115
**[sigstore/cosign](https://github.com/sigstore/cosign)**
116116

117117
See [survey](survey.md) for other options.

controls/survey.md

+11-11
Original file line numberDiff line numberDiff line change
@@ -48,21 +48,21 @@ Raw signing | ✓ | ✓ | ✗ | |
4848

4949
Legend:
5050

51-
* ✓ Defines this layer
52-
* ✗ Does not support this layer
53-
* ~ Imposes requirements on this layer
54-
* (blank) No opinion on this layer
51+
- ✓ Defines this layer
52+
- ✗ Does not support this layer
53+
- ~ Imposes requirements on this layer
54+
- (blank) No opinion on this layer
5555

5656
Columns:
5757

58-
* Envelope: Defines the envelope layer of the attestation.
59-
* Statement: Defines the statement layer of the attestation.
60-
* Predicate: Defines the predicate layer of the attestation.
61-
* Storage: Provides a mechanism for attestation storage and retrieval.
62-
* Generation: Provides a mechanism for generating attestations.
63-
* Policy: Provides a mechanism for consuming attestations and rendering policy
58+
- Envelope: Defines the envelope layer of the attestation.
59+
- Statement: Defines the statement layer of the attestation.
60+
- Predicate: Defines the predicate layer of the attestation.
61+
- Storage: Provides a mechanism for attestation storage and retrieval.
62+
- Generation: Provides a mechanism for generating attestations.
63+
- Policy: Provides a mechanism for consuming attestations and rendering policy
6464
decisions.
65-
* Status: Is it available now?
65+
- Status: Is it available now?
6666

6767
## Envelope Layer (not specific to Attestations)
6868

0 commit comments

Comments
 (0)