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

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".

Important

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

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.

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

  1. Afin de créer l’espace de noms openshift-ingress-node-firewall, entrez la commande suivante:

    $ cat << EOF| oc create -f -
    apiVersion: v1
    kind: Namespace
    metadata:
      labels:
        pod-security.kubernetes.io/enforce: privileged
        pod-security.kubernetes.io/enforce-version: v1.24
      name: openshift-ingress-node-firewall
    EOF
    Copy to Clipboard Toggle word wrap
  2. Afin de créer un OperatorGroup CR, entrez la commande suivante:

    $ cat << EOF| oc create -f -
    apiVersion: operators.coreos.com/v1
    kind: OperatorGroup
    metadata:
      name: ingress-node-firewall-operators
      namespace: openshift-ingress-node-firewall
    EOF
    Copy to Clipboard Toggle word wrap
  3. Abonnez-vous à l’opérateur de pare-feu Ingress Node.

    1. Afin de créer un abonnement CR pour l’opérateur de pare-feu Ingress Node, entrez la commande suivante:

      $ cat << EOF| oc create -f -
      apiVersion: operators.coreos.com/v1alpha1
      kind: Subscription
      metadata:
        name: ingress-node-firewall-sub
        namespace: openshift-ingress-node-firewall
      spec:
        name: ingress-node-firewall
        channel: stable
        source: redhat-operators
        sourceNamespace: openshift-marketplace
      EOF
      Copy to Clipboard Toggle word wrap
  4. Afin de vérifier que l’opérateur est installé, entrez la commande suivante:

    $ oc get ip -n openshift-ingress-node-firewall
    Copy to Clipboard Toggle word wrap

    Exemple de sortie

    NAME            CSV                                         APPROVAL    APPROVED
    install-5cvnz   ingress-node-firewall.4.0-202211122336   Automatic   true
    Copy to Clipboard Toggle word wrap

  5. Afin de vérifier la version de l’opérateur, entrez la commande suivante:

    $ oc get csv -n openshift-ingress-node-firewall
    Copy to Clipboard Toggle word wrap

    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
    Copy to Clipboard Toggle word wrap

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

  1. Installez l’opérateur de pare-feu Ingress Node:

    1. Dans le Red Hat OpenShift Service sur la console web AWS, cliquez sur Opérateurs OperatorHub.
    2. Choisissez Ingress Node Firewall Operator dans la liste des opérateurs disponibles, puis cliquez sur Installer.
    3. Dans la page Opérateur d’installation, sous l’espace de Namespace installé, sélectionnez Opérateur recommandé Namespace.
    4. Cliquez sur Install.
  2. Assurez-vous que l’opérateur de pare-feu Ingress Node est installé avec succès:

    1. Accédez à la page Opérateurs installés Opérateurs installés.
    2. 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.

      Note

      Lors 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
        Copy to Clipboard Toggle word wrap
        Note

        Dans 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=.

2.4.3. Déploiement de l’opérateur de pare-feu Ingress Node

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.

  1. Créez le IngressNodeFirewallConfig à l’intérieur de l’espace de noms openshift-ingress-node-firewall nommé ingressnodefirewallconfig.
  2. 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
    Copy to Clipboard Toggle word wrap

2.4.3.1. Ingress Node Firewall Objet de configuration

Les champs de l’objet de configuration du pare-feu Ingress Node sont décrits dans le tableau suivant:

Expand
Tableau 2.4. Ingress Node Firewall Configuration objet
Le champLe typeDescription

les métadonnées.name

chaîne de caractères

Le nom de l’objet CR. Le nom de l’objet des règles du pare-feu doit être ingressnodefirewallconfig.

espace de métadonnées.nam

chaîne de caractères

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.

fiche technique.nodeSelector

chaîne de caractères

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: ""
Copy to Clipboard Toggle word wrap
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.

accueil Spéc.ebpfProgramManagerMode

booléen

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.

Note

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

apiVersion: ingressnodefirewall.openshift.io/v1alpha1
kind: IngressNodeFirewallConfig
metadata:
  name: ingressnodefirewallconfig
  namespace: openshift-ingress-node-firewall
spec:
  nodeSelector:
    node-role.kubernetes.io/worker: ""
Copy to Clipboard Toggle word wrap

Note

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

Les champs de l’objet des règles de pare-feu Ingress Node sont décrits dans le tableau suivant:

Expand
Tableau 2.5. Ingress Node Firewall Rules Objet
Le champLe typeDescription

les métadonnées.name

chaîne de caractères

Le nom de l’objet CR.

interfaces

le tableau

