LoginSignup
1
1

More than 1 year has passed since last update.

OIDC Provier認証とAssumeRole権限移譲によるGitHubActionのCI

Last updated at Posted at 2022-03-30

概要

  • GitHub ActionsでAWS ACEESKEYをGitHub側(GitHubSecrets)に保存したくない
  • OpenID Connect経由の各種Cloud Providerの認証がとれる
  • 認証をパスする事が目的なのでポリシーなど細かい要素は後回しにしてシンプルにトライ
  • とりあえず習うより慣れろで

前提

  • OpenID Connect Provider認証の仕組みについて理解している
  • IAMのAssumeRoleの仕組みについて理解している
  • GitHubSecretsの利便性とリスクについて理解している

詳細

OpenIDプロバイダを作成

ロールの割当

  • "ロールの割当"→"新しいロールを作成"

テスト用ロールの作成

  • ウェブアイデンティティで作成
    • Audienceは"sts.amazonaws.com "

GitHub側準備

  • テスト用リポジトリを用意する
  • workflowのフォルダとファイルを作成
$ git clone https://github.com/menergia/test-oidc
$ mkdir -p test-oidc/.github/workflows
$ echo "### oidc test workflow ###" > test-oidc/.github/workflows/test-oidc-ci.yml
$ cd test-oidc
$ git add .
$ git commit -m "add blank workflow"
$ git push origin main

GitHubActions用workflowファイルを作成

  • アカウントIDをメモ・控えておく

image.png

test-oidc-ci.yml

### oidc test workflow ###

name: OIDC test
on:
  push:

jobs:
  build:
    runs-on: ubuntu-latest
    permissions:
      id-token: write
      contents: read
    steps:

      - name: Set up environment
        run: |
          export AWS_ROLE_ARN=arn:aws:iam::39********81:role/Role-GithubActions-OpenIDConnect-Test
          export AWS_WEB_IDENTITY_TOKEN_FILE=/tmp/aws-credential
          export AWS_DEFAULT_REGION=ap-northeast-1

          echo AWS_WEB_IDENTITY_TOKEN_FILE=$AWS_WEB_IDENTITY_TOKEN_FILE >> $GITHUB_ENV
          echo AWS_ROLE_ARN=$AWS_ROLE_ARN >> $GITHUB_ENV
          echo AWS_DEFAULT_REGION=$AWS_DEFAULT_REGION >> $GITHUB_ENV

          curl -H "Authorization: bearer $ACTIONS_ID_TOKEN_REQUEST_TOKEN" "$ACTIONS_ID_TOKEN_REQUEST_URL&audience=sts.amazonaws.com" | jq -r '.value' > $AWS_WEB_IDENTITY_TOKEN_FILE

      - run: aws sts get-caller-identity
  • commit/push後actionsタブを確認
    • CI上でOpenIDConnectが成功している

残課題

  • このあとは必要なポリシー・ロールを正しく設定してトライして見る

関連


1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1