ANSIBLE_AWX

Compatible avec :

Ce document explique comment ingérer des journaux Ansible AWX dans Google Security Operations à l'aide de Bindplane. L'analyseur extrait des champs à partir des journaux Ansible AWX au format JSON. Il utilise l'analyse JSON pour extraire les champs de journal, puis mappe ces valeurs au modèle de données unifié (UDM). Il définit également des valeurs de métadonnées par défaut pour la source et le type d'événement.

Avant de commencer

Assurez-vous de remplir les conditions suivantes :

  • Une instance Google SecOps.
  • Un hôte Windows 2016 ou version ultérieure, ou Linux avec systemd.
  • Si vous exécutez l'application derrière un proxy, assurez-vous que les ports de pare-feu sont ouverts conformément aux exigences de l'agent Bindplane.
  • Un accès privilégié à la console de gestion ou à l'appliance Ansible AWX avec des autorisations d'administrateur.

Obtenir le fichier d'authentification d'ingestion Google SecOps

  1. Connectez-vous à la console Google SecOps.
  2. Accédez à SIEM Settings > Collection Agents (Paramètres SIEM > Agents de collecte).
  3. Téléchargez le fichier d'authentification d'ingestion. Enregistrez le fichier de manière sécurisée sur le système où Bindplane sera installé.

Obtenir l'ID client Google SecOps

  1. Connectez-vous à la console Google SecOps.
  2. Accédez à Paramètres SIEM > Profil.
  3. Copiez l'ID client dans la section Organization Details (Informations sur l'organisation) et enregistrez-le.

Installer l'agent Bindplane

Installez l'agent Bindplane sur votre système d'exploitation Windows ou Linux en suivant les instructions ci-dessous.

Installation de fenêtres

  1. Ouvrez l'invite de commande ou PowerShell en tant qu'administrateur.
  2. Exécutez la commande suivante :

    msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
    

Installation de Linux

  1. Ouvrez un terminal avec des droits root ou sudo.
  2. Exécutez la commande suivante :

    sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
    

Ressources d'installation supplémentaires

Pour plus d'options d'installation, consultez le guide d'installation.

Configurer l'agent Bindplane pour ingérer Syslog et l'envoyer à Google SecOps

  1. Accédez au fichier de configuration :
    • Recherchez le fichier config.yaml. En règle générale, il se trouve dans le répertoire /opt/observiq-otel-collector/ sous Linux ou dans le répertoire C:Program FilesobservIQ OpenTelemetry Collector sous Windows.
    • Ouvrez le fichier à l'aide d'un éditeur de texte (par exemple, nano, vi ou Bloc-notes).
  2. Modifiez le fichier config.yaml comme suit :

    receivers:
    udplog:
        # Using high port to avoid requiring root privileges
        listen_address: "0.0.0.0:514"
    
    exporters:
    chronicle/awx:
        endpoint: malachiteingestion-pa.googleapis.com
        creds_file_path: '/path/to/ingestion-authentication-file.json'
        customer_id: YOUR_CUSTOMER_ID
        log_type: 'ANSIBLE_AWX'
        raw_log_field: body
    
    service:
    pipelines:
        logs/awx:
        receivers:
            - udplog
        exporters:
            - chronicle/awx
    
    • Remplacez le port et l'adresse IP selon les besoins de votre infrastructure.
    • Remplacez YOUR_CUSTOMER_ID par l'ID client réel.
    • Mettez à jour /path/to/ingestion-authentication-file.json avec le chemin d'accès où le fichier d'authentification a été enregistré à l'étape 1.

Redémarrer l'agent Bindplane pour appliquer les modifications

  • Pour redémarrer l'agent Bindplane sous Linux, exécutez la commande suivante :

    sudo systemctl restart observiq-otel-collector
    
  • Pour redémarrer l'agent Bindplane sous Windows, vous pouvez utiliser la console Services ou saisir la commande suivante :

    sc stop observiq-otel-collector && sc start observiq-otel-collector
    

