6.4. Enregistrement de l’audit pour la sécurité du réseau


Le plugin réseau OVN-Kubernetes utilise les listes de contrôle d’accès Open Virtual Network (OVN) pour gérer les objets AdminNetworkPolicy, BaselineAdminNetworkPolicy, NetworkPolicy et EgressFirewall. La journalisation de l’audit permet et refuse les événements ACL pour NetworkPolicy, EgressFirewall et BaselineAdminNetworkPolicy ressources personnalisées (CR). La journalisation permet également, nie et passe les événements ACL pour AdminNetworkPolicy (ANP) CR.

Note

L’enregistrement de l’audit est disponible uniquement pour le plugin réseau OVN-Kubernetes.

6.4.1. Configuration de l’audit

La configuration pour l’enregistrement de l’audit est spécifiée dans le cadre de la configuration du fournisseur de réseau de cluster OVN-Kubernetes. Les valeurs YAML suivantes illustrent les valeurs par défaut pour l’enregistrement de l’audit:

Configuration de journalisation de l’audit

apiVersion: operator.openshift.io/v1
kind: Network
metadata:
  name: cluster
spec:
  defaultNetwork:
    ovnKubernetesConfig:
      policyAuditConfig:
        destination: "null"
        maxFileSize: 50
        rateLimit: 20
        syslogFacility: local0
Copy to Clipboard Toggle word wrap

Le tableau suivant décrit les champs de configuration pour l’enregistrement de l’audit.

Expand
Tableau 6.1. l’objet de PolicyAuditConfig
Le champLe typeDescription

à propos de rateLimit

entier

Le nombre maximum de messages pour générer chaque seconde par nœud. La valeur par défaut est de 20 messages par seconde.

format maxFileSize

entier

La taille maximale pour l’audit log in octets. La valeur par défaut est 50000000 ou 50 Mo.

accueil > maxLogFiles

entier

Le nombre maximum de fichiers journaux qui sont conservés.

destination de destination

chaîne de caractères

B) L’un des objectifs supplémentaires suivants:

libc
La fonction libc syslog() du processus journalisé sur l’hôte.
catégorie:<host>:<port>
C’est un serveur de syslog. <host>:<port> par l’hôte et le port du serveur syslog.
catégorie:<file>
Fichier Unix Domain Socket spécifié par <file>.
C’est nul
Il ne faut pas envoyer les journaux d’audit à une cible supplémentaire.

la facilité de syslog

chaîne de caractères

L’installation de syslog, telle que kern, telle que définie par la RFC5424. La valeur par défaut est local0.

6.4.2. Enregistrement de l’audit

Il est possible de configurer la destination pour les journaux d’audit, tels qu’un serveur syslog ou une socket de domaine UNIX. Indépendamment de toute configuration supplémentaire, un journal d’audit est toujours enregistré sur /var/log/ovn/acl-audit-log.log sur chaque pod OVN-Kubernetes dans le cluster.

Il est possible d’activer la journalisation de l’audit pour chaque espace de noms en annotant chaque configuration d’espace de noms avec une section k8s.ovn.org/acl-logging. Dans la section k8s.ovn.org/acl-logging, vous devez spécifier autoriser, refuser ou les deux valeurs pour activer l’enregistrement de l’audit pour un espace de noms.

Note

En règle générale, une stratégie réseau ne prend pas en charge la configuration de l’action Pass.

L’implémentation ACL-logging enregistre les événements de la liste de contrôle d’accès (ACL) pour un réseau. Ces journaux peuvent être consultés pour analyser les éventuels problèmes de sécurité.

Exemple d’annotation d’espace de noms

kind: Namespace
apiVersion: v1
metadata:
  name: example1
  annotations:
    k8s.ovn.org/acl-logging: |-
      {
        "deny": "info",
        "allow": "info"
      }
Copy to Clipboard Toggle word wrap

Afin d’afficher les valeurs de configuration de journalisation ACL par défaut, consultez l’objet policyAuditConfig dans le fichier cluster-network-03-config.yml. Au besoin, vous pouvez modifier les valeurs de configuration de journalisation ACL pour les paramètres du fichier journal dans ce fichier.

Le format de message de journalisation est compatible avec syslog tel que défini par la RFC5424. L’installation syslog est configurable et par défaut à local0. L’exemple suivant montre les paramètres clés et leurs valeurs produites dans un message journal:

Exemple de message de journalisation qui produit les paramètres et leurs valeurs

<timestamp>|<message_serial>|acl_log(ovn_pinctrl0)|<severity>|name="<acl_name>", verdict="<verdict>", severity="<severity>", direction="<direction>": <flow>
Copy to Clipboard Toggle word wrap

Là où:

  • &lt;timestamp&gt; indique l’heure et la date de création d’un message journal.
  • &lt;message_serial&gt; répertorie le numéro de série d’un message journal.
  • acl_log(ovn_pinctrl0) est une chaîne littérale qui imprime l’emplacement du message journal dans le plugin OVN-Kubernetes.
  • &lt;Severity&gt; définit le niveau de sévérité d’un message journal. Lorsque vous activez l’enregistrement de l’audit qui prend en charge les tâches, deux niveaux de gravité s’affichent dans la sortie du message journal.
  • &lt;name&gt; indique le nom de l’implémentation ACL-logging dans la base de données OVN Network Bridging Database (nbdb) créée par la stratégie réseau.
  • &lt;verdict&gt; peut être autorisé ou tomber.
  • &lt;direction&gt; peut être soit à-lport ou à partir de-lport pour indiquer que la politique a été appliquée au trafic allant ou loin d’un pod.
  • &lt;flow&gt; affiche les informations de paquet dans un format équivalent au protocole OpenFlow. Ce paramètre comprend les champs Open vSwitch (OVS).

