Network policies
GitGuardian Self-Hosted embarque des ressources Kubernetes NetworkPolicy qui isolent le namespace GIM du reste du cluster. Lorsqu'elles sont activées, l'ingress depuis l'extérieur du namespace est refusé par défaut et seuls les namespaces que vous autorisez explicitement peuvent atteindre les pods GitGuardian.
Les network policies sont disponibles pour les installations Helm et configurées entièrement via les values Helm sous les clés top-level networkPolicy.*. Référence complète des values : Helm values.
Les objets NetworkPolicy sont appliqués par votre plugin CNI (Calico, Cilium, AWS VPC CNI avec policy enforcement, etc.). Assurez-vous que votre cluster dispose d'un CNI imposant les politiques avant d'activer cette fonctionnalité — sinon les politiques sont déployées mais ignorées.
Démarrage rapide
Le déploiement recommandé est un processus en deux étapes : déployer en dryrun d'abord pour valider votre configuration, puis basculer sur enforce pour activer le blocage.
1. Déployer en mode dryrun
En mode dryrun, toutes les politiques sont appliquées mais une règle allow-all temporaire empêche tout trafic d'être bloqué. Utilisez cette phase pour examiner les politiques générées et identifier chaque namespace qui doit communiquer avec GIM.
networkPolicy:
enabled: true
mode: dryrun
allowedNamespaces:
- ingress-nginx
- monitoring
Inspectez les politiques déployées et vos schémas de trafic (logs CNI, métriques service mesh, etc.) pour confirmer que rien de légitime ne serait bloqué.
2. Basculer en mode enforce
Une fois confiant, retirez le filet de sécurité en basculant sur enforce :
networkPolicy:
enabled: true
mode: enforce
allowedNamespaces:
- ingress-nginx
- monitoring
L'ingress depuis tout namespace ne figurant pas dans allowedNamespaces est désormais activement bloqué.
Référence de configuration
| Value | Défaut | Description |
|---|---|---|
networkPolicy.enabled | false | Active les ressources NetworkPolicy pour le namespace GIM. |
networkPolicy.mode | dryrun | dryrun : les politiques sont déployées avec un filet allow-all. enforce : le allow-all est retiré et les politiques bloquent activement les ingress non autorisés. |
networkPolicy.allowedNamespaces | [] | Namespaces autorisés à atteindre les pods GIM. Incluez votre contrôleur ingress, votre stack de monitoring et tout autre workload nécessitant l'accès. Exemple : ["ingress-nginx", "monitoring"]. |
networkPolicy.extraPolicies | [] | Entrées de spec NetworkPolicy complètes rendues à côté des défauts. Utilisez ceci pour des règles allow/deny personnalisées en dehors du modèle allowedNamespaces. |
Politiques personnalisées
Utilisez networkPolicy.extraPolicies lorsque vous avez besoin de règles ne correspondant pas au modèle allowedNamespaces (par ex. restrictions egress, règles basées sur pod-selector). Chaque entrée est rendue comme une spec NetworkPolicy complète :
networkPolicy:
enabled: true
mode: enforce
allowedNamespaces:
- ingress-nginx
extraPolicies:
- apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: allow-external-smtp
spec:
podSelector: {}
policyTypes:
- Egress
egress:
- to:
- ipBlock:
cidr: 10.0.0.0/24
ports:
- protocol: TCP
port: 587
Dépannage
- Trafic bloqué de manière inattendue : revenez à
mode: dryrun, puis ajoutez le namespace manquant àallowedNamespacesavant de repasser àenforce. - Politiques déployées mais non appliquées : vérifiez que votre plugin CNI prend en charge l'application de
NetworkPolicy. Exécutezkubectl get networkpolicies -n <gitguardian-namespace>pour confirmer que les ressources existent. - Contrôleur ingress incapable d'atteindre GIM : le namespace de votre contrôleur ingress (par ex.
ingress-nginx,istio-system) doit être listé dansallowedNamespaces.