Comment définir le flag --trusted-proxy-ip d'une instance OAuth2 Proxy hébergée via Kubernetes ?
Depuis sa version 7.15.2, OAuth2 Proxy dispose d'un nouveau flag permettant de renforcer sa sécurité : --trusted-proxy-ip. Celui-ci définit les reverse-proxy autorisés à envoyer des entêtes X-Forwarded-*. Ce flag doit être renseigné avec des IPs, ou une plage d'IP.
Dans le cas d'un cluster Kubernetes, les reverse-proxy à autoriser sont fournis par les Ingress, ou Gateway API. Pour connaitre les IPs, il faut donc interroger son cluster afin d'obtenir la plage d'IP affectée aux pods d'Ingress / Gateway API.
Par exemple : sur un cluster RKE2 utilisant Traefik, les pods intéressants sont dans le namepace kube-system. On peut utiliser la commande suivante pour obtenir la liste des pods avec leurs IPs :
Pour Windows
kubectl get pod -n kube-system -o wide | Select-String traefik
Pour Linux
kubectl get pod -n kube-system -o wide | grep traefik
Exemple de sortie :
helm-install-rke2-traefik-xxx1 0/1 Completed 0 3d5h 10.42.3.44 xx1 <none> <none>
helm-install-rke2-traefik-xxx2 0/1 Completed 0 3d5h 10.42.0.117 xx2 <none> <none>
rke2-traefik-xxx1 1/1 Running 0 3d5h 10.42.3.88 xx1 <none> <none>
rke2-traefik-xxx2 1/1 Running 0 3d5h 10.42.0.120 xx2 <none> <none>
rke2-traefik-xxx3 1/1 Running 0 3d5h 10.42.2.107 xx3 <none> <none>
rke2-traefik-xxx4 1/1 Running 0 3d5h 10.42.1.232 xx4 <none> <none>
On peut en conclure que les Ips utilisées seront sur la plage 10.42.0.0/16.
Dans le fichier de déploiement de OAuth2 Proxy il suffit d'ajouter la variable d'environnement OAUTH2_PROXY_TRUSTED_PROXY_IPS avec la valeur 10.42.0.0/16.
Exemple :
env:
# Reverse proxy
- name: OAUTH2_PROXY_REVERSE_PROXY
value: "true"
- name: OAUTH2_PROXY_TRUSTED_PROXY_IPS
value: "10.42.0.0/16"