L’exemple suivant montre les champs OVS que le paramètre de flux utilise pour extraire des informations de paquets à partir de la mémoire système:

Exemple de champs OVS utilisés par le paramètre de flux pour extraire des informations sur les paquets

<proto>,vlan_tci=0x0000,dl_src=<src_mac>,dl_dst=<source_mac>,nw_src=<source_ip>,nw_dst=<target_ip>,nw_tos=<tos_dscp>,nw_ecn=<tos_ecn>,nw_ttl=<ip_ttl>,nw_frag=<fragment>,tp_src=<tcp_src_port>,tp_dst=<tcp_dst_port>,tcp_flags=<tcp_flags>
Copy to Clipboard Toggle word wrap

Là où:

  • &lt;proto&gt; indique le protocole. Les valeurs valides sont tcp et udp.
  • le vlan_tci=0x0000 indique l’en-tête VLAN comme 0 parce qu’un ID VLAN n’est pas défini pour le trafic réseau de pod interne.
  • &lt;src_mac&gt; spécifie la source de l’adresse Media Access Control (MAC).
  • &lt;source_mac&gt; spécifie la destination de l’adresse MAC.
  • &lt;source_ip&gt; répertorie l’adresse IP source
  • &lt;target_ip&gt; répertorie l’adresse IP cible.
  • &lt;tos_dscp&gt; indique les valeurs du point de code de service différencié (DSCP) pour classer et prioriser certains trafic réseau par rapport à d’autres trafics.
  • &lt;tos_ecn&gt; indique les valeurs de notification de congestion explicite (ECN) qui indiquent tout trafic encombré dans votre réseau.
  • &lt;IP_TTL&gt; indique les informations Time To Live (TTP) pour un paquet.
  • &lt;fragment&gt; spécifie quel type de fragments IP ou de non-fragments IP correspondre.
  • &lt;tcp_src_port&gt; affiche la source du port pour les protocoles TCP et UDP.
  • &lt;tcp_dst_port&gt; répertorie le port de destination pour les protocoles TCP et UDP.
  • &lt;tcp_flags&gt; prend en charge de nombreux drapeaux tels que SYN, ACK, PSH et ainsi de suite. Lorsque vous devez définir plusieurs valeurs, chaque valeur est séparée par une barre verticale (|). Le protocole UDP ne prend pas en charge ce paramètre.
Note

Consultez la page du manuel OVS pour les champs ovs pour obtenir de plus amples renseignements sur les descriptions de terrain précédentes.

Exemple ACL refusant l’entrée de journal pour une stratégie de réseau

2023-11-02T16:28:54.139Z|00004|acl_log(ovn_pinctrl0)|INFO|name="NP:verify-audit-logging:Ingress", verdict=drop, severity=alert, direction=to-lport: tcp,vlan_tci=0x0000,dl_src=0a:58:0a:81:02:01,dl_dst=0a:58:0a:81:02:23,nw_src=10.131.0.39,nw_dst=10.129.2.35,nw_tos=0,nw_ecn=0,nw_ttl=62,nw_frag=no,tp_src=58496,tp_dst=8080,tcp_flags=syn
2023-11-02T16:28:55.187Z|00005|acl_log(ovn_pinctrl0)|INFO|name="NP:verify-audit-logging:Ingress", verdict=drop, severity=alert, direction=to-lport: tcp,vlan_tci=0x0000,dl_src=0a:58:0a:81:02:01,dl_dst=0a:58:0a:81:02:23,nw_src=10.131.0.39,nw_dst=10.129.2.35,nw_tos=0,nw_ecn=0,nw_ttl=62,nw_frag=no,tp_src=58496,tp_dst=8080,tcp_flags=syn
2023-11-02T16:28:57.235Z|00006|acl_log(ovn_pinctrl0)|INFO|name="NP:verify-audit-logging:Ingress", verdict=drop, severity=alert, direction=to-lport: tcp,vlan_tci=0x0000,dl_src=0a:58:0a:81:02:01,dl_dst=0a:58:0a:81:02:23,nw_src=10.131.0.39,nw_dst=10.129.2.35,nw_tos=0,nw_ecn=0,nw_ttl=62,nw_frag=no,tp_src=58496,tp_dst=8080,tcp_flags=syn
Copy to Clipboard Toggle word wrap

Le tableau suivant décrit les valeurs d’annotation de namespace:

Expand
Tableau 6.2. Annotation de l’espace de noms d’audit pour k8s.ovn.org/acl-logging
Le champDescription

de nier

Bloque l’accès à l’espace de noms à tout trafic qui correspond à une règle ACL avec l’action de refus. Le champ prend en charge les valeurs d’alerte, d’avertissement, d’avis, d’information ou de débogage.

autoriser

Autorise l’accès à l’espace de noms à tout trafic qui correspond à une règle ACL avec l’action d’autorisation. Le champ prend en charge les valeurs d’alerte, d’avertissement, d’avis, d’information ou de débogage.

laissez-passer

L’action de passe s’applique à la règle ACL d’une politique de réseau d’administrateur. L’action de passe permet soit à la stratégie réseau dans l’espace de noms, soit à la règle de base de stratégie réseau admin d’évaluer tout le trafic entrant et sortant. La politique de réseau ne soutient pas une action de passage.

