EKS コントロールプレーンの認証(Authenticator)ログを眺めてみた

AWS
AWS
この記事は約12分で読めます。

EKS クラスターのコントロールプレーンのログ記録を行なったので、実際にどのようなログが出力されているかを眺めてみました。

Amazon EKS コントロールプレーンのログ記録 - Amazon EKS
Amazon EKS クラスターのログ記録を設定する方法について説明します。

Authenticator(認証)ログ

EKS 固有のログで、IAM 認証情報を使用した RBAC (Role Based Access Control)承認関連のログが出力されるようです。

ナレッジセンターを見る限り、EKS クラスターを作成した IAM の特定や、拒否された検索の調査に利用できます(両方とも監査ログからでもできそうですが)。

それでは実際のログを見ていきます。

level=info msg="starting mapper \"MountedFile\"
level=info msg="starting mapper \"EKSConfigMap\"
level=info msg="mapping IAM role" groups="[]" role="arn:aws:iam::753431191269:role/AWSWesleyClusterManagerLambda-Add-AddonManagerRole-1BCJKIH4W9AOD" username="eks:addon-manager"
level=info msg="mapping IAM role" groups="[]" role="arn:aws:iam::753431191269:role/AWSWesleyClusterManagerLambda-NodeManagerRole-1XKG670YXPD3V" username="eks:node-manager"
level=info msg="mapping IAM role" groups="[]" role="arn:aws:iam::753431191269:role/AWSWesleyClusterManagerLambda-FargateManagerRole-L8NAUF636GUD" username="eks:fargate-manager"
level=info msg="mapping IAM user" groups="[system:masters]" user="arn:aws:iam::xxx:user/xxx" username=kubernetes-admin"
level=error msg="Unable to re-establish watch: Get \"https://172.16.42.46:443/api/v1/namespaces/kube-system/configmaps?fieldSelector=metadata.name%3Daws-auth&watch=true\": dial tcp 172.16.42.46:443: connect: connection refused, sleeping for 5 seconds."
level=info msg="Creating certificate with address" address=127.0.0.1"
level=info msg="generated a new private key and certificate" certBytes=835 keyBytes=1191"
level=info msg="saving new key and certificate" certPath=/var/authenticator/cert.pem keyPath=/var/authenticator/key.pem"
level=info msg="loaded existing keypair" certPath=/var/authenticator/cert.pem keyPath=/var/authenticator/key.pem"
level=info msg="writing webhook kubeconfig file" kubeconfigPath=/etc/kubernetes/authenticator/apiserver-webhook-kubeconfig.yaml"
level=info msg="listening on 127.0.0.1:21362"
level=info msg="reconfigure your apiserver with `--authentication-token-webhook-config-file=/etc/kubernetes/authenticator/apiserver-webhook-kubeconfig.yaml` to enable (assuming default hostPath mounts)"
level=info msg="Using assumed role for EC2 API" roleARN="arn:aws:iam::xxx:role/EKSClusterRole"
level=info msg="Starting the h.ec2Provider.startEc2DescribeBatchProcessing "
level=error msg="Unable to re-establish watch: Get \"https://172.16.42.46:443/api/v1/namespaces/kube-system/configmaps?fieldSelector=metadata.name%3Daws-auth&watch=true\": dial tcp 172.16.42.46:443: connect: connection refused, sleeping for 5 seconds."
level=error msg="Unable to re-establish watch: Get \"https://172.16.42.46:443/api/v1/namespaces/kube-system/configmaps?fieldSelector=metadata.name%3Daws-auth&watch=true\": dial tcp 172.16.42.46:443: connect: connection refused, sleeping for 5 seconds."
level=error msg="Unable to re-establish watch: Get \"https://172.16.42.46:443/api/v1/namespaces/kube-system/configmaps?fieldSelector=metadata.name%3Daws-auth&watch=true\": dial tcp 172.16.42.46:443: connect: connection refused, sleeping for 5 seconds."
level=error msg="Unable to re-establish watch: unknown (get configmaps), sleeping for 5 seconds."
level=info msg="STS response" accesskeyid=xxx accountid=753431191269 arn="arn:aws:sts::753431191269:assumed-role/AWSWesleyClusterManagerLambda-Add-AddonManagerRole-1BCJKIH4W9AOD/1676722524514815328" client="127.0.0.1:39928" method=POST path=/authenticate session=1676722524514815328 userid=xxx"
level=info msg="access granted" arn="arn:aws:iam::753431191269:role/AWSWesleyClusterManagerLambda-Add-AddonManagerRole-1BCJKIH4W9AOD" client="127.0.0.1:39928" groups="[]" method=POST path=/authenticate uid="aws-iam-authenticator:753431191269:xxx" username="eks:addon-manager"
level=info msg="STS response" accesskeyid=xxx accountid=753431191269 arn="arn:aws:sts::753431191269:assumed-role/AWSWesleyClusterManagerLambda-Add-AddonManagerRole-1BCJKIH4W9AOD/1676722525665891281" client="127.0.0.1:39928" method=POST path=/authenticate session=1676722525665891281 userid=xxx"

