株式会社ヴァンデミックシステム

Blog

<スポンサーリンク>

なるべくIAMユーザーを使わずに設定したいというのが最近の流れ。
というのは、単純にユーザーを使うとアクセスキーを管理しなければならず、これがなくなっちゃうと大変だからね。という風潮です。
GithubActionsでは、Opoen ID Connect認証がサポートされているので、IAMユーザーを使わない設定ができます。

まず、IDプロバイダーを作ります。
以下を指定して、サムプリントの取得をクリックします。

プロバイダのタイプ:OIDC
プロバイダのURL: https://token.actions.githubusercontent.com
対象者:sts.amazonaws.com

作成完了するとこんな感じになります。

続いて、AssumeRole先のRoleを作ります。
信頼されたエンティティには以下のように定義します。

{
	"Version": "2012-10-17",
	"Statement": [
		{
			"Effect": "Allow",
			"Principal": {
				"Federated": "arn:aws:iam::000000000000:oidc-provider/token.actions.githubusercontent.com"
			},
			"Action": "sts:AssumeRoleWithWebIdentity",
			"Condition": {
				"StringLike": {
					"token.actions.githubusercontent.com:sub": "repo:<Githubユーザー名>/<Githubリポジトリ名>:*"
				}
			}
		}
	]
}

ロールができたら、必要なポリシーをアタッチします。
とりあえず動作チェックなのでAdministratorAccessを割り当てます。

完成したロールはこのような感じです。

GithubActionsで動作チェックをしたいので、こんな感じのワークフローを作って実行してみます。
成功すればOK。

name: awss3ls

on:
  workflow_dispatch:

env:
  AWS_ROLE_ARN: arn:aws:iam::xxxxxxxxxxx:role/GithubActions-OIDC-Role

# permissions.id-token: writeがないとコケる
permissions:
  id-token: write
  contents: read

jobs:
  aws-deploy:
    runs-on: ubuntu-latest
    timeout-minutes: 20

    steps:
    - name: Checkout
      uses: actions/checkout@v3

    - name: setup aws
      uses: aws-actions/configure-aws-credentials@v1
      with:
        role-to-assume: ${{ env.AWS_ROLE_ARN }}
        aws-region: ap-northeast-1

    - name: s3 ls
      run: |
        aws s3 ls

<スポンサーリンク>

コメントを残す

Allowed tags:  you may use these HTML tags and attributes: <a href="">, <strong>, <em>, <h1>, <h2>, <h3>
Please note:  all comments go through moderation.

*

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)