6.4.3. Gestion de l’audit d’administrationNetworkPolicy

L’enregistrement de l’audit est activé par AdminNetworkPolicy CR en annotant une politique ANP avec la clé d’enregistrement k8s.ovn.org/acl-logging comme dans l’exemple suivant:

Exemple 6.8. Exemple d’annotation pour AdminNetworkPolicy CR

apiVersion: policy.networking.k8s.io/v1alpha1
kind: AdminNetworkPolicy
metadata:
  annotations:
    k8s.ovn.org/acl-logging: '{ "deny": "alert", "allow": "alert", "pass" : "warning" }'
  name: anp-tenant-log
spec:
  priority: 5
  subject:
    namespaces:
      matchLabels:
        tenant: backend-storage # Selects all pods owned by storage tenant.
  ingress:
    - name: "allow-all-ingress-product-development-and-customer" # Product development and customer tenant ingress to backend storage.
      action: "Allow"
      from:
      - pods:
          namespaceSelector:
            matchExpressions:
            - key: tenant
              operator: In
              values:
              - product-development
              - customer
          podSelector: {}
    - name: "pass-all-ingress-product-security"
      action: "Pass"
      from:
      - namespaces:
          matchLabels:
              tenant: product-security
    - name: "deny-all-ingress" # Ingress to backend from all other pods in the cluster.
      action: "Deny"
      from:
      - namespaces: {}
  egress:
    - name: "allow-all-egress-product-development"
      action: "Allow"
      to:
      - pods:
          namespaceSelector:
            matchLabels:
              tenant: product-development
          podSelector: {}
    - name: "pass-egress-product-security"
      action: "Pass"
      to:
      - namespaces:
           matchLabels:
             tenant: product-security
    - name: "deny-all-egress" # Egress from backend denied to all other pods.
      action: "Deny"
      to:
      - namespaces: {}
Copy to Clipboard Toggle word wrap

Les journaux sont générés chaque fois qu’un OVN ACL spécifique est touché et répond aux critères d’action définis dans votre annotation de journalisation. À titre d’exemple, un événement dans lequel l’un des espaces de noms avec le locataire de l’étiquette : le développement produit accède aux espaces de noms avec le locataire de l’étiquette : backend-stockage, un journal est généré.

Note

La journalisation de l’ACL est limitée à 60 caractères. Lorsque votre nom ANP est long, le reste du journal sera tronqué.

Ce qui suit est un index de direction pour les exemples d’entrées de journal qui suivent:

Expand
DirectionLa règle

Ingress

La règle 0
Autoriser des locataires développement de produits et client à locataire backend-stockage; Ingress0: Autoriser
La règle 1
Le passage de la sécurité produit à l’arrière-stockage du locataire; Ingress1: Pass
La règle 2
Déniez l’infiltration de toutes les gousses; Ingress2: Deny

Egress

La règle 0
Autoriser le développement de produits; Egress0: Permettre
La règle 1
Passer à la sécurité produit; Egress1: Pass
La règle 2
« refuser l’évacuation à tous les autres pods ; Egress2: Deny »

Exemple 6.9. Exemple d’entrée de journal ACL pour Autoriser l’action de l’AdminNetworkPolicy nommé anp-tenant-log avec Ingress:0 et Egress:0

2024-06-10T16:27:45.194Z|00052|acl_log(ovn_pinctrl0)|INFO|name="ANP:anp-tenant-log:Ingress:0", verdict=allow, severity=alert, direction=to-lport: tcp,vlan_tci=0x0000,dl_src=0a:58:0a:80:02:1a,dl_dst=0a:58:0a:80:02:19,nw_src=10.128.2.26,nw_dst=10.128.2.25,nw_tos=0,nw_ecn=0,nw_ttl=64,nw_frag=no,tp_src=57814,tp_dst=8080,tcp_flags=syn
2024-06-10T16:28:23.130Z|00059|acl_log(ovn_pinctrl0)|INFO|name="ANP:anp-tenant-log:Ingress:0", verdict=allow, severity=alert, direction=to-lport: tcp,vlan_tci=0x0000,dl_src=0a:58:0a:80:02:18,dl_dst=0a:58:0a:80:02:19,nw_src=10.128.2.24,nw_dst=10.128.2.25,nw_tos=0,nw_ecn=0,nw_ttl=64,nw_frag=no,tp_src=38620,tp_dst=8080,tcp_flags=ack
2024-06-10T16:28:38.293Z|00069|acl_log(ovn_pinctrl0)|INFO|name="ANP:anp-tenant-log:Egress:0", verdict=allow, severity=alert, direction=from-lport: tcp,vlan_tci=0x0000,dl_src=0a:58:0a:80:02:19,dl_dst=0a:58:0a:80:02:1a,nw_src=10.128.2.25,nw_dst=10.128.2.26,nw_tos=0,nw_ecn=0,nw_ttl=64,nw_frag=no,tp_src=47566,tp_dst=8080,tcp_flags=fin|ack=0,nw_ecn=0,nw_ttl=64,nw_frag=no,tp_src=55704,tp_dst=8080,tcp_flags=ack
Copy to Clipboard Toggle word wrap

Exemple 6.10. Exemple d’entrée de journal ACL pour l’action Pass de l’AdminNetworkPolicy nommé anp-tenant-log avec Ingress:1 et Egress:1