このログはクラスター作成時のログです。
ログは level で分かれているので、error のログ検索は容易にできそうです。

EKS クラスターを作成した IAM がユーザー名 kubernetes-admin にマッピングされ、グループ system:masters に入っていることもわかります。

level=info msg="mapping IAM user" groups="[system:masters]" user="arn:aws:iam::xxx:user/xxx" username=kubernetes-admin"

AWSWesleyClusterManagerLambda-Add-AddonManagerRole-1BCJKIH4W9AOD などの別アカウントの IAM ロールが登場しています。おそらく AWS 所有のアカウントで、EKS 管理のために必要なのでしょう。

level=info msg="mapping IAM role" groups="[]" role="arn:aws:iam::753431191269:role/AWSWesleyClusterManagerLambda-Add-AddonManagerRole-1BCJKIH4W9AOD" username="eks:addon-manager"
level=info msg="mapping IAM role" groups="[]" role="arn:aws:iam::753431191269:role/AWSWesleyClusterManagerLambda-NodeManagerRole-1XKG670YXPD3V" username="eks:node-manager"
level=info msg="mapping IAM role" groups="[]" role="arn:aws:iam::753431191269:role/AWSWesleyClusterManagerLambda-FargateManagerRole-L8NAUF636GUD" username="eks:fargate-manager"

aws-auth ConfigMap を探したが見つからなかったようなエラーログもあります。

level=error msg="Unable to re-establish watch: Get \"https://172.16.42.46:443/api/v1/namespaces/kube-system/configmaps?fieldSelector=metadata.name%3Daws-auth&watch=true\": dial tcp 172.16.42.46:443: connect: connection refused, sleeping for 5 seconds."

これは aws-auth ConfigMap がない場合に出るログだと思われます。正確な日時は確認してはいませんが、aws-auth ConfigMap を作成した後と思われる時間のログには、以下のようにエラーではないログが出力されていました(合っているかは分かりません)。

level=info msg="Received aws-auth watch event"

全体的に、以下のようなログ(STS response, access granted)が多く見受けられました。

level=info msg="STS response" accesskeyid=xxx accountid=753431191269 arn="arn:aws:sts::753431191269:assumed-role/AWSWesleyClusterManagerLambda-Add-AddonManagerRole-1BCJKIH4W9AOD/1676722524514815328" client="127.0.0.1:39928" method=POST path=/authenticate session=1676722524514815328 userid=xxx"
level=info msg="access granted" arn="arn:aws:iam::753431191269:role/AWSWesleyClusterManagerLambda-Add-AddonManagerRole-1BCJKIH4W9AOD" client="127.0.0.1:39928" groups="[]" method=POST path=/authenticate uid="aws-iam-authenticator:753431191269:xxx" username="eks:addon-manager"

エラーが発生した際は上記のログにエラーの詳細が記載されているかもしれません。

タイトルとURLをコピーしました