Implement repository security checklist #1798
Merged
+17
−0
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
This pull request implements a comprehensive security checklist for GitHub Actions workflows to enhance the repository's security posture.
Key changes include:
permissions: contents: read
by default, adhering to the principle of least privilege. The website deployment job has specific, minimal permissions (contents: read
,pages: write
,id-token: write
).CODECOV_TOKEN
is no longer used in workflows triggered by forks (pull_request
). Code coverage reports are now uploaded as artifacts during PR builds and then securely processed by a dedicated job that runs only onpush
events to themain
branch.pull_request_target
is not used, and all checkouts utilize secure SHA-based references, avoiding unsafehead
refs.main
branch pushes for deployment and Codecov uploads).Test plan
ci.yml
workflow runs successfully.upload-coverage
job withinci.yml
is skipped (as it should only run onpush
tomain
).example-apps.yml
andwebsite.yml
workflows also run successfully with their updated permissions.main
Branch (or Merge PR):main
branch or push a commit directly tomain
.ci.yml
workflow runs successfully, including theupload-coverage
job.website.yml
workflow runs successfully and the website deploys correctly to GitHub Pages.