2024-06-10T16:33:12.019Z|00075|acl_log(ovn_pinctrl0)|INFO|name="ANP:anp-tenant-log:Ingress:1", verdict=pass, severity=warning, direction=to-lport: tcp,vlan_tci=0x0000,dl_src=0a:58:0a:80:02:1b,dl_dst=0a:58:0a:80:02:19,nw_src=10.128.2.27,nw_dst=10.128.2.25,nw_tos=0,nw_ecn=0,nw_ttl=64,nw_frag=no,tp_src=37394,tp_dst=8080,tcp_flags=ack
2024-06-10T16:35:04.209Z|00081|acl_log(ovn_pinctrl0)|INFO|name="ANP:anp-tenant-log:Egress:1", verdict=pass, severity=warning, direction=from-lport: tcp,vlan_tci=0x0000,dl_src=0a:58:0a:80:02:19,dl_dst=0a:58:0a:80:02:1b,nw_src=10.128.2.25,nw_dst=10.128.2.27,nw_tos=0,nw_ecn=0,nw_ttl=64,nw_frag=no,tp_src=34018,tp_dst=8080,tcp_flags=ack
Copy to Clipboard Toggle word wrap

Exemple 6.11. Exemple d’entrée de journal ACL pour l’action Deny de l’AdminNetworkPolicy nommé anp-tenant-log avec Egress:2 et Ingress2

2024-06-10T16:43:05.287Z|00087|acl_log(ovn_pinctrl0)|INFO|name="ANP:anp-tenant-log:Egress:2", verdict=drop, severity=alert, direction=from-lport: tcp,vlan_tci=0x0000,dl_src=0a:58:0a:80:02:19,dl_dst=0a:58:0a:80:02:18,nw_src=10.128.2.25,nw_dst=10.128.2.24,nw_tos=0,nw_ecn=0,nw_ttl=64,nw_frag=no,tp_src=51598,tp_dst=8080,tcp_flags=syn
2024-06-10T16:44:43.591Z|00090|acl_log(ovn_pinctrl0)|INFO|name="ANP:anp-tenant-log:Ingress:2", verdict=drop, severity=alert, direction=to-lport: tcp,vlan_tci=0x0000,dl_src=0a:58:0a:80:02:1c,dl_dst=0a:58:0a:80:02:19,nw_src=10.128.2.28,nw_dst=10.128.2.25,nw_tos=0,nw_ecn=0,nw_ttl=64,nw_frag=no,tp_src=33774,tp_dst=8080,tcp_flags=syn
Copy to Clipboard Toggle word wrap

Le tableau suivant décrit l’annotation ANP:

Expand
Tableau 6.3. Enregistrement de l’audit AdminNetworkAnnotation politique
AnnotationLa valeur

k8s.ovn.org/acl-logging

Il faut spécifier au moins un de Autoriser, Deny ou Pass pour activer la journalisation de l’audit pour un espace de noms.

De nier
Facultatif: Précisez l’alerte, l’avertissement, l’avis, l’information ou le débogue.
Autoriser
Facultatif: Précisez l’alerte, l’avertissement, l’avis, l’information ou le débogue.
Laissez-passer
Facultatif: Précisez l’alerte, l’avertissement, l’avis, l’information ou le débogue.

6.4.4. Enregistrement de l’audit de baseAdminNetwork

L’enregistrement de l’audit est activé dans la BaselineAdminNetworkPolicy CR en annotant une politique BANP avec la clé d’enregistrement k8s.ovn.org/acl-logging comme dans l’exemple suivant:

Exemple 6.12. Exemple d’annotation pour BaselineAdminNetworkPolicy CR

apiVersion: policy.networking.k8s.io/v1alpha1
kind: BaselineAdminNetworkPolicy
metadata:
  annotations:
    k8s.ovn.org/acl-logging: '{ "deny": "alert", "allow": "alert"}'
  name: default
spec:
  subject:
    namespaces:
      matchLabels:
          tenant: workloads # Selects all workload pods in the cluster.
  ingress:
  - name: "default-allow-dns" # This rule allows ingress from dns tenant to all workloads.
    action: "Allow"
    from:
    - namespaces:
          matchLabels:
            tenant: dns
  - name: "default-deny-dns" # This rule denies all ingress from all pods to workloads.
    action: "Deny"
    from:
    - namespaces: {} # Use the empty selector with caution because it also selects OpenShift namespaces as well.
  egress:
  - name: "default-deny-dns" # This rule denies all egress from workloads. It will be applied when no ANP or network policy matches.
    action: "Deny"
    to:
    - namespaces: {} # Use the empty selector with caution because it also selects OpenShift namespaces as well.
Copy to Clipboard Toggle word wrap

Dans l’exemple, un événement dans lequel l’un des espaces de noms avec le locataire de l’étiquette: dns accède aux espaces de noms avec le locataire de l’étiquette: charges de travail, un journal est généré.

Ce qui suit est un index de direction pour les exemples d’entrées de journal qui suivent:

Expand
DirectionLa règle

Ingress

La règle 0
Autoriser du locataire dns aux charges de travail des locataires; Ingress0: Autoriser
La règle 1
Refuser les charges de travail des locataires de toutes les gousses; Ingress1: Deny

Egress

La règle 0
À toutes les nacelles; Egress0: Deny

Exemple 6.13. Exemple ACL autorise l’entrée de journal pour Autoriser l’action de BANP par défaut avec Ingress:0