Les champs de cet objet spécifient les interfaces pour appliquer les règles de pare-feu. A titre d’exemple, - en0 et - en1.

le nodeSelector

le tableau

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

l’objet

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:

Expand
Tableau 2.6. l’objet d’entrée
Le champLe typeDescription

les sourcesCIDRs

le tableau

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 règles

le tableau

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 &lt;start : end-1&gt;.

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

apiVersion: ingressnodefirewall.openshift.io/v1alpha1
kind: IngressNodeFirewall
metadata:
  name: ingressnodefirewall
spec:
  interfaces:
  - eth0
  nodeSelector:
    matchLabels:
      <ingress_firewall_label_name>: <label_value> 
1

  ingress:
  - sourceCIDRs:
       - 172.16.0.0/12
    rules:
    - order: 10
      protocolConfig:
        protocol: ICMP
        icmp:
          icmpType: 8 #ICMP Echo request
      action: Deny
    - order: 20
      protocolConfig:
        protocol: TCP
        tcp:
          ports: "8000-9000"
      action: Deny
  - sourceCIDRs:
       - fc00:f853:ccd:e793::0/64
    rules:
    - order: 10
      protocolConfig:
        protocol: ICMPv6
        icmpv6:
          icmpType: 128 #ICMPV6 Echo request
      action: Deny
Copy to Clipboard Toggle word wrap

1
A &lt;label_name&gt; et un &lt;label_value&gt; 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 &lt;label_value&gt; 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:

Important

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

apiVersion: ingressnodefirewall.openshift.io/v1alpha1
kind: IngressNodeFirewall
metadata:
 name: ingressnodefirewall-zero-trust
spec:
 interfaces:
 - eth1 
1

 nodeSelector:
   matchLabels:
     <ingress_firewall_label_name>: <label_value> 
2

 ingress:
 - sourceCIDRs:
      - 0.0.0.0/0 
3

   rules:
   - order: 10
     protocolConfig:
       protocol: TCP
       tcp:
         ports: 22
     action: Allow
   - order: 20
     action: Deny 
4
Copy to Clipboard Toggle word wrap

1
Cluster d’interface réseau
2
Le &lt;label_name&gt; et &lt;label_value&gt; 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
Important

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.

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.

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

  1. 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
    Copy to Clipboard Toggle word wrap
  2. Editez l’objet IngressNodeFirewallConfig nommé ingressnodefirewallconfig et définissez le champ ebpfProgramManagerMode:

    Ingress Node Firewall Operator Objet de configuration de l’opérateur

    apiVersion: ingressnodefirewall.openshift.io/v1alpha1
    kind: IngressNodeFirewallConfig
    metadata:
      name: ingressnodefirewallconfig
      namespace: openshift-ingress-node-firewall
    spec:
      nodeSelector:
        node-role.kubernetes.io/worker: ""
      ebpfProgramManagerMode: <ebpf_mode>
    Copy to Clipboard Toggle word wrap

    là où:

    &lt;ebpf_mode&gt;: 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é.

Procédure

  1. Exécutez la commande suivante pour afficher toutes les règles actuelles:

    $ oc get ingressnodefirewall
    Copy to Clipboard Toggle word wrap
  2. Choisissez l’un des noms &lt;resource&gt; retournés et exécutez la commande suivante pour afficher les règles ou les configurations:

    $ oc get <resource> <name> -o yaml
    Copy to Clipboard Toggle word wrap

2.4.7. Dépannage de l’opérateur de pare-feu Ingress Node

  • 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
    Copy to Clipboard Toggle word wrap

    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
    Copy to Clipboard Toggle word wrap

  • 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
    Copy to Clipboard Toggle word wrap

    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
    Copy to Clipboard Toggle word wrap

    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
    Copy to Clipboard Toggle word wrap

    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.

Retour au début
Red Hat logoGithubredditYoutubeTwitter

Apprendre

Essayez, achetez et vendez

Communautés

À propos de la documentation Red Hat

Nous aidons les utilisateurs de Red Hat à innover et à atteindre leurs objectifs grâce à nos produits et services avec un contenu auquel ils peuvent faire confiance. Découvrez nos récentes mises à jour.

Rendre l’open source plus inclusif

Red Hat s'engage à remplacer le langage problématique dans notre code, notre documentation et nos propriétés Web. Pour plus de détails, consultez le Blog Red Hat.

À propos de Red Hat

Nous proposons des solutions renforcées qui facilitent le travail des entreprises sur plusieurs plates-formes et environnements, du centre de données central à la périphérie du réseau.

Theme

© 2025 Red Hat