AWS SDK で IRSA を使用する - Amazon EKS

AWS SDK で IRSA を使用する

認証情報の使用

サービスアカウントの IAM ロールの認証情報を使用するために、コードで任意の AWS SDK を使用して SDK を含む AWS サービスのクライアントを作成できます。デフォルトでは、SDK は使用する AWS Identity and Access Management 認証情報を一連の場所で検索します。クライアントの作成時や SDK の初期化時に認証情報プロバイダーを指定しなかった場合は、サービスアカウントの認証情報用の IAM ロールが使用されます。

これがうまくいくのは、サービスアカウント用の IAM ロールがデフォルトの認証情報チェーンのステップとして追加されたからです。現在、ワークロードが認証情報チェーンの前にある認証情報を使用している場合は、同じワークロードのサービスアカウントに IAM ロールを設定しても、その認証情報は引き続き使用されます。

SDK は、AssumeRoleWithWebIdentity アクションを使用してサービスアカウント OIDC トークンを AWS Security Token Service からの一時的な認証情報と自動的に交換します。Amazon EKS とこの SDK アクションは、有効期限が切れる前に一時認証情報を更新することで、引き続きローテーションを行います。

サービスアカウントの IAM ロールサービスアカウントの IAM ロールを使用すると、Pods 内のコンテナは、OpenID Connect ウェブ ID トークンファイルを介した IAM ロールの引き受けをサポートする AWS SDK バージョンを使用する必要があります。お使いの AWS SDK には、必ず次のバージョン以降を使用してください。

Cluster AutoscalerAWS Load Balancer Controller を使用してインターネットトラフィックをルーティングするAWS Load Balancer Controller を使用してインターネットトラフィックをルーティングする、IRSA を使用するように Amazon VPC CNI プラグインを設定するAmazon VPC CNI plugin for Kubernetes など、一般的な Kubernetes アドオンの多くは、サービスアカウントの IAM ロールをサポートしています。

サポートされている SDK を使用していることを確認するには、コンテナを構築する際に、「AWS での構築ツール」で、希望する SDK のインストール手順に従ってください。