Skip to content

Commit c2fa32c

Browse files
committed
RFC for signing/verifying remotely referenced taskcluster.yml files
1 parent 9f04cfe commit c2fa32c

File tree

1 file changed

+31
-0
lines changed

1 file changed

+31
-0
lines changed
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
# RFC 187 - Integrity checks for .taskcluster.yml remote references (addendum to #182)
2+
* Comments: [#187](https://github.com/taskcluster/taskcluster-rfcs/pull/186)
3+
* Proposed by: @bhearsum
4+
5+
# Summary
6+
7+
Require remotely referenced `.taskcluster.yml` files to be verifiable through a detached signature.
8+
9+
## Motivation
10+
11+
In #182 we discussed and agreed on a mechanism to allow for deduplication of `.taskcluster.yml` files by supporting pointers to a `.taskcluster.yml` file hosted elsewhere. Something we did not discuss there was how to verify that these files have not been tampered with (being overridden, man-in-the-middle, etc.).
12+
13+
This is a crucial detail to iron out before we implement it.
14+
15+
# Details
16+
17+
To accommodate integrity checks, Taskcluster-GitHub will require that any remotely referenced `.taskcluster.yml` files have an associated detached signature which can be verified by a public key that it has been configured with.
18+
19+
Taskcluster-GitHub will allow for zero, one, or many public keys to be configured in its `config.yml`. If zero public keys are configured, remote references are not supported. If one or more keys are configured, any `.taskcluster.yml` that is verifiable by _any_ of the configured keys is permitted to be used. (That is to say: keys are not scoped in any way, nor does the order in which they are listed in the config matter.)
20+
21+
The procedure for verifying a remotely referenced `.taskcluster.yml` will be as follows:
22+
1) Resolve the `config-from` entry to a raw URL (eg: github.com/taskcluster/taskgraph/data/taskcluster-yml-github.yml@main becomes https://github.com/taskcluster/taskgraph/raw/main/data/taskcluster-yml-github.yml)
23+
2) Construct the raw URL for the detached signature by appending `.asc` to the `.taskcluster.yml` URL. (eg: https://github.com/taskcluster/taskgraph/raw/main/data/taskcluster-yml-github.yml.asc)
24+
3) Download both files. If either one does not exist, exit.
25+
4) Iterate over the available public keys and try to verify the `.taskcluster.yml` against the `.asc`. If any verification succeeds, proceed as usual. If no verifications succeed, exit.
26+
27+
In the event of an exit without creating any tasks, a comment should be left on the GitHub commit or Pull Request that caused Taskcluster-GitHub to fire.
28+
29+
# Implementation
30+
31+
Part of [Issue #6138](https://github.com/taskcluster/taskcluster/issues/6138).

0 commit comments

Comments
 (0)