@shinyaz

EKS のアクセスエントリとアクセスポリシーは別物で、両方必要

約1分

EKS の ArgoCD Capability を作成すると、IAM ロールのアクセスエントリが自動で作られる。「これで権限は OK」と思って Application をデプロイしたら同期が失敗した。

原因は アクセスエントリ(誰がクラスターにアクセスできるか)とアクセスポリシー(何ができるか)が独立していることだ。自動作成されるエントリはベースラインの Kubernetes 権限しか持たず、リソースのデプロイ権限は含まれない。

# アクセスエントリの確認(自動作成済み)
aws eks describe-access-entry \
  --cluster-name sandbox \
  --principal-arn arn:aws:iam::111122223333:role/ArgoCDCapabilityRole
 
# これだけでは不十分。ポリシーの関連付けが別途必要
aws eks associate-access-policy \
  --cluster-name sandbox \
  --principal-arn arn:aws:iam::111122223333:role/ArgoCDCapabilityRole \
  --policy-arn arn:aws:eks::aws:cluster-access-policy/AmazonEKSClusterAdminPolicy \
  --access-scope type=cluster

IAM でいう「ロール」と「ポリシー」の関係に近い。EKS のアクセス管理では、エントリの存在だけで安心せず、必ずポリシーの関連付けまで確認する必要がある。

共有する

田原 慎也

田原 慎也

ソリューションアーキテクト @ AWS

AWS ソリューションアーキテクトとして金融業界のお客様を中心に技術支援を行っています。クラウドアーキテクチャや AI/ML に関する学びをこのブログで発信しています。