2024-06-10T18:11:58.263Z|00022|acl_log(ovn_pinctrl0)|INFO|name="BANP:default:Ingress:0", verdict=allow, severity=alert, direction=to-lport: tcp,vlan_tci=0x0000,dl_src=0a:58:0a:82:02:57,dl_dst=0a:58:0a:82:02:56,nw_src=10.130.2.87,nw_dst=10.130.2.86,nw_tos=0,nw_ecn=0,nw_ttl=64,nw_frag=no,tp_src=60510,tp_dst=8080,tcp_flags=syn
2024-06-10T18:11:58.264Z|00023|acl_log(ovn_pinctrl0)|INFO|name="BANP:default:Ingress:0", verdict=allow, severity=alert, direction=to-lport: tcp,vlan_tci=0x0000,dl_src=0a:58:0a:82:02:57,dl_dst=0a:58:0a:82:02:56,nw_src=10.130.2.87,nw_dst=10.130.2.86,nw_tos=0,nw_ecn=0,nw_ttl=64,nw_frag=no,tp_src=60510,tp_dst=8080,tcp_flags=psh|ack
2024-06-10T18:11:58.264Z|00024|acl_log(ovn_pinctrl0)|INFO|name="BANP:default:Ingress:0", verdict=allow, severity=alert, direction=to-lport: tcp,vlan_tci=0x0000,dl_src=0a:58:0a:82:02:57,dl_dst=0a:58:0a:82:02:56,nw_src=10.130.2.87,nw_dst=10.130.2.86,nw_tos=0,nw_ecn=0,nw_ttl=64,nw_frag=no,tp_src=60510,tp_dst=8080,tcp_flags=ack
2024-06-10T18:11:58.264Z|00025|acl_log(ovn_pinctrl0)|INFO|name="BANP:default:Ingress:0", verdict=allow, severity=alert, direction=to-lport: tcp,vlan_tci=0x0000,dl_src=0a:58:0a:82:02:57,dl_dst=0a:58:0a:82:02:56,nw_src=10.130.2.87,nw_dst=10.130.2.86,nw_tos=0,nw_ecn=0,nw_ttl=64,nw_frag=no,tp_src=60510,tp_dst=8080,tcp_flags=ack
2024-06-10T18:11:58.264Z|00026|acl_log(ovn_pinctrl0)|INFO|name="BANP:default:Ingress:0", verdict=allow, severity=alert, direction=to-lport: tcp,vlan_tci=0x0000,dl_src=0a:58:0a:82:02:57,dl_dst=0a:58:0a:82:02:56,nw_src=10.130.2.87,nw_dst=10.130.2.86,nw_tos=0,nw_ecn=0,nw_ttl=64,nw_frag=no,tp_src=60510,tp_dst=8080,tcp_flags=fin|ack
2024-06-10T18:11:58.264Z|00027|acl_log(ovn_pinctrl0)|INFO|name="BANP:default:Ingress:0", verdict=allow, severity=alert, direction=to-lport: tcp,vlan_tci=0x0000,dl_src=0a:58:0a:82:02:57,dl_dst=0a:58:0a:82:02:56,nw_src=10.130.2.87,nw_dst=10.130.2.86,nw_tos=0,nw_ecn=0,nw_ttl=64,nw_frag=no,tp_src=60510,tp_dst=8080,tcp_flags=ack
Copy to Clipboard Toggle word wrap

Exemple 6.14. Exemple ACL autorise l’entrée de journal pour Autoriser l’action de BANP par défaut avec Egress:0 et Ingress:1

2024-06-10T18:09:57.774Z|00016|acl_log(ovn_pinctrl0)|INFO|name="BANP:default:Egress:0", verdict=drop, severity=alert, direction=from-lport: tcp,vlan_tci=0x0000,dl_src=0a:58:0a:82:02:56,dl_dst=0a:58:0a:82:02:57,nw_src=10.130.2.86,nw_dst=10.130.2.87,nw_tos=0,nw_ecn=0,nw_ttl=64,nw_frag=no,tp_src=45614,tp_dst=8080,tcp_flags=syn
2024-06-10T18:09:58.809Z|00017|acl_log(ovn_pinctrl0)|INFO|name="BANP:default:Egress:0", verdict=drop, severity=alert, direction=from-lport: tcp,vlan_tci=0x0000,dl_src=0a:58:0a:82:02:56,dl_dst=0a:58:0a:82:02:57,nw_src=10.130.2.86,nw_dst=10.130.2.87,nw_tos=0,nw_ecn=0,nw_ttl=64,nw_frag=no,tp_src=45614,tp_dst=8080,tcp_flags=syn
2024-06-10T18:10:00.857Z|00018|acl_log(ovn_pinctrl0)|INFO|name="BANP:default:Egress:0", verdict=drop, severity=alert, direction=from-lport: tcp,vlan_tci=0x0000,dl_src=0a:58:0a:82:02:56,dl_dst=0a:58:0a:82:02:57,nw_src=10.130.2.86,nw_dst=10.130.2.87,nw_tos=0,nw_ecn=0,nw_ttl=64,nw_frag=no,tp_src=45614,tp_dst=8080,tcp_flags=syn
2024-06-10T18:10:25.414Z|00019|acl_log(ovn_pinctrl0)|INFO|name="BANP:default:Ingress:1", verdict=drop, severity=alert, direction=to-lport: tcp,vlan_tci=0x0000,dl_src=0a:58:0a:82:02:58,dl_dst=0a:58:0a:82:02:56,nw_src=10.130.2.88,nw_dst=10.130.2.86,nw_tos=0,nw_ecn=0,nw_ttl=64,nw_frag=no,tp_src=40630,tp_dst=8080,tcp_flags=syn
2024-06-10T18:10:26.457Z|00020|acl_log(ovn_pinctrl0)|INFO|name="BANP:default:Ingress:1", verdict=drop, severity=alert, direction=to-lport: tcp,vlan_tci=0x0000,dl_src=0a:58:0a:82:02:58,dl_dst=0a:58:0a:82:02:56,nw_src=10.130.2.88,nw_dst=10.130.2.86,nw_tos=0,nw_ecn=0,nw_ttl=64,nw_frag=no,tp_src=40630,tp_dst=8080,tcp_flags=syn
2024-06-10T18:10:28.505Z|00021|acl_log(ovn_pinctrl0)|INFO|name="BANP:default:Ingress:1", verdict=drop, severity=alert, direction=to-lport: tcp,vlan_tci=0x0000,dl_src=0a:58:0a:82:02:58,dl_dst=0a:58:0a:82:02:56,nw_src=10.130.2.88,nw_dst=10.130.2.86,nw_tos=0,nw_ecn=0,nw_ttl=64,nw_frag=no,tp_src=40630,tp_dst=8080,tcp_flags=syn
Copy to Clipboard Toggle word wrap

