このページの改善にご協力ください
本ユーザーガイドの改善にご協力いただけませんか? すべてのページの右側のペインにある GitHub リンクで、このページの編集を選択してください。皆さまにご協力いただくことで、あらゆる人々に使いやすいユーザーガイドになります。
ポッドのコンテナ内のアプリケーションは AWS SDK または AWS CLI で、AWS Identity and Access Management (IAM) アクセス許可を使用した AWS サービスへの API リクエストを行うことができます。アプリケーションは AWS 認証情報で AWS API リクエストに署名する必要があります。
EKS Pod Identity は、Amazon EC2 インスタンスプロファイルから Amazon EC2 インスタンスに認証情報を提供する場合と同じような方法で、アプリケーションの認証情報を管理する機能があります。AWS 認証情報を作成してコンテナに配布したり、Amazon EC2 インスタンスのロールを使用したりする必要はありません。IAM ロールを Kubernetes サービスアカウントと関連付けて、サービスアカウントを使用するように Pods を設定できます。
各 EKS Pod Identity の関連付けは、指定されたクラスター内のネームスペース内のサービスアカウントにロールをマップします。複数のクラスターに同じアプリケーションがある場合、ロールの信頼ポリシーを変更することなく、各クラスターで同一の関連付けを行うことができます。
ポッドが関連付けられたサービスアカウントを使用する場合、Amazon EKS はポッドのコンテナに環境変数を設定します。環境変数は、AWS CLI を含む AWS SDK が EKS Pod Identity の認証情報を使用するように設定します。
EKS Pod Identity の利点
EKS Pod Identity には次の利点があります。
-
最小特権 – IAM アクセス許可の範囲をサービスアカウントに設定すると、そのサービスアカウントを使用する Pods のみにそのアクセス許可を付与できます。また、この機能により、
kiam
やkube2iam
などのサードパーティーのソリューションが不要になります。 -
認証情報の分離 – Pod’s のコンテナは、そのコンテナが使用するサービスアカウントに関連付けられた IAM ロールの認証情報のみを取得できます。コンテナは、他の Pods のコンテナで使われている認証情報にアクセスすることはできません。Pod Identity を使用する場合、Pod’s のコンテナには Amazon EKS ノードの IAM ロール に割り当てられたアクセス許可も付与されます (Amazon EC2 インスタンスメタデータサービス (IMDS) への Pod のアクセスをブロックしていない場合)。詳細については、「ワーカーノードに割り当てられたインスタンスプロファイルへのアクセスを制限する
」を参照してください。 -
監査性 – 遡及的な監査を確実に行うため、AWS CloudTrail を介してアクセスとイベントのロギングを利用できます。
EKS Pod Identity は OIDC ID プロバイダーを使用しないため、サービスアカウントの IAM ロール より簡単な方法です。EKS Pod Identity には次の機能強化があります。
-
独立オペレーション – 多くの組織では、OIDC ID プロバイダーの作成は、Kubernetes クラスターの管理とは別のチームの責任です。EKS Pod Identity には明確な役割分担があり、EKS Pod Identity の関連付けの設定はすべて Amazon EKS で行われ、IAM アクセス許可の設定はすべて IAM で行われます。
-
再利用性 – EKS Pod Identity は、サービスアカウントの IAM ロールが使用するクラスターごとの個別のプリンシパルの代わりに、単一の IAM プリンシパルを使用します。IAM 管理者は以下のプリンシパルを任意のロールの信頼ポリシーに追加して、EKS Pod Identity で使用できるようにします。
"Principal": { "Service": "pods.eks.amazonaws.com" }
-
スケーラビリティ – 一時的な認証情報の各セットは、各ポッドで実行する各 AWS SDK ではなく、EKS Pod Identity 内の EKS Auth サービスによって引き継がれます。次に、各ノードで実行される Amazon EKS Pod Identity エージェントが SDK に認証情報を発行します。そのため、負荷はノードごとに 1 回に減り、各ポッドで重複することはありません。詳細については、「EKS Pod Identity の詳細を理解する」を参照してください。
この 2 つの選択肢を比較する詳細については、「Kubernetes ワークロードに Kubernetes サービスアカウントを使用して AWS へのアクセスを許可する」を参照してください。
EKS Pod Identity のセットアップの概要
以下の手順を実行して EKS Pod Identity を有効にします。
-
Amazon EKS Pod Identity エージェントのセットアップ — この手順は、クラスターごとに 1 回だけ実行します。クラスターで EKS 自動モードが有効になっている場合は、このステップを完了する必要はありません。
-
IAM ロールを Kubernetes サービスアカウントに割り当てる — この手順は、アプリケーションに付与する固有の権限セットごとに実行します。
-
サービスアカウントを使用して AWS サービスにアクセスするように pods を設定する — この手順は、AWS サービスへのアクセスが必要な Pod ごとに実行します。
-
AWS SDK で Pod Identity を使用する – ワークロードがサポートされているバージョンの AWS SDK を使用していること、およびワークロードがデフォルトの認証情報チェーンを使用していることを確認します。
EKS Pod Identity に関する考慮事項
-
各クラスター内の各 Kubernetes サービスアカウントには 1 つの IAM ロールを関連付けることができます。EKS Pod Identity の関連付けを編集することで、サービスアカウントにマップされるロールを変更できます。
-
関連付けることができるのはクラスターと同じ AWS アカウントにあるロールだけです。別のアカウントから、EKS Pod Identity が使用するように設定したこのアカウントのロールに、アクセスを委任できます。アクセス権の委任および
AssumeRole
については、「IAM ユーザーガイド」の「AWS アカウント間の IAM ロールを使用したアクセスの委任」を参照してください。 -
EKS Pod Identity エージェントが必要です。ノード上で Kubernetes
DaemonSet
として実行され、実行されているノード上のポッドにのみ認証情報を提供します。EKS Pod Identity エージェントの互換性の詳細については、以下のセクション EKS Pod Identity の制限事項 を参照してください。 -
Pod Identity Agent とともにポッドのセキュリティグループを使用している場合は、AWS VPC CNI のために
POD_SECURITY_GROUP_ENFORCING_MODE
フラグを設定する必要がある場合があります。ポッドのセキュリティグループに関する考慮事項の詳細については、「個々の Pods にセキュリティグループを割り当てる」を参照してください。 -
EKS Pod Identity エージェント はノードの
hostNetwork
を使用し、ノード上のリンクローカルアドレス上のポート80
とポート2703
を使用します。このアドレスは169.254.170.23
対 IPv4、[fd00:ec2::23]
対 IPv6 のクラスターです。IPv6
アドレスを無効にするか、または localhostIPv6
IP アドレスを禁止すると、エージェントは起動できません。IPv6
を使用できないノードでエージェントを起動するには、「EKS Pod Identity エージェントで IPv6 を無効にする」の手順に従ってIPv6
設定を無効にします。
EKS Pod Identity クラスターバージョン
EKS Pod Identity を使用するには、クラスターのプラットフォームバージョンが、次の表に記載されているバージョンと同じかそれ以降、または表に記載されている Kubernetes バージョンよりも新しいバージョンである必要があります。
Kubernetes バージョン | プラットフォームバージョン |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
EKS Pod Identity の制限事項
EKS Pod Identity は以下で使用できます。
-
前のトピック EKS Pod Identity クラスターバージョン に記載されている Amazon EKS クラスターバージョン。
-
Linux Amazon EC2 インスタンスであるクラスターのワーカーノード。
EKS Pod Identity は以下では使用できません。
-
AWS Outposts。
-
Amazon EKS Anywhere
-
Amazon EC2 で作成して実行する Kubernetes クラスター。EKS Pod Identity コンポーネントは Amazon EKS でのみ使用できます。
EKS Pod Identity は以下では使用できません。
-
Linux Amazon EC2 インスタンス以外の場所で実行されるポッド。AWS Fargate (Fargate) 上で実行される Linux ポッドと Windows ポッドはサポートされていません。Windows Amazon EC2 インスタンスで実行されるポッドはサポートされていません。