Kubetier
  1. get a known service-account-token Secret name in kube-system.

    Before 1.24, these were auto-created for every ServiceAccount under a predictable name, so they could simply be guessed

  2. Auto-creation is off by default from 1.24, so on a current cluster the Secret has to already exist, and operator-managed clusters commonly keep one

  3. Where secrets-create is also held, the precondition can be manufactured rather than found.

    Annotate a new Secret for a privileged ServiceAccount, and the token controller fills in the token

  4. Reuse the controller ServiceAccount token for cluster-admin-equivalent access.

    Tokens from Secrets carry no expiry claim, so the access does not lapse

Rights needed, any one set:

  • · scoped to kube-system

    · needs the Secret name, and a privileged token Secret must already exist

  • · scoped to kube-system

    · enumerates instead, so no name is needed

  • · scoped to kube-system

    · also catches a token Secret created later

  • · scoped to kube-system

    · create manufactures the precondition rather than finding it

Note:

1.24 stopped auto-creating token Secrets, so guessing a predictable name is dead, but the underlying mechanism is not.

Manually created service-account-token Secrets are still populated with non-expiring tokens, and secrets-create in kube-system manufactures the precondition.

K8s docs ↗