Le tableau suivant décrit l’annotation BANP:

Expand
Tableau 6.4. Enregistrement de l’audit BaselineAdminNetwork Annotation politique
AnnotationLa valeur

k8s.ovn.org/acl-logging

Il faut spécifier au moins un de Autoriser ou Deny pour activer l’enregistrement de l’audit pour un espace de noms.

De nier
Facultatif: Précisez l’alerte, l’avertissement, l’avis, l’information ou le débogue.
Autoriser
Facultatif: Précisez l’alerte, l’avertissement, l’avis, l’information ou le débogue.

En tant qu’administrateur de cluster, vous pouvez personnaliser l’enregistrement de l’audit pour votre cluster.

Conditions préalables

  • Installez le OpenShift CLI (oc).
  • Connectez-vous au cluster avec un utilisateur avec des privilèges cluster-admin.

Procédure

  • Afin de personnaliser la configuration de journalisation de l’audit, entrez la commande suivante:

    $ oc edit network.operator.openshift.io/cluster
    Copy to Clipboard Toggle word wrap
    Astuce

    Alternativement, vous pouvez personnaliser et appliquer les YAML suivants pour configurer l’enregistrement de l’audit:

    apiVersion: operator.openshift.io/v1
    kind: Network
    metadata:
      name: cluster
    spec:
      defaultNetwork:
        ovnKubernetesConfig:
          policyAuditConfig:
            destination: "null"
            maxFileSize: 50
            rateLimit: 20
            syslogFacility: local0
    Copy to Clipboard Toggle word wrap

