Closed8

AWSとGitHub ActionsのWeb ID federationでの連携周りの実験とか

yu_s_1985yu_s_1985

で、昨日試してみたところ
https://github.com/aws-actions/configure-aws-credentials
で、web-identity-token-file:に取得したトークンのパスを渡してやれば問題なく使えそう。
持続期間やセッション名もどうやら合わせて指定できそう。
この辺をあとでちゃんと記事にします。
ついでに、AWS側に作成が必要なリソースをTerraformで書いてみたりしました(これについては他の方がほぼどうようなことをやっていたのであまり細かくは説明しないつもり)


元の紹介記事では
AWS_WEB_IDENTITY_TOKEN_FILEにGitHubから取得するトークンのファイルパスを
AWS_ROLE_ARNには使いたいロールのarnを
それぞれ指定することによって、どうやら暗黙的にAssumeRoleしてくれるらしい(この辺の挙動がよく分かっていなくてドキュメント見てもよくわからないので誰か分かる人に説明して欲しい…。ソースのここを見ればわかる、とかでもありがたいです。)

ただこれだと細かいオプション(セッションの期限やセッション名)が渡せないので、できればどこかで明示的にAssumeRoleしたかった。

以下のエントリではassume-roleして呼び出した一時キーや一時トークンを渡しているが、最初に書いた方法で問題なければこんなめんどくさいことはしなくても良さそう。
https://qiita.com/takaaki_inada/items/2028328231d1085fa561

そのほかに設定可能な項目はこちら。
https://github.com/aws-actions/configure-aws-credentials/blob/master/action.yml
こういうのはReadMeに書いておいて欲しいもんだけど…。

yu_s_1985yu_s_1985

AssumeRoleさえしてしまえばあとはその権限を期限の間に使えればいい、という認識だったけど、
自分の認識ではGitHubのトークンの方の期限が切れてもそれはAssumeRoleするときだけあれば良い、なんだけど果たしてそれが正しいか。

yu_s_1985yu_s_1985

実験の跡はこちら。
ActionsはWorkflow Dispatchで手動実行してるけど、アカウントIDは変数化している。ただ、Actionsを実行したらアカウントIDがログに残っちゃうので実験したログは毎度消しています。
https://github.com/yutaro1985/github-actions-oidc-test

最初は自分で作ったけどぶっちゃけここでほぼやりたいことをやっていたので参考にさせていただいた。
https://github.com/takanabe/github-actions-oidc-test/blob/main/.github/workflows/main.yml

このスクラップは2024/01/04にクローズされました