AWS ECR から OIDC でイメージをプルする方法
このノウハウガイドに従って、OIDC 認証を使用してAWS ECRからイメージをプルために docker
ジョブを構成します。
概要
Docker 実行環境でジョブを実行したい場合、そのコンテナ用の CircleCI convenience イメージにアクセスすることができます。 また、他の Docker イメージの利用を指定することも可能です。 一つの選択肢として、AWS ECR からイメージを引っ張ってくることもできます。
お勧めするのアプローチは、OpenID Connect(OIDC)を使用して AWS ECR からイメージをプルすることです。 このページでは、その手順を詳しく説明します。
別の方法については、Docker 認証プルページの AWS ECRの項を参照してください。
ECR からイメージをプルために、AWS の認証情報を使用するよりも OIDC を使用することの利点がいくつかあります:
-
セキュリティの向上:OIDC 認証を利用することで、CircleCI の設定や環境変数に直接 AWS の認証情報を保存することが避けられ、漏洩のリスクを低減できます。
-
クレデンシャル管理の簡素化: OIDC により、CircleCI は認証プロセスを自動的に管理し、AWS のクレデンシャルを手動で管理しローテーションする必要がなくなります。
-
きめ細かなアクセスコントロール:OIDC 認証に IAM ロールを関連付けることで、CircleCI がECR イメージを取り込む際に付与する権限を厳密にコントロールし、最小特権を確保することが可能です。
前提条件
-
対応する VCS に A CircleCI アカウントを連携する
-
Docker 実行環境を使用するジョブで、AWS ECR に保存されている Docker イメージを使用したいプロジェクト
.circleci/config.yml
ファイルです。 -
AWS で CircleCI を信頼できる ID プロバイダとして設定します。 AWS のセットアップの説明に従ってください。
1. IAM ロールを設定する
AWS のセットアップの説明に従った場合、CircleCI IDプロバイダに関連する IAM ロールが作成されているはずです。 そのロールを使用して、許可ポリシーを更新するか、このタスクのために新しい IAM ロールを作成することができます。 新しいIAMロールを作成する手順は、ここで説明されています。
-
AWS ドキュメントの「 ウェブ ID または OIDC 用のロールの作成」を開きます。 また、以下のものが必要になります:
-
CircleCIで作成したIdentity Provider です。
-
Audienceでは、組織IDのみを選択してください。
-
-
「Add Permissions 権限の追加」ページで、「Create Policy ポリシーの作成」を選択し、IAMロールの新しい権限ポリシーを作成します。 最低限必要な権限は以下の通りです(
YOUR_ECR_REPO_ARN
を代入する必要があります):{ "Version": "2012-10-17", "Statement": [ { "Action": [ "ecr:BatchGetImage", "ecr:GetDownloadUrlForLayer" ], "Effect": "Allow", "Resource": "<your-ECR-repo-ARN>" }, { "Action": [ "ecr:GetAuthorizationToken" ], "Effect": "Allow", "Resource": "*" } ] }
-
Add Permissions ページに戻り、新しいポリシーが表示されるように更新します。
2. ..circleci/config.yml
を更新し、イメージをプル
-
.circleci/config.yml
ファイルの中で、ECR に保存されているイメージを使用したいジョブを特定し、以下のようにジョブを更新してください:jobs: job_name: docker: - image: <your-image-arn> aws_auth: oidc_role_arn: <your-iam-role-arn>
-
<your-image-arn>
を、引き出したい ECR イメージの Amazon Resource Name(ARN)に置き換えてください。 このARNは通常、aws_account_id.dkr.ecr.region.amazonaws.com/repository:tag
の形式に従います。 -
<your-iam-role-arn>
を、引き受けたいIAMロールのARNに置き換えてください。 これは、最後のセクションで作成したロールです。 -
CircleCI コンフィグファイルに変更を保存します。 次にジョブが実行されると、CircleCI は指定された IAM ロールを使用し、OIDC プロバイダとして動作して、指定された ECR イメージを認証してプルします。