Mettre en place du filtrage IP sur Kubernetes

Mettre en place du filtrage IP sur Kubernetes

Il arrive parfois que l'on ait besoin d'effectuer du filtrage IP sur une infrastructure Kubernetes pour restreindre l'accès depuis l'extérieur. Regardons comment mettre en place une whitelist d'adresses IP via l'Ingress Nginx sur Kubernetes.

Introduction

Pour pouvoir contrôler le flux entrant au sein de son cluster Kubernetes, il est important de bien contrôler ses flux. L'Ingress Nginx en est un bon exemple, voici le lien de son repository Github :

GitHub - kubernetes/ingress-nginx: Ingress-NGINX Controller for Kubernetes
Ingress-NGINX Controller for Kubernetes. Contribute to kubernetes/ingress-nginx development by creating an account on GitHub.

Avec la mise en place de l'Ingress Nginx au sein de votre cluster Kubernetes, vous pourrez gérer votre configuration comme vous le souhaitez (mise en place de Headers, HSTS etc..) et aussi maîtriser votre flux entrant.

Cette maîtrise des flux passe notamment par le filtrage IP, ce que nous allons voir dans la suite de cet article.

Le filtrage IP

Dans Kubernetes, lorsque l'on souhaite customiser une ressource déjà existante, cela se passe souvent au niveau des annotations.

Pour l'Ingress Nginx, il est possible d'ajouter beaucoup d'annotations, voici la liste complète :

ingress-nginx/docs/user-guide/nginx-configuration/annotations.md at main · kubernetes/ingress-nginx
Ingress-NGINX Controller for Kubernetes. Contribute to kubernetes/ingress-nginx development by creating an account on GitHub.

L'annotation qui nous intéresse c'est celle-ci :

nginx.ingress.kubernetes.io/whitelist-source-range

Pour l'implémenter dans sa configuration, voici un exemple de filtrage IP :

ingress:
  annotations:
    nginx.ingress.kubernetes.io/whitelist-source-range: |
      0.0.0.0,
      1.1.1.1,
      2.2.2.2,
      3.3.3.3

Cette configuration autorise donc les adresses IP 0.0.0.0, 1.1.1.1 et ainsi de suite...