継続は力なり

タイトル通り定期的な更新を心掛けるブログです。

GitHub Actions で OIDC Provider を使って PR にコメントする

タダです.

GitHub Actions で Terraoform の実行計画を PR のコメントに書くようにしていたのですが,クレデンシャルとして IAM ユーザーのアクセスキーとシークレットアクセスキーを使う運用から OIDC Provider に置き換え る検証をした際にコメントができなくなりました.この記事でその対処として調べた結果をまとめていきます.

事象の概要

下記のような GitHub Actions に OIDC Provider に関する aws-actions/configure-aws-credentials を設定して検証してみたのですが,GitHub Actions を回した結果 Unhandled error: HttpError: Resource not accessible by integration というエラーがでたので権限系が怪しそうという思い調査してみました.

permissions:
  id-token: write
  contents: read

~中略~

jobs:
~中略~
      - name: Configure AWS Credentials 
        uses: aws-actions/configure-aws-credentials@v1
        with:
          aws-region: ap-northeast-1
          role-to-assume: hoge
          role-session-name: hoge-plan
          role-duration-seconds: 1200
~中略~

事象の調査と対応概要

GitHub Actions に permissions を指定していますが,permissions の指定してない時と差分を確認してみました.まず permissions を指定したときの Set up Job セクションの GITHUB_TOKEN Permissions を見てみたところ以下の設定になっていました.

GITHUB_TOKEN Permissions
  Contents: read
  Metadata: read

逆に IAM ユーザーのアクセスキーとシークレットアクセスキーはどうだったかを見ると,いろんな権限がついています.PullRequests: write の権限が OIDC Provider の設定でないことを見て pull-requests: write を追加してみたところ,Unhandled error: HttpError: Resource not accessible by integrationのエラーが無くなり,PR にコメントができるようになりました.

OIDC Provider の設定がない時

GITHUB_TOKEN Permissions
  Actions: write
  Checks: write
  Contents: write
  Deployments: write
  Discussions: write
  Issues: write
  Metadata: read
  Packages: write
  Pages: write
  PullRequests: write
  RepositoryProjects: write
  SecurityEvents: write
  Statuses: write

修正した GitHub Actions の定義

permissions:
  id-token: write
  contents: read
  pull-requests: write <= 追加

まとめ

OIDC Provider への置換え過程で,GitHub Actions の結果を PR コメントに反映するようにするために行った調査と対応をまとめました.今回の調査でいろんな権限の設定の仕方があるのだと学べました.

関連記事

sadayoshi-tada.hatenablog.com

sadayoshi-tada.hatenablog.com