2.4. Intégrer l’opérateur de pare-feu Node dans Red Hat OpenShift Service sur AWS
L’opérateur de pare-feu Ingress Node fournit un pare-feu apatride basé sur eBPF pour gérer le trafic d’entrée au niveau des nœuds dans Red Hat OpenShift Service sur AWS.
2.4.1. Ingress Node Firewall Opérateur de pare-feu Copier lienLien copié sur presse-papiers!
L’opérateur de pare-feu Ingress Node fournit des règles de pare-feu d’entrée à un niveau de nœud en déployant le jeu de démon sur les nœuds que vous spécifiez et gérez dans les configurations du pare-feu. Afin de déployer l’ensemble de démons, vous créez une ressource personnalisée IngressNodeFirewallConfig (CR). L’opérateur applique le démon IngressNodeFirewallConfig CR pour créer un démon de pare-feu ingress node, qui s’exécute sur tous les nœuds qui correspondent au nodeSelector.
Configurez les règles de l’IngressNodeFirewall CR et les appliquez aux clusters à l’aide du nodeSelector et des valeurs de réglage sur "vrai".
L’opérateur de pare-feu Ingress Node ne prend en charge que les règles de pare-feu apatrides.
Les contrôleurs d’interface réseau (NIC) qui ne prennent pas en charge les pilotes XDP natifs fonctionneront à des performances inférieures.
Dans le cas du service OpenShift de Red Hat sur AWS 4.14 ou version ultérieure, vous devez exécuter Ingress Node Firewall Operator sur RHEL 9.0 ou version ultérieure.
2.4.2. Installation de l’opérateur de pare-feu Ingress Node Copier lienLien copié sur presse-papiers!
En tant qu’administrateur de cluster, vous pouvez installer l’opérateur de pare-feu Ingress Node en utilisant le service Red Hat OpenShift sur AWS CLI ou la console Web.
2.4.2.1. Installation de l’opérateur de pare-feu Ingress Node à l’aide du CLI Copier lienLien copié sur presse-papiers!
En tant qu’administrateur de cluster, vous pouvez installer l’opérateur à l’aide du CLI.
Conditions préalables
- L’OpenShift CLI (oc) a été installé.
- Il y a un compte avec des privilèges d’administrateur.
Procédure
Afin de créer l’espace de noms openshift-ingress-node-firewall, entrez la commande suivante:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Afin de créer un OperatorGroup CR, entrez la commande suivante:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Abonnez-vous à l’opérateur de pare-feu Ingress Node.
Afin de créer un abonnement CR pour l’opérateur de pare-feu Ingress Node, entrez la commande suivante:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Afin de vérifier que l’opérateur est installé, entrez la commande suivante:
oc get ip -n openshift-ingress-node-firewall
$ oc get ip -n openshift-ingress-node-firewall
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
NAME CSV APPROVAL APPROVED install-5cvnz ingress-node-firewall.4.0-202211122336 Automatic true
NAME CSV APPROVAL APPROVED install-5cvnz ingress-node-firewall.4.0-202211122336 Automatic true
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Afin de vérifier la version de l’opérateur, entrez la commande suivante:
oc get csv -n openshift-ingress-node-firewall
$ oc get csv -n openshift-ingress-node-firewall
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
NAME DISPLAY VERSION REPLACES PHASE ingress-node-firewall.4.0-202211122336 Ingress Node Firewall Operator 4.0-202211122336 ingress-node-firewall.4.0-202211102047 Succeeded
NAME DISPLAY VERSION REPLACES PHASE ingress-node-firewall.4.0-202211122336 Ingress Node Firewall Operator 4.0-202211122336 ingress-node-firewall.4.0-202211102047 Succeeded
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.4.2.2. Installation de l’opérateur de pare-feu Ingress Node à l’aide de la console Web Copier lienLien copié sur presse-papiers!
En tant qu’administrateur de cluster, vous pouvez installer l’opérateur à l’aide de la console Web.
Conditions préalables
- L’OpenShift CLI (oc) a été installé.
- Il y a un compte avec des privilèges d’administrateur.
Procédure
Installez l’opérateur de pare-feu Ingress Node:
-
Dans le Red Hat OpenShift Service sur la console web AWS, cliquez sur Opérateurs
OperatorHub. - Choisissez Ingress Node Firewall Operator dans la liste des opérateurs disponibles, puis cliquez sur Installer.
- Dans la page Opérateur d’installation, sous l’espace de Namespace installé, sélectionnez Opérateur recommandé Namespace.
- Cliquez sur Install.
-
Dans le Red Hat OpenShift Service sur la console web AWS, cliquez sur Opérateurs
Assurez-vous que l’opérateur de pare-feu Ingress Node est installé avec succès:
-
Accédez à la page Opérateurs installés
Opérateurs installés. Assurez-vous que l’opérateur de pare-feu Ingress Node est listé dans le projet openshift-ingress-node-firewall avec un statut de InstallSucceed.
NoteLors de l’installation, un opérateur peut afficher un statut échoué. Lorsque l’installation réussit plus tard avec un message InstallSucceeded, vous pouvez ignorer le message échoué.
Dans le cas où l’opérateur n’a pas le statut d’InstallSucceed, dépannage en utilisant les étapes suivantes:
- Inspectez les onglets Abonnements de l’opérateur et Install Plans pour toute défaillance ou erreur sous Statut.
-
Accédez à la page Workloads
Pods et vérifiez les journaux des pods dans le projet openshift-ingress-node-firewall. Cochez l’espace de noms du fichier YAML. En cas d’absence de l’annotation, vous pouvez ajouter l’annotationload.openshift.io/allowed=management à l’espace de noms de l’opérateur avec la commande suivante:
oc annotate ns/openshift-ingress-node-firewall workload.openshift.io/allowed=management
$ oc annotate ns/openshift-ingress-node-firewall workload.openshift.io/allowed=management
Copy to Clipboard Copied! Toggle word wrap Toggle overflow NoteDans le cas des clusters OpenShift à nœud unique, l’espace de noms openshift-ingress-node-firewall nécessite l’annotation de gestion load.openshift.io/allowed=.
-
Accédez à la page Opérateurs installés
2.4.3. Déploiement de l’opérateur de pare-feu Ingress Node Copier lienLien copié sur presse-papiers!
Conditions préalables
- L’opérateur de pare-feu Ingress Node est installé.
Procédure
Afin de déployer l’opérateur de pare-feu Ingress Node, créez une ressource personnalisée IngressNodeFirewallConfig qui déploiera l’ensemble de démon de l’opérateur. Il est possible de déployer un ou plusieurs CRD IngressNodeFirewall sur les nœuds en appliquant des règles de pare-feu.
- Créez le IngressNodeFirewallConfig à l’intérieur de l’espace de noms openshift-ingress-node-firewall nommé ingressnodefirewallconfig.
Exécutez la commande suivante pour déployer les règles de l’opérateur de pare-feu Ingress Node:
oc apply -f rule.yaml
$ oc apply -f rule.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.4.3.1. Ingress Node Firewall Objet de configuration Copier lienLien copié sur presse-papiers!
Les champs de l’objet de configuration du pare-feu Ingress Node sont décrits dans le tableau suivant:
Le champ | Le type | Description |
---|---|---|
|
| Le nom de l’objet CR. Le nom de l’objet des règles du pare-feu doit être ingressnodefirewallconfig. |
|
| Espace de noms pour l’objet Ingress Firewall Operator CR. L’IngressNodeFirewallConfig CR doit être créé à l’intérieur de l’espace de noms openshift-ingress-node-firewall. |
|
| Contrainte de sélection des nœuds utilisée pour cibler les nœuds à l’aide d’étiquettes de nœud spécifiées. À titre d’exemple: spec: nodeSelector: node-role.kubernetes.io/worker: ""
Note L’étiquette utilisée dans nodeSelector doit correspondre à une étiquette sur les nœuds afin que le démon puisse démarrer. À titre d’exemple, si les étiquettes node-role.kubernetes.io/worker et node-type.kubernetes.io/vm sont appliquées sur un nœud, alors au moins une étiquette doit être définie à l’aide de nodeSelector pour que le démon commence. |
|
| Indique si l’opérateur de pare-feu Node Ingress utilise l’opérateur de gestionnaire eBPF ou non pour gérer les programmes eBPF. Cette capacité est une fonctionnalité d’aperçu technologique. En savoir plus sur la portée du support des fonctionnalités de Red Hat Technology Preview, voir la portée du support des fonctionnalités d’aperçu de la technologie. |
L’opérateur consomme le CR et crée un daemon de pare-feu de nœud d’entrée sur tous les nœuds qui correspondent au nodeSelector.
Configuration de l’exemple de pare-feu Ingress Node Firewall Operator
La configuration complète du pare-feu Ingress Node est spécifiée dans l’exemple suivant:
Exemple d’objet de configuration du pare-feu Ingress Node
L’opérateur consomme le CR et crée un daemon de pare-feu de nœud d’entrée sur tous les nœuds qui correspondent au nodeSelector.
2.4.3.2. Ingress Node Firewall Rules Objet Copier lienLien copié sur presse-papiers!
Les champs de l’objet des règles de pare-feu Ingress Node sont décrits dans le tableau suivant:
Le champ | Le type | Description |
---|---|---|
|
| Le nom de l’objet CR. |
|
| Les champs de cet objet spécifient les interfaces pour appliquer les règles de pare-feu. A titre d’exemple, - en0 et - en1. |
|
| Il est possible d’utiliser nodeSelector pour sélectionner les nœuds pour appliquer les règles du pare-feu. Définissez la valeur de vos étiquettes nodeselector nommées sur true pour appliquer la règle. |
|
| Ingress vous permet de configurer les règles qui permettent un accès extérieur aux services de votre cluster. |
Configuration de l’objet d’entrée
Les valeurs de l’objet d’entrée sont définies dans le tableau suivant:
Le champ | Le type | Description |
---|---|---|
|
| Il vous permet de définir le bloc CIDR. Il est possible de configurer plusieurs CIDR de différentes familles d’adresses. Note Différents CIDR vous permettent d’utiliser la même règle d’ordre. Dans le cas où il existe plusieurs objets IngressNodeFirewall pour les mêmes nœuds et interfaces avec des CIDR qui se chevauchent, le champ de commande spécifie quelle règle est appliquée en premier. Les règles sont appliquées dans l’ordre ascendant. |
|
| Les objets de commande sont commandés à partir de 1 pour chaque source.CIDR avec jusqu’à 100 règles par CIDR. Les règles d’ordre inférieur sont exécutées en premier. le protocole Rules.protocolConfig.protocol prend en charge les protocoles suivants : TCP, UDP, SCTP, ICMP et ICMPv6. Les règles ICMP et ICMPv6 peuvent correspondre aux types ou codes ICMP et ICMPv6. Les règles TCP, UDP et SCTP peuvent correspondre à un seul port de destination ou à une gamme de ports au format <start : end-1>. Définissez rules.action pour permettre d’appliquer la règle ou de refuser de rejeter la règle. Note Les règles de pare-feu d’entrée sont vérifiées à l’aide d’un webhook de vérification qui bloque toute configuration invalide. Le webhook de vérification vous empêche de bloquer tout service de cluster critique tel que le serveur API. |
Exemple de règles de pare-feu Ingress Node Firewall
La configuration complète du pare-feu Ingress Node est spécifiée dans l’exemple suivant:
Exemple de configuration du pare-feu Ingress Node
- 1
- A <label_name> et un <label_value> doivent exister sur le nœud et doivent correspondre à l’étiquette nodeselector et à la valeur appliquée aux nœuds que vous souhaitez que le CR ingressfirewallconfig s’exécute. Le <label_value> peut être vrai ou faux. En utilisant les étiquettes nodeSelector, vous pouvez cibler des groupes distincts de nœuds pour appliquer différentes règles à l’utilisation de l’ingressfirewallconfig CR.
Exemple de règles de pare-feu Ingress Node
Les règles de pare-feu Ingress Node peuvent fournir une sécurité supplémentaire aux clusters multi-interfaces. À titre d’exemple, vous pouvez utiliser les règles de pare-feu Ingress Node Node pour supprimer tout le trafic sur une interface spécifique, à l’exception de SSH.
Dans l’exemple suivant, une configuration complète d’un jeu de règles de pare-feu Ingress Node Node est spécifiée dans l’exemple suivant:
Les utilisateurs doivent ajouter tous les ports que leur application utilisera à leur liste d’autorisations dans le cas suivant pour assurer une fonctionnalité appropriée.
Exemple zéro confiance Ingress Node Firewall règles
- 1
- Cluster d’interface réseau
- 2
- Le <label_name> et <label_value> doit correspondre à l’étiquette nodeSelector et à la valeur appliquée aux nœuds spécifiques avec lesquels vous souhaitez appliquer le logiciel ingressfirewallconfig CR.
- 3
- 0.0.0.0/0 ensemble pour correspondre à n’importe quel CIDR
- 4
- action définie à Deny
l’intégration d’eBPF Manager Operator est une fonctionnalité d’aperçu technologique seulement. Les fonctionnalités d’aperçu technologique ne sont pas prises en charge avec les accords de niveau de service de production de Red Hat (SLA) et pourraient ne pas être fonctionnellement complètes. Le Red Hat ne recommande pas de les utiliser en production. Ces fonctionnalités offrent un accès précoce aux fonctionnalités du produit à venir, permettant aux clients de tester les fonctionnalités et de fournir des commentaires pendant le processus de développement.
En savoir plus sur la portée du support des fonctionnalités de Red Hat Technology Preview, voir la portée du support des fonctionnalités d’aperçu de la technologie.
2.4.4. Intégration de l’opérateur de pare-feu de nœud d’entrée Copier lienLien copié sur presse-papiers!
Le pare-feu Ingress Node utilise les programmes eBPF pour implémenter certaines de ses fonctionnalités de pare-feu clés. Ces programmes eBPF sont chargés par défaut dans le noyau à l’aide d’un mécanisme spécifique au pare-feu du nœud Ingress. À la place, vous pouvez configurer l’opérateur de pare-feu Ingress Node pour utiliser l’opérateur de gestionnaire eBPF pour le chargement et la gestion de ces programmes.
Lorsque cette intégration est activée, les limitations suivantes s’appliquent:
- L’opérateur de pare-feu Ingress Node utilise TCX si XDP n’est pas disponible et TCX est incompatible avec bpfman.
- Les gousses de jeu de pare-feu Ingress Node Firewall Operator restent dans l’état ContainerCreating jusqu’à ce que les règles de pare-feu soient appliquées.
- Les gousses de jeu de pare-feu Ingress Node Operator fonctionnent comme privilégiées.
2.4.5. Configuration de l’opérateur de pare-feu Ingress Node pour utiliser l’opérateur eBPF Manager Copier lienLien copié sur presse-papiers!
Le pare-feu Ingress Node utilise les programmes eBPF pour implémenter certaines de ses fonctionnalités de pare-feu clés. Ces programmes eBPF sont chargés par défaut dans le noyau à l’aide d’un mécanisme spécifique au pare-feu du nœud Ingress.
En tant qu’administrateur de cluster, vous pouvez configurer l’opérateur de pare-feu de nœud Ingress pour utiliser l’opérateur de gestionnaire eBPF pour le chargement et la gestion de ces programmes à la place, ajoutant des fonctionnalités de sécurité et d’observabilité supplémentaires.
Conditions préalables
- L’OpenShift CLI (oc) a été installé.
- Il y a un compte avec des privilèges d’administrateur.
- L’opérateur de pare-feu Ingress Node a été installé.
- L’opérateur de gestionnaire eBPF a été installé.
Procédure
Appliquer les étiquettes suivantes à l’espace de noms ingress-node-firewall-system:
oc label namespace openshift-ingress-node-firewall \ pod-security.kubernetes.io/enforce=privileged \ pod-security.kubernetes.io/warn=privileged --overwrite
$ oc label namespace openshift-ingress-node-firewall \ pod-security.kubernetes.io/enforce=privileged \ pod-security.kubernetes.io/warn=privileged --overwrite
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Editez l’objet IngressNodeFirewallConfig nommé ingressnodefirewallconfig et définissez le champ ebpfProgramManagerMode:
Ingress Node Firewall Operator Objet de configuration de l’opérateur
Copy to Clipboard Copied! Toggle word wrap Toggle overflow là où:
<ebpf_mode>: Spécifie si oui ou non l’opérateur de pare-feu Ingress Node utilise l’opérateur de gestionnaire eBPF pour gérer les programmes eBPF. Il doit être vrai ou faux. En cas de désinitialisation, eBPF Manager n’est pas utilisé.
2.4.6. Affichage des règles de l’opérateur de pare-feu Ingress Node Copier lienLien copié sur presse-papiers!
Procédure
Exécutez la commande suivante pour afficher toutes les règles actuelles:
oc get ingressnodefirewall
$ oc get ingressnodefirewall
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Choisissez l’un des noms <resource> retournés et exécutez la commande suivante pour afficher les règles ou les configurations:
oc get <resource> <name> -o yaml
$ oc get <resource> <name> -o yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.4.7. Dépannage de l’opérateur de pare-feu Ingress Node Copier lienLien copié sur presse-papiers!
Exécutez la commande suivante pour répertorier les définitions de ressources personnalisées (CRD) installées Ingress Node Firewall:
oc get crds | grep ingressnodefirewall
$ oc get crds | grep ingressnodefirewall
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
NAME READY UP-TO-DATE AVAILABLE AGE ingressnodefirewallconfigs.ingressnodefirewall.openshift.io 2022-08-25T10:03:01Z ingressnodefirewallnodestates.ingressnodefirewall.openshift.io 2022-08-25T10:03:00Z ingressnodefirewalls.ingressnodefirewall.openshift.io 2022-08-25T10:03:00Z
NAME READY UP-TO-DATE AVAILABLE AGE ingressnodefirewallconfigs.ingressnodefirewall.openshift.io 2022-08-25T10:03:01Z ingressnodefirewallnodestates.ingressnodefirewall.openshift.io 2022-08-25T10:03:00Z ingressnodefirewalls.ingressnodefirewall.openshift.io 2022-08-25T10:03:00Z
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Exécutez la commande suivante pour afficher l’état de l’opérateur de pare-feu Ingress Node:
oc get pods -n openshift-ingress-node-firewall
$ oc get pods -n openshift-ingress-node-firewall
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
NAME READY STATUS RESTARTS AGE ingress-node-firewall-controller-manager 2/2 Running 0 5d21h ingress-node-firewall-daemon-pqx56 3/3 Running 0 5d21h
NAME READY STATUS RESTARTS AGE ingress-node-firewall-controller-manager 2/2 Running 0 5d21h ingress-node-firewall-daemon-pqx56 3/3 Running 0 5d21h
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Les champs suivants fournissent des informations sur le statut de l’opérateur: READY, STATUS, AGE et RESTARTS. Le champ STATUS s’exécute lorsque l’opérateur de pare-feu Ingress Node déploie un démon défini sur les nœuds assignés.
Exécutez la commande suivante pour collecter tous les journaux des pods de pare-feu ingress:
oc adm must-gather – gather_ingress_node_firewall
$ oc adm must-gather – gather_ingress_node_firewall
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Les journaux sont disponibles dans le rapport du nœud sos contenant les sorties eBPF bpftool à /sos_commands/ebpf. Ces rapports incluent des tables de recherche utilisées ou mises à jour lorsque le pare-feu d’entrée XDP gère le traitement des paquets, met à jour les statistiques et émet des événements.