2
0

More than 1 year has passed since last update.

[CircleCI] AWS ECR からOIDCでイメージをプルできます!

Last updated at Posted at 2023-08-02

こんにちは!CircleCIカスタマーサクセスのチヨです。
8月に入り暑い日が続いていますが、いかがお過ごしでしょうか。
オールシーズン山を走っているのですが、この季節は途中で滝に飛び込んだりして週末を楽しんでいます。

はじめに

今回は先日GAになったAWSのECRのイメージをOIDCからプルする方法を紹介します。今までCircleCI上に登録していたシークレットキーの管理がなくなり、より安全にCircleCIと連携することができます。
AWS使っているけどOIDCの連携はまだという方は同じチームのシゲさんが以前詳しく解説しておりますので、CircleCIとAWSをOpenID Connect 認証で連携するをご覧ください。
またこちらのAWS ECRからOIDCでイメージをプルする方法を参考に設定いたしました。
今回AWS上のCloud9というIDEを使用しDocker imageを作成してECRにアップロードしています。イメージを立ち上げるとウェブサーバーとしてRun Trail!とレスポンスしてくれるdocker imageです。CircleCIではECRサーバーに接続しDocker imageに書き込んでいる文字を出す簡単なテストをしています。

OIDCでAWSのパスワードの管理の手間が省けたというお声は聞いておりますが、さらにIAMロールのuserをOIDCロールに変更できるので、CircleCIがECRイメージを取り込む際に寄与する権限を厳密にコントロールし最小限の権限を確保できます。

OIDCがなかった頃の連携方法

ECRからOIDCでイメージをプルができなかった今までは以下の方法で対応していました:

  1. CircleCI 標準のプライベート環境変数を使用して、AWS 認証情報を設定する
  2. aws_auth を使用して、.circleci/config.yml に AWS 認証情報を指定する

お馴染みの方法で承認情報を設定する場合はOrganization setting>Context>環境変数へ入力していました。
Screenshot 2023-07-28 at 2.18.15 1.png
随分前に登録しっぱなしでローテンションしてないのがバレバレですね。

OIDCの設定をします

さあOIDCの設定から始めます。すでにOIDCを設定済みの方はconfig.ymlを更新しイメージをプルまでスキップしてください

  1. AWSのIAMからIDプロバイダーを選択します。
    Screenshot 2023-07-28 at 2.44.16.png
    プロバイダー URL はhttps://oidc.circleci.com/org/<your-organization-id> と入力します。organization_id には、CircleCIのorganizationIDを入力します。
    Screenshot 2023-07-28 at 2.42.56.png

  2. 作成したIDを選択しプロバイダーに権限をつけていきます。
    Screenshot 2023-07-25 at 4.06.10.png
    許可ポリシーの検索バーから付与したい権限を探します。今回はECRのフルアクセスをつけています。
    Screenshot 2023-07-31 at 16.18.49.png

config.ymlを更新しイメージをプル

.circleci/config.ymlの中でECRに保存されているイメージを使用したいジョブを特定し、ジョブを更新します。
oidc_role_arnはロールに表示されているARNを記入してください。
Screenshot 2023-07-31 at 16.37.02.png

version: 2.1

jobs:
  build:
    docker:
      - image: cimg/base:2023.07
      - image: ご自身ののIDを使用してください.dkr.ecr.us-east-1.amazonaws.com/h4b-ecs-helloworld:0.0.2
        aws_auth:
          oidc_role_arn: "arn:aws:iam::ご自身のIDを使用してください:role/test-oidc-try"
    steps:
      - run:
          name: "Testing that the server response"
          command: curl http://localhost:80
 
workflows:
  wf:
    jobs:
      - build:
          context:
            - oidc-test

設定後ビルドを走らせると。。。
Screenshot 2023-07-31 at 15.40.29.png
テストが通りました!

終わりに

本ブログを作成するにあたり、AWS Elastic Container Service入門からイメージを実際に作成しECRにアップロードするプロジェクトを作成しました。サポートいただいたエンジニアのMakotoさん大変ありがとうございました。これからもAWSを使ったグリーンビルドを続けていきたいです。ご質問等ありましたら、サポートセンターまでご連絡ください。

2
0
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
2
0