githubにはAWS_ACCESS_KEYは一切入力しない
githubにはAWS_ACCESS_KEYは入力しない
リポジトリに入れないのはもちろんのこと、github actionsのCI/CDとしてもsecret.AWS_ACCESS_KEYを入力するのは古いやりかたであり、推奨されない。 2021年10月終わりごろ*1からgithubはOpenID Connectに正式対応し、aws等のクラウドを利用する際にはOIDCで認証することが推奨される。
事前設定
AWS側でOIDCプロバイダとしてgithubを利用するよう設定し、そこからAssumeRole可能なRoleを準備する。 Terraformの例となるが、以下のgithub_oidcとgithub_roleのように設定することでgithub側には何のsecretも入れずにgithub actionでawsが使えるようになる。 github.com
github actionsでOIDCを使う際の規則として、jwtのsub検証をしなければならない。 ( 事実上しなくともgithub側から対応はとれないだろうが、一応MUSTとされている ) このsubの内容はgithub actionsの利用方法によりどのような形式が渡されるのか複雑であり、リポジトリ名まで検証していれば十分と思われる。 Example subject claimsでしかsubの内容の解説がなされていない。docs.github.com
github actions利用側
このActionを使うだけで良い。下手に公式以外の方法で行おうとすると、ログ等からjwtが漏洩するのを防ぐために多大な労力がかかる。デフォルトで1時間しか有効でない認証ではあるが、CI/CDに使われる強い権限があるはずなので注意する。 github.com