タダです.
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 コメントに反映するようにするために行った調査と対応をまとめました.今回の調査でいろんな権限の設定の仕方があるのだと学べました.