access.yaml, in the same .airship repository as
airship.global.yaml, is where you say otherwise.
access.yaml
How a request is judged
1
Does the runner have any policy?
A runner with no
access_control entry is open to every activated
repository. Only named runners are restricted.2
Is this repository named by one of its policies?
A restricted runner can only be launched for a repository one of its
policies names. Nothing else is considered until this matches.
3
Is this person admitted by that policy?
The person is matched by
users (login), teams (team slug) or roles
(their role on the repository). A policy that lists none of the three
admits everyone on that repository.4
Is the event allowed?
pull_request workflows are refused unless the policy sets
pull_request: true.Policy fields
string
required
A name you refer to in
access_control.string
required
A repository in this organization, by name. The policy only ever applies to
jobs in it.
string[]
Team slugs. A member of any one of them is admitted. Needs the GitHub App’s
organization Members: read permission.
string[]
Repository roles —
admin, maintain, write, triage, read. Anyone
holding one of them on that repository is admitted.string[]
GitHub logins, admitted individually.
boolean
default:"false"
Whether
pull_request workflows may use the runner. Leave it false unless
you have thought about who can open a pull request.Patterns
- One team's GPU box
- Two repositories, maintainers only
- Whole repository, pull requests included
access.yaml
training repository, only the ml team, and not from a pull
request.Editing it through the API
The developer API edits this file for you and opens a pull request with the change, so the policy is reviewed like any other code:Opening a pull request needs the GitHub App’s Contents: write and Pull
requests: write permissions, which are optional and used for nothing else.
Without them, read the file through the API and commit the change yourself.
What this does and does not bound
Anyone who can push to an activated repository can choose machines for that
repository’s jobs, which is the same authority they already have over what a
workflow does. Access policies are for the shared expensive runners. If a
repository should not be choosing machines at all, do not activate it.
The whole trust model
Who may spend your money, what a job can reach, and the exposures that come
with the model rather than being bugs in it.