Slide 1

Slide 1 text

IAMロールでTerraformの CI/CDを構築してみた クレデンシャル情報からさようなら

Slide 2

Slide 2 text

Name:ユータ Occupation:SRE Twitter:@Y0u281 (オーでなくゼロです) ブログ:https://zenn.dev/yuta28 自己紹介 Twitter

Slide 3

Slide 3 text

目次 ● 従来のCI/CDの課題点 ● GitHub Actionsの新機能 ● 実装 ● ワークフロー作成 ● 実行結果 ● まとめ

Slide 4

Slide 4 text

従来のCI/CDの課題点

Slide 5

Slide 5 text

従来のCI/CDの課題点 - name: Configure AWS Credentials uses: aws-actions/configure-aws-credentials@v1 with: aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} #アクセスキー aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} #シークレットキー

Slide 6

Slide 6 text

従来のCI/CDの課題点

Slide 7

Slide 7 text

GitHub Actionsの新機能 ● OpenID Connect(OIDC)プロバイダーをGitHub Actions提供 ● Assume RoleとしてOIDCにIAM権限を付与 OIDC経由でGitHubに クレデンシャル提供が可能 !

Slide 8

Slide 8 text

実装 ● sts:GetCallerIdentity ● ec2:* ● s3:*

Slide 9

Slide 9 text

実装 OIDC作成 IAMロールにOIDCを関連付ける

Slide 10

Slide 10 text

ワークフロー作成 - name: Setup Terraform uses: aws-actions/configure-aws-credentials@master with: role-to-assume: "${{ env.AWS_ROLE_ARN }}" web-identity-token-file: "curl -H "Authorization: bearer $ACTIONS_ID_TOKEN_REQUEST_TOKEN" "$ACTIONS_ID_TOKEN_REQUEST_URL&audience=sigstore" | jq -r '.value'" aws-region: "${{ env.AWS_DEFAULT_REGION }}" role-duration-seconds: 900 role-session-name: GitHubActionsTerraformCICD

Slide 11

Slide 11 text

実行結果

Slide 12

Slide 12 text

実行結果

Slide 13

Slide 13 text

まとめ アクセスキーとシークレットキーは使わ ない! AWSでも使わないことを推奨 
 べスプラはこちら↓
 


Slide 14

Slide 14 text

ありがとうございました より詳しい内容は以下のブログで↓ GitHub ActionsにAWSクレデン シャル情報を渡さずに Terraformで CI/CDをやってみた