Configurer la journalisation externe sur Ansible AWX

  1. Connectez-vous à la console de gestion Ansible AWX.
  2. Dans la barre de navigation, accédez à Settings (Paramètres).
  3. Sélectionnez Logging settings (Paramètres de journalisation) dans les options System (Système).
  4. Fournissez les informations de configuration suivantes :
    • Logging Aggregator (Agrégateur de journalisation) : saisissez l'adresse IP de l'agent Bindplane.
    • Logging Aggregator Port (Port de l'agrégateur de journalisation) : saisissez le numéro de port de l'agent Bindplane (par exemple, 514).
    • Logging Aggregator Type (Type d'agrégateur de journalisation) : sélectionnez Other (Autre) dans la liste.
    • Logging Aggregator Username (Nom d'utilisateur de l'agrégateur de journalisation) : laissez ce champ vide (non requis pour Syslog).
    • Logging Aggregator Password/Token (Mot de passe/jeton de l'agrégateur de journalisation) : laissez ce champ vide (non requis pour Syslog).
    • Logging Aggregator Protocol (Protocole de l'agrégateur de journalisation) : sélectionnez UDP (recommandé pour Syslog).
    • Logging Aggregator Level Threshold (Seuil de niveau de l'agrégateur de journalisation) : sélectionnez Info ou le niveau de journalisation de votre choix.
    • Enable External Logging (Activer la journalisation externe) : cliquez sur le bouton ON (Activé).
    • Loggers to Send Data to the Log Aggregator (Enregistreurs pour envoyer des données à l'agrégateur de journaux) : sélectionnez les types de journaux pertinents :
      • awx : journaux de serveur génériques
      • activity_stream : enregistrement des modifications apportées aux objets AWX
      • job_events : données du module de rappel Ansible
      • system_tracking : données de configuration et faits système
    • Log System Tracking Facts Individually (Enregistrer les faits de suivi du système individuellement) : désactivez cette option en cliquant sur le bouton OFF (Désactivé) (par défaut).
  5. Cliquez sur Save (Enregistrer) pour appliquer les paramètres.
  6. Facultatif : cliquez sur Test (Tester) pour vérifier la connexion à l'agent Bindplane.

Table de mappage UDM

Champ du journal Mappage UDM Logique
agent.ephemeral_id observer.labels.value Valeur de agent.ephemeral_id à partir du journal brut.
agent.hostname observer.hostname Valeur de agent.hostname à partir du journal brut.
agent.id observer.asset_id Concaténation de "filebeat:" et de la valeur de agent.id à partir du journal brut.
agent.name observer.user.userid Valeur de agent.name à partir du journal brut.
agent.type observer.application Valeur de agent.type à partir du journal brut.
agent.version observer.platform_version Valeur de agent.version à partir du journal brut.
cloud.availability_zone principal.resource.attribute.labels.value Valeur de cloud.availability_zone à partir du journal brut.
cloud.instance.id principal.resource.product_object_id Valeur de cloud.instance.id à partir du journal brut.
cloud.instance.name principal.resource.name Valeur de cloud.instance.name à partir du journal brut.
cloud.machine.type principal.resource.attribute.labels.value Valeur de cloud.machine.type à partir du journal brut.
cloud.provider principal.resource.attribute.labels.value Valeur de cloud.provider à partir du journal brut.
event1 metadata.description Valeur de event1 à partir du journal brut. Si event1 n'est pas présent, la valeur de message est utilisée.
event1_data.host principal.hostname Valeur de event1_data.host à partir du journal brut.
event1_data.remote_addr principal.ip Adresse IP extraite de event1_data.remote_addr à l'aide d'un modèle grok.
event1_data.task security_result.detection_fields.value Valeur de event1_data.task à partir du journal brut.
event1_data.task_path principal.process.file.full_path Valeur de event1_data.task_path à partir du journal brut.
event1_data.task_uuid security_result.detection_fields.value Valeur de event1_data.task_uuid à partir du journal brut.
event1_data.uuid metadata.product_log_id Valeur de event1_data.uuid à partir du journal brut.
event1_display security_result.description Valeur de event1_display à partir du journal brut.
host principal.hostname Valeur de host à partir du journal brut, utilisée si event1_data.host et host_name ne sont pas présents.
host.architecture target.asset.hardware.cpu_platform Valeur de host.architecture à partir du journal brut.
host.fqdn target.administrative_domain Valeur de host.fqdn à partir du journal brut.
host.hostname target.hostname Valeur de host.hostname à partir du journal brut.
host.id target.asset.asset_id Concaténation de "Host Id: " et de la valeur de host.id à partir du journal brut.
host.ip target.asset.ip Valeurs de host.ip à partir du journal brut.
host.mac target.mac Valeurs de host.mac à partir du journal brut.
host.os.codename target.asset.attribute.labels.value Valeur de host.os.codename à partir du journal brut.
host.os.kernel target.platform_patch_level Valeur de host.os.kernel à partir du journal brut.
host.os.name target.asset.attribute.labels.value Valeur de host.os.name à partir du journal brut.
host.os.platform target.platform Défini sur "LINUX" si host.os.platform est "debian".
host.os.version target.platform_version Valeur de host.os.version à partir du journal brut.
host_name principal.hostname Valeur de host_name à partir du journal brut, utilisée si event1_data.host n'est pas présent.
input.type network.ip_protocol Défini sur "TCP" si input.type est "tcp".
level security_result.severity Mappé en fonction de la valeur de level : "DEBUG", "INFO" et "AUDIT" sont mappés sur "INFORMATIONAL" ; "ERROR" est mappé sur "ERROR" ; "WARNING" est mappé sur "MEDIUM".
level security_result.severity_details Valeur de level à partir du journal brut.
log.source.address principal.ip Adresse IP extraite de log.source.address à l'aide d'un modèle grok.
log.source.address principal.port Port extrait de log.source.address à l'aide d'un modèle grok.
logger_name intermediary.application Valeur de logger_name à partir du journal brut.
message metadata.description Valeur de message à partir du journal brut, utilisée comme solution de repli si event1 n'est pas présent.
parent_uuid security_result.detection_fields.value Valeur de parent_uuid à partir du journal brut.
timestamp metadata.event_timestamp Valeur de timestamp à partir du journal brut, analysée à l'aide du filtre de date. Déterminé par la logique : "NETWORK_CONNECTION" si log.source.address et host.ip existent dans le JSON ; "STATUS_UPDATE" si principal_hostname ou event1_data.remote_addr existe ; "GENERIC_EVENT" sinon. Codé en dur sur "ANSIBLE_AWX". Codé en dur sur "ANSIBLE_AWX". Codé en dur sur "ANSIBLE_AWX". Codé en dur sur "ephemeral_id". Codé en dur sur "machine_type", "provider" ou "availability_zone" en fonction du champ mappé. Codé en dur sur "VIRTUAL_MACHINE". Codé en dur sur "parent_uuid", "task" ou "task_uuid" en fonction du champ mappé. Codé en dur sur "codename" ou "os_name" en fonction du champ mappé.

Vous avez encore besoin d'aide ? Obtenez des réponses auprès des membres de la communauté et des professionnels Google SecOps.