GitHub Actionsのpermissions
GitHub Actionsのworkflow実行時に発行される、GITHUB_TOKENの権限を変更できる
https://docs.github.com/en/actions/reference/workflows-and-actions/workflow-syntax#permissions
workflow単位またはjob単位で設定できる
workflow単位
code: workflow.yaml
name: CI
on: push
permissions:
contents: read
pull-requests: write
jobs:
...
配下のjobそれぞれに対して適用される
job単位
code: workflow.yaml
jobs:
stale:
runs-on: ubuntu-latest
permissions:
issues: write
pull-requests: write
steps:
- uses: actions/stale@v5
workflowでのpermissions指定を上書きする
permissionsを設定しない場合、リポジトリ設定に基づくデフォルトの権限で発行される
Settings > Actions > General > Workflow permissions
publicリポジトリ作成時の初期値はRead repository contents and packages permissionsのはず
2023年2月以降に作られたリポジトリはそれのはず
https://github.blog/changelog/2023-02-02-github-actions-updating-the-default-github_token-permissions-to-read-only/
それ以前はRead and write permissionsかも
全部write可能なのは強すぎるので危ない
Read repository contents and packages permissions にして、必要な時にpermissionsを指定するのが安全
permissionsを一つでも指定する場合、指定していない権限はnone扱いになる
code: yaml
permissions:
contents: read
で指定すれば、 それ以外の権限はなくなるということ
もちろん最小限の権限だけを与える方が安全なので、できるだけ全てに指定するのが望ましい
contents: readで十分なことの方が多い
必要な権限を調べるのは面倒ではあるので、自動で必要な権限を推測して追記してくれるツールもある
https://efcl.info/2021/07/21/update-github-actions-permissions/
指定可能な権限一覧
右の説明はgeminiによるまとめ。
table:permissions
actions ワークフロー実行のキャンセル、再実行などの管理。
artifact-metadata ビルド成果物(Artifact)のストレージ記録の作成。
attestations アーティファクトの構成証明(Attestation)の生成(ビルドの真正性証明)。
checks チェックラン、チェックスイートの作成・更新(CI結果の表示)。
contents コードの読み書き、コミット、タグ、リリースの作成。
deployments デプロイメントステータスの作成・管理。
discussions GitHub Discussionsのクローズや削除、投稿。
id-token OIDCトークンの取得(AWS/GCP等へのパスワードレスログインに必須)。
issues Issueへのコメント追加、ラベル操作、クローズ。
models GitHub Models(AIモデル)の推論APIの使用。
packages GitHub Packagesへのパッケージのアップロード・公開。
pages GitHub Pagesのビルド要求。
pull-requests プルリクエストの作成、ラベル付与、コメント、レビュー。
security-events コードスキャンアラートの状態更新(セキュリティ診断結果の管理)。
statuses コミットステータス(緑のチェックマークなど)の更新。
https://docs.github.com/ja/actions/reference/workflows-and-actions/workflow-syntax#permissions
GitHub Actionsでよく使うのは、contents, pull-requests, packages, id-tokenあたりか。
#2026Jan
#security