Closed2

[K8s] ServiceAccount Tokenは「Bound」されてどう変わる?手動で作ったものは期限切れになる?

harrythecodeharrythecode

本記事で書きたいこと

Kubernetes v1.22以降から有効化される「Bound Service Account Token

何がどう変化するのかが分かりづらいので本スクラップで簡潔にまとめます。

harrythecodeharrythecode

結論

  • Podで使用されるService Account TokenはK8s 1.22以降で「Bound」され、有効期限付きになる。(デフォルトは1時間) [1]
  • 手動で作ったService Account Tokenは期限切れが起らないが[2]、K8s v1.29以降では使用されないものは徐々に「削除」される予定 [3]

Tokenが有効期限つきになる背景

以前のService Account (以降SA)[4]は有効期限が一切ありませんでした。仮に管理権限を持つ有効期限のないSA Tokenが漏洩した場合、非常に危険です。その観点から、2017年から期限付きのアイディアが生まれ、2021年、K8s 1.22から「Bound Service Account Token」と言う機能がリリースされました。

参考にしたサイト

https://qiita.com/hiyosi/items/e4fb3d9188f8d6e650b2

https://qiita.com/hiyosi/items/35c22507b2a85892c707

脚注
  1. https://kubernetes.io/docs/reference/access-authn-authz/service-accounts-admin/#bound-service-account-token-volume ↩︎

  2. You can still manually create a Secret to hold a service account token; for example, if you need a token that never expires. (参考)

    ↩︎
  3. https://github.com/kubernetes/enhancements/tree/master/keps/sig-auth/2799-reduction-of-secret-based-service-account-token ↩︎

  4. 一般的な概念で言い表すとユーザで、Tokenはパスワードに当たります。どちらもPod (Docker Containerの集合体)内のVolumeにMountされます(実際のファイルとして存在) ↩︎

このスクラップは2023/03/04にクローズされました