EKS Pod IdentityとExternal Secrets — 権限と値を分ける
PodにAWSアクセスキーを置かず、ServiceAccountとIAMロールの関連付けで一時的な認証情報を得ます。External Secrets Operatorはその権限でSecrets Managerの値をKubernetes Secretへ同期します。
TL;DR
- Pod IdentityはPodの権限をIAMロールとして与える方式。
- ServiceAccountとIAMロールの関連付けが、権限境界の中心になる。
- ESOは外部の秘密情報を読み、Kubernetes Secretとして必要な形に同期する。
01秘密そのものを埋め込まない
Pod→Pod Identity Agent→STS/IAM Role→AWSサービスの認証フロー

マニフェストやイメージにAWS認証情報を含めず、EKS Pod Identityでワークロードに必要なIAMロールを関連付けます。Podは必要時に一時的な認証情報を得てAWS APIへアクセスします。
押さえること:Pod IdentityはPodの権限をIAMロールとして与える方式。
02ServiceAccountがKubernetes側の窓口
Namespace内のServiceAccountとIAM RoleをAssociationで結ぶ図

KubernetesではServiceAccountをワークロードのアイデンティティとして使います。Pod Identity AssociationがServiceAccountとIAMロールを結び、どのワークロードにどのAWS権限を与えるかを明示します。
押さえること:ServiceAccountとIAMロールの関連付けが、権限境界の中心になる。
03ESOは値を必要な場所へ同期する
Secrets Manager→ESO→ExternalSecret→Kubernetes Secret→Pod

External Secrets Operatorは外部ストアの値を読み、ExternalSecretの定義に従ってKubernetes Secretを作ります。アプリは通常どおりSecretを参照し、値の保管元はSecrets Managerに残します。
押さえること:ESOは外部の秘密情報を読み、Kubernetes Secretとして必要な形に同期する。
結論
- Pod IdentityはPodの権限をIAMロールとして与える方式。
- ServiceAccountとIAMロールの関連付けが、権限境界の中心になる。
- ESOは外部の秘密情報を読み、Kubernetes Secretとして必要な形に同期する。