旅とプログラミングを少々

趣味に関する記録などをします。おそらくプログラミング入門に関しての内容を連ねていきます。

githubにはAWS_ACCESS_KEYは一切入力しない

githubにはAWS_ACCESS_KEYは入力しない

リポジトリに入れないのはもちろんのこと、github actionsのCI/CDとしてもsecret.AWS_ACCESS_KEYを入力するのは古いやりかたであり、推奨されない。 2021年10月終わりごろ*1からgithubOpenID 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