Repository navigation
Commit 2aa1196
committed
fix: least privilege for the workflow tokens, and a test that holds it
OpenSSF Scorecard scored this repository zero on Token-Permissions. The reason
was not subtle: gate.yml and package.yml declared no top-level permissions at
all, so both ran with whatever the repository default happened to be, and
fips-image.yml granted packages: write at the top level, where it applies to
every job the workflow will ever have rather than to the one that pushes an
image.
All three now declare contents: read at the top. The two jobs that genuinely
need to write say so themselves, next to the step that uses it: the attesting
job in package.yml, and the image job in fips-image.yml.
The test is the point of the commit rather than a companion to it. A top-level
write costs nothing visible when it is forgotten: nothing fails, the token is
simply broader than the work needs, and the next workflow added inherits the
habit. So the property is held by the build. Every file under .github/workflows
must declare a top-level permissions block and it must grant no write, with the
population read from git ls-files so a workflow added without a thought for it
is caught by its own existence. Demonstrated red by removing the block from
gate.yml, which failed the test with the message a reader would need.
The remaining Scorecard findings are not silently accepted: Code-Review and
Branch-Protection both need someone other than the author approving changes,
which R22 already tracks; Maintained wants ninety days of history the repository
does not have yet; Signed-Releases is slice 101.
Signed-off-by: Ayla Croft <aylacroft@proton.me>1 parent e302c92 commit 2aa1196
4 files changed
Lines changed: 73 additions & 7 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
17 | 17 | | |
18 | 18 | | |
19 | 19 | | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
20 | 24 | | |
21 | 25 | | |
22 | | - | |
23 | 26 | | |
24 | 27 | | |
25 | 28 | | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
26 | 33 | | |
27 | 34 | | |
28 | 35 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
6 | 6 | | |
7 | 7 | | |
8 | 8 | | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
9 | 17 | | |
10 | 18 | | |
11 | 19 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
40 | 40 | | |
41 | 41 | | |
42 | 42 | | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
43 | 49 | | |
44 | 50 | | |
45 | 51 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
4 | 4 | | |
5 | 5 | | |
6 | 6 | | |
7 | | - | |
| 7 | + | |
8 | 8 | | |
9 | | - | |
10 | | - | |
11 | | - | |
12 | | - | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
13 | 21 | | |
14 | 22 | | |
15 | | - | |
| 23 | + | |
16 | 24 | | |
17 | 25 | | |
18 | 26 | | |
19 | 27 | | |
20 | 28 | | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
21 | 32 | | |
22 | 33 | | |
23 | 34 | | |
| |||
54 | 65 | | |
55 | 66 | | |
56 | 67 | | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
57 | 102 | | |
0 commit comments