Vers la 0.5.0
Mettre à jour depuis la 0.4.x, upstream_auth et claim_mappings (RFC 0014)
La 0.5.0 ajoute upstream_auth (RFC 0014) : un cluster peut faire croire à son apiserver
l'identité affirmée par le proxy, en en-têtes (Apiserver en front-proxy)
ou dans un JWT que le proxy signe (Le proxy comme émetteur), au lieu de lui
relayer le jeton de l'IdP. Rien ne change sans action de l'admin du proxy :
upstreamAuth.allowedModes vaut [Passthrough].
Mettre à jour
Comme toujours, chart-crd avant le chart, et toute l'installation à jour avant qu'un
cluster quitte Passthrough :
helm upgrade proxyauthk8s-crd oci://ghcr.io/batleforc/proxyauthk8s/chart-crd:0.5.0 \
--namespace ${NAMESPACE}
helm upgrade proxyauthk8s oci://ghcr.io/batleforc/proxyauthk8s/chart:0.5.0 \
--namespace ${NAMESPACE} \
--values proxyauthk8s-values.yamlLe contrôleur refuse de démarrer sur une CRD qui ne connaît pas upstream_auth, avec un
message qui nomme la version de chart-crd attendue.
Si vous gérez le RBAC vous-même, le compte du serveur a besoin, sur les secrets du
namespace de la release, de get (le certificat FrontProxy) et de list, create,
update et delete (les clés Issuer, que le contrôleur crée, fait tourner et balaie).
L'Ingress du chart route désormais /issuer/ vers le back : à reporter si vous exposez le
proxy autrement.
Ce qui change pour tous les clusters
- Cache des jetons : sa clé inclut désormais le
claim_mappingsdu cluster. Le cache est vidé au déploiement : une revalidation par utilisateur. - Sous-protocole WebSocket : une entrée
base64url.bearer.authorization.k8s.io.*deSec-WebSocket-Protocoln'est plus relayée à l'apiserver. kubectl envoieAuthorizationet n'est pas touché ; un client qui ne s'authentifierait que par ce sous-protocole reçoit401. /userinfo: une réponse de plus de 64 Kio (PROXY_JWKS_MAX_DOCUMENT_BYTES) est refusée.- Colonne
Upstreamdanskubectl get proxykubeapi -o wide(status.upstreamAuth.mode) ; vide, elle signale un contrôleur trop ancien.
Ajouter claim_mappings à un cluster existant
oidc_provider.claim_mappings est optionnel en Passthrough, requis en FrontProxy. L'ajouter
change le nom vu par le proxy (par exemple de preferred_username à sub) : revoyez les
allow-lists par nom, le rate limit par sujet et la continuité de l'audit, et, en FrontProxy,
les RoleBinding du cluster cible, qui visent user_prefix + ce nom. kubectl auth whoami
affiche le nom que l'apiserver voit.
En FrontProxy, un utilisateur de plus de 64 groupes reçoit 403 : filtrez par
groups.expression avant la bascule (fréquent avec Active Directory).
Revenir en arrière
Repassez chaque cluster en Passthrough avant de revenir à la 0.4.x ou de rétrograder
chart-crd. Un binaire 0.4.x ne trouve pas les clusters hors Passthrough (il répond
« cluster inconnu » plutôt que de relayer le jeton de l'IdP), et une CRD 0.4.x efface
upstream_auth à la lecture, ce qui empêche le contrôleur 0.5.0 de démarrer.