ANSIBLE_AWX

Compatible avec :

Ce document explique comment ingérer les journaux Ansible AWX dans Google Security Operations à l'aide de Bindplane. L'analyseur extrait les champs des journaux Ansible AWX au format JSON. Il utilise l'analyse JSON pour extraire les champs de journaux, puis mappe ces valeurs au modèle de données unifié (UDM). Il définit également les 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 un hôte Linux avec systemd.
  • Si vous exécutez l'agent derrière un proxy, assurez-vous que les ports de pare-feu sont ouverts conformément aux exigences de l'agent Bindplane.
  • 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 à Paramètres du 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 sur lequel 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 et enregistrez le numéro client de la section Informations sur l'organisation.

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 commandes 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 les 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 :
    • Trouvez le fichier config.yaml. Il se trouve généralement dans le répertoire /opt/observiq-otel-collector/ sous Linux ou C:Program FilesobservIQ OpenTelemetry Collector sous Windows.
    • Ouvrez le fichier à l'aide d'un éditeur de texte (par exemple, nano, vi ou le 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 le numéro 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émarrez 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 d'administration Ansible AWX.
  2. Accédez à Paramètres dans la barre de navigation.
  3. Sélectionnez Paramètres de journalisation dans les options Système.
  4. Fournissez les informations de configuration suivantes :
    • Agrégateur de journaux : saisissez l'adresse IP de l'agent Bindplane.
    • Port de l'agrégateur de journaux : saisissez le numéro de port de l'agent Bindplane (par exemple, 514).
    • Type d'agrégateur de journaux : sélectionnez Autre dans la liste.
    • Nom d'utilisateur de l'agrégateur de journaux : laissez ce champ vide (inutile pour syslog).
    • Mot de passe/jeton de l'agrégateur de journaux : laissez ce champ vide (non requis pour syslog).
    • Protocole de l'agrégateur de journaux : sélectionnez UDP (recommandé pour Syslog).
    • Seuil du niveau de l'agrégateur de journalisation : sélectionnez Info ou le niveau de journalisation de votre choix.
    • Activer la journalisation externe : cliquez sur le bouton bascule pour activer.
    • Enregistreurs pour envoyer des données à l'agrégateur de journaux : sélectionnez les types de journaux concernés :
      • 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 informations système
    • Enregistrer les faits de suivi du système individuellement : DÉSACTIVÉ (par défaut).
  5. Cliquez sur Enregistrer pour appliquer les paramètres.
  6. Facultatif : Cliquez sur 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 issue 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 issues du journal brut.
host.mac target.mac Valeurs de host.mac issues 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éfinissez 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 issue du journal brut, utilisée si event1_data.host n'est pas présent.
input.type network.ip_protocol Définie sur "TCP" si input.type est "tcp".
level security_result.severity Mappé en fonction de la valeur de level : "DEBUG", "INFO" et "AUDIT" correspondent à "INFORMATIONAL", "ERROR" correspond à "ERROR" et "WARNING" correspond à "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 issue 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 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 existent ; "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" selon le champ mappé. Codé en dur sur "VIRTUAL_MACHINE". Codé en dur sur "parent_uuid", "task" ou "task_uuid" selon le champ mappé. Codé en dur sur "codename" ou "os_name" selon le champ mappé.

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