EKS で aws-auth ConfigMap の変更を誤ってしまいアクセス許可を失ったときの対処方法

2023.02.28

困っていた内容

aws-auth ConfigMap を変更したところ内容に誤りがあり、EKS クラスターへアクセスができない状態になりました。
他に許可している IAM リソースもなく、再変更もできない状態です。EKS クラスターにアクセスする方法があれば教えてください。

どう対応すればいいの?

EKS クラスターを作成した IAM エンティティからアクセスしてください。

原則として EKS クラスターにアクセス可能な IAM エンティティ(IAM ユーザ、IAM ロール)は、aws-auth ConfigMap で設定します。一方で、EKS クラスターを作成した IAM エンティティは、aws-auth ConfigMap の設定不要で、system:mastersアクセス許可が付与されています。

そのため、aws-auth ConfigMap を誤って変更してしまった場合も、EKS クラスターを作成した IAM エンティティからは引き続きアクセスが可能です。

aws-auth ConfigMap が更新されてクラスターにアクセスできなくなった場合は、クラスター作成者の IAM エンティティを使用してクラスターにアクセスできます。この理由は、クラスター作成者は aws-auth ConfigMap にマッピングする必要がないためです。

なお、EKS クラスターを作成した IAM エンティティは、CloudWatch Log Insights でコントロールプレーンのロググループに対して次のクエリを実行すると特定できます。
また、CloudTrail のイベント履歴からCreateClusterイベントの実行履歴からも確認できます。

fields @logstream, @timestamp, @message
| sort @timestamp desc
| filter @logStream like /authenticator/
| filter @message like "username=kubernetes-admin"
| limit 50

実行例

@message	
time="2022-05-26T18:55:30Z" level=info msg="access granted" arn="arn:aws:iam::123456789000:user/testuser" client="127.0.0.1:57586" groups="[system:masters]" method=POST path=/authenticate uid="aws-iam-authenticator:123456789000:AROAFFXXXXXXXXXX" username=kubernetes-admin

参考資料