La vérification

  1. Créer un espace de noms avec des stratégies réseau complète les étapes suivantes:

    1. Créer un espace de noms pour la vérification:

      $ cat <<EOF| oc create -f -
      kind: Namespace
      apiVersion: v1
      metadata:
        name: verify-audit-logging
        annotations:
          k8s.ovn.org/acl-logging: '{ "deny": "alert", "allow": "alert" }'
      EOF
      Copy to Clipboard Toggle word wrap

      Exemple de sortie

      namespace/verify-audit-logging created
      Copy to Clipboard Toggle word wrap

    2. Créer des stratégies réseau pour l’espace de noms:

      $ cat <<EOF| oc create -n verify-audit-logging -f -
      apiVersion: networking.k8s.io/v1
      kind: NetworkPolicy
      metadata:
        name: deny-all
      spec:
        podSelector:
          matchLabels:
        policyTypes:
        - Ingress
        - Egress
      ---
      apiVersion: networking.k8s.io/v1
      kind: NetworkPolicy
      metadata:
        name: allow-from-same-namespace
        namespace: verify-audit-logging
      spec:
        podSelector: {}
        policyTypes:
         - Ingress
         - Egress
        ingress:
          - from:
              - podSelector: {}
        egress:
          - to:
             - namespaceSelector:
                matchLabels:
                  kubernetes.io/metadata.name: verify-audit-logging
      EOF
      Copy to Clipboard Toggle word wrap

      Exemple de sortie

      networkpolicy.networking.k8s.io/deny-all created
      networkpolicy.networking.k8s.io/allow-from-same-namespace created
      Copy to Clipboard Toggle word wrap

  2. Créer un pod pour le trafic source dans l’espace de noms par défaut:

    $ cat <<EOF| oc create -n default -f -
    apiVersion: v1
    kind: Pod
    metadata:
      name: client
    spec:
      containers:
        - name: client
          image: registry.access.redhat.com/rhel7/rhel-tools
          command: ["/bin/sh", "-c"]
          args:
            ["sleep inf"]
    EOF
    Copy to Clipboard Toggle word wrap
  3. Créez deux pods dans l’espace de noms check-audit-logging:

    $ for name in client server; do
    cat <<EOF| oc create -n verify-audit-logging -f -
    apiVersion: v1
    kind: Pod
    metadata:
      name: ${name}
    spec:
      containers:
        - name: ${name}
          image: registry.access.redhat.com/rhel7/rhel-tools
          command: ["/bin/sh", "-c"]
          args:
            ["sleep inf"]
    EOF
    done
    Copy to Clipboard Toggle word wrap

    Exemple de sortie

    pod/client created
    pod/server created
    Copy to Clipboard Toggle word wrap

  4. Afin de générer du trafic et de produire des entrées de journal d’audit de stratégie réseau, remplissez les étapes suivantes:

    1. Accédez à l’adresse IP du serveur nommé pod dans l’espace de noms check-audit-logging:

      $ POD_IP=$(oc get pods server -n verify-audit-logging -o jsonpath='{.status.podIP}')
      Copy to Clipboard Toggle word wrap
    2. Le ping de l’adresse IP de la commande précédente à partir du client nommé pod dans l’espace de noms par défaut et confirmez que tous les paquets sont supprimés:

      $ oc exec -it client -n default -- /bin/ping -c 2 $POD_IP
      Copy to Clipboard Toggle word wrap

      Exemple de sortie

      PING 10.128.2.55 (10.128.2.55) 56(84) bytes of data.
      
      --- 10.128.2.55 ping statistics ---
      2 packets transmitted, 0 received, 100% packet loss, time 2041ms
      Copy to Clipboard Toggle word wrap

    3. Le ping de l’adresse IP enregistrée dans la variable d’environnement de shell POD_IP à partir du client nommé pod dans l’espace de noms Vérifier-audit-logement et confirmer que tous les paquets sont autorisés:

      $ oc exec -it client -n verify-audit-logging -- /bin/ping -c 2 $POD_IP
      Copy to Clipboard Toggle word wrap

      Exemple de sortie

      PING 10.128.0.86 (10.128.0.86) 56(84) bytes of data.
      64 bytes from 10.128.0.86: icmp_seq=1 ttl=64 time=2.21 ms
      64 bytes from 10.128.0.86: icmp_seq=2 ttl=64 time=0.440 ms
      
      --- 10.128.0.86 ping statistics ---
      2 packets transmitted, 2 received, 0% packet loss, time 1001ms
      rtt min/avg/max/mdev = 0.440/1.329/2.219/0.890 ms
      Copy to Clipboard Toggle word wrap

  5. Afficher les dernières entrées dans le journal d’audit de stratégie réseau:

    $ for pod in $(oc get pods -n openshift-ovn-kubernetes -l app=ovnkube-node --no-headers=true | awk '{ print $1 }') ; do
        oc exec -it $pod -n openshift-ovn-kubernetes -- tail -4 /var/log/ovn/acl-audit-log.log
      done
    Copy to Clipboard Toggle word wrap

    Exemple de sortie

    2023-11-02T16:28:54.139Z|00004|acl_log(ovn_pinctrl0)|INFO|name="NP:verify-audit-logging:Ingress", verdict=drop, severity=alert, direction=to-lport: tcp,vlan_tci=0x0000,dl_src=0a:58:0a:81:02:01,dl_dst=0a:58:0a:81:02:23,nw_src=10.131.0.39,nw_dst=10.129.2.35,nw_tos=0,nw_ecn=0,nw_ttl=62,nw_frag=no,tp_src=58496,tp_dst=8080,tcp_flags=syn
    2023-11-02T16:28:55.187Z|00005|acl_log(ovn_pinctrl0)|INFO|name="NP:verify-audit-logging:Ingress", verdict=drop, severity=alert, direction=to-lport: tcp,vlan_tci=0x0000,dl_src=0a:58:0a:81:02:01,dl_dst=0a:58:0a:81:02:23,nw_src=10.131.0.39,nw_dst=10.129.2.35,nw_tos=0,nw_ecn=0,nw_ttl=62,nw_frag=no,tp_src=58496,tp_dst=8080,tcp_flags=syn
    2023-11-02T16:28:57.235Z|00006|acl_log(ovn_pinctrl0)|INFO|name="NP:verify-audit-logging:Ingress", verdict=drop, severity=alert, direction=to-lport: tcp,vlan_tci=0x0000,dl_src=0a:58:0a:81:02:01,dl_dst=0a:58:0a:81:02:23,nw_src=10.131.0.39,nw_dst=10.129.2.35,nw_tos=0,nw_ecn=0,nw_ttl=62,nw_frag=no,tp_src=58496,tp_dst=8080,tcp_flags=syn
    2023-11-02T16:49:57.909Z|00028|acl_log(ovn_pinctrl0)|INFO|name="NP:verify-audit-logging:allow-from-same-namespace:Egress:0", verdict=allow, severity=alert, direction=from-lport: icmp,vlan_tci=0x0000,dl_src=0a:58:0a:81:02:22,dl_dst=0a:58:0a:81:02:23,nw_src=10.129.2.34,nw_dst=10.129.2.35,nw_tos=0,nw_ecn=0,nw_ttl=64,nw_frag=no,icmp_type=8,icmp_code=0
    2023-11-02T16:49:57.909Z|00029|acl_log(ovn_pinctrl0)|INFO|name="NP:verify-audit-logging:allow-from-same-namespace:Ingress:0", verdict=allow, severity=alert, direction=to-lport: icmp,vlan_tci=0x0000,dl_src=0a:58:0a:81:02:22,dl_dst=0a:58:0a:81:02:23,nw_src=10.129.2.34,nw_dst=10.129.2.35,nw_tos=0,nw_ecn=0,nw_ttl=64,nw_frag=no,icmp_type=8,icmp_code=0
    2023-11-02T16:49:58.932Z|00030|acl_log(ovn_pinctrl0)|INFO|name="NP:verify-audit-logging:allow-from-same-namespace:Egress:0", verdict=allow, severity=alert, direction=from-lport: icmp,vlan_tci=0x0000,dl_src=0a:58:0a:81:02:22,dl_dst=0a:58:0a:81:02:23,nw_src=10.129.2.34,nw_dst=10.129.2.35,nw_tos=0,nw_ecn=0,nw_ttl=64,nw_frag=no,icmp_type=8,icmp_code=0
    2023-11-02T16:49:58.932Z|00031|acl_log(ovn_pinctrl0)|INFO|name="NP:verify-audit-logging:allow-from-same-namespace:Ingress:0", verdict=allow, severity=alert, direction=to-lport: icmp,vlan_tci=0x0000,dl_src=0a:58:0a:81:02:22,dl_dst=0a:58:0a:81:02:23,nw_src=10.129.2.34,nw_dst=10.129.2.35,nw_tos=0,nw_ecn=0,nw_ttl=64,nw_frag=no,icmp_type=8,icmp_code=0
    Copy to Clipboard Toggle word wrap

En tant qu’administrateur de cluster, vous pouvez activer la journalisation de l’audit pour un espace de noms.

Conditions préalables

  • Installez le OpenShift CLI (oc).
  • Connectez-vous au cluster avec un utilisateur avec des privilèges cluster-admin.

Procédure

  • Afin d’activer la journalisation de l’audit pour un espace de noms, entrez la commande suivante:

    $ oc annotate namespace <namespace> \
      k8s.ovn.org/acl-logging='{ "deny": "alert", "allow": "notice" }'
    Copy to Clipboard Toggle word wrap

    là où:

    &lt;namespace&gt;
    Indique le nom de l’espace de noms.
    Astuce

    Alternativement, vous pouvez appliquer le YAML suivant pour activer l’enregistrement de l’audit:

    kind: Namespace
    apiVersion: v1
    metadata:
      name: <namespace>
      annotations:
        k8s.ovn.org/acl-logging: |-
          {
            "deny": "alert",
            "allow": "notice"
          }
    Copy to Clipboard Toggle word wrap

    Exemple de sortie

    namespace/verify-audit-logging annotated
    Copy to Clipboard Toggle word wrap

La vérification

  • Afficher les dernières entrées dans le journal d’audit:

    $ for pod in $(oc get pods -n openshift-ovn-kubernetes -l app=ovnkube-node --no-headers=true | awk '{ print $1 }') ; do
        oc exec -it $pod -n openshift-ovn-kubernetes -- tail -4 /var/log/ovn/acl-audit-log.log
      done
    Copy to Clipboard Toggle word wrap

    Exemple de sortie

    2023-11-02T16:49:57.909Z|00028|acl_log(ovn_pinctrl0)|INFO|name="NP:verify-audit-logging:allow-from-same-namespace:Egress:0", verdict=allow, severity=alert, direction=from-lport: icmp,vlan_tci=0x0000,dl_src=0a:58:0a:81:02:22,dl_dst=0a:58:0a:81:02:23,nw_src=10.129.2.34,nw_dst=10.129.2.35,nw_tos=0,nw_ecn=0,nw_ttl=64,nw_frag=no,icmp_type=8,icmp_code=0
    2023-11-02T16:49:57.909Z|00029|acl_log(ovn_pinctrl0)|INFO|name="NP:verify-audit-logging:allow-from-same-namespace:Ingress:0", verdict=allow, severity=alert, direction=to-lport: icmp,vlan_tci=0x0000,dl_src=0a:58:0a:81:02:22,dl_dst=0a:58:0a:81:02:23,nw_src=10.129.2.34,nw_dst=10.129.2.35,nw_tos=0,nw_ecn=0,nw_ttl=64,nw_frag=no,icmp_type=8,icmp_code=0
    2023-11-02T16:49:58.932Z|00030|acl_log(ovn_pinctrl0)|INFO|name="NP:verify-audit-logging:allow-from-same-namespace:Egress:0", verdict=allow, severity=alert, direction=from-lport: icmp,vlan_tci=0x0000,dl_src=0a:58:0a:81:02:22,dl_dst=0a:58:0a:81:02:23,nw_src=10.129.2.34,nw_dst=10.129.2.35,nw_tos=0,nw_ecn=0,nw_ttl=64,nw_frag=no,icmp_type=8,icmp_code=0
    2023-11-02T16:49:58.932Z|00031|acl_log(ovn_pinctrl0)|INFO|name="NP:verify-audit-logging:allow-from-same-namespace:Ingress:0", verdict=allow, severity=alert, direction=to-lport: icmp,vlan_tci=0x0000,dl_src=0a:58:0a:81:02:22,dl_dst=0a:58:0a:81:02:23,nw_src=10.129.2.34,nw_dst=10.129.2.35,nw_tos=0,nw_ecn=0,nw_ttl=64,nw_frag=no,icmp_type=8,icmp_code=0
    Copy to Clipboard Toggle word wrap

En tant qu’administrateur de cluster, vous pouvez désactiver la journalisation de l’audit pour un espace de noms.

Conditions préalables

  • Installez le OpenShift CLI (oc).
  • Connectez-vous au cluster avec un utilisateur avec des privilèges cluster-admin.

Procédure

  • Afin de désactiver la journalisation de l’audit pour un espace de noms, entrez la commande suivante:

    $ oc annotate --overwrite namespace <namespace> k8s.ovn.org/acl-logging-
    Copy to Clipboard Toggle word wrap

    là où:

    &lt;namespace&gt;
    Indique le nom de l’espace de noms.
    Astuce

    Alternativement, vous pouvez appliquer le YAML suivant pour désactiver l’enregistrement de l’audit:

    kind: Namespace
    apiVersion: v1
    metadata:
      name: <namespace>
      annotations:
        k8s.ovn.org/acl-logging: null
    Copy to Clipboard Toggle word wrap

    Exemple de sortie

    namespace/verify-audit-logging annotated
    Copy to Clipboard Toggle word wrap

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