ANSIBLE_AWX

Compatível com:

Este documento explica como ingerir registos do Ansible AWX no Google Security Operations através do Bindplane. O analisador extrai campos de registos do Ansible AWX formatados em JSON. Usa a análise JSON para extrair campos de registo e, em seguida, mapeia estes valores para o modelo de dados unificado (UDM). Também define valores de metadados predefinidos para a origem e o tipo do evento.

Antes de começar

Certifique-se de que tem os seguintes pré-requisitos:

  • Uma instância do Google SecOps.
  • Um anfitrião Windows 2016 ou posterior, ou um anfitrião Linux com systemd.
  • Se estiver a ser executado através de um proxy, certifique-se de que as portas da firewall estão abertas de acordo com os requisitos do agente Bindplane.
  • Acesso privilegiado à consola de gestão ou ao dispositivo Ansible AWX com autorizações de administrador.

Obtenha o ficheiro de autenticação de carregamento do Google SecOps

  1. Inicie sessão na consola Google SecOps.
  2. Aceda a Definições do SIEM > Agentes de recolha.
  3. Transfira o ficheiro de autenticação de carregamento. Guarde o ficheiro de forma segura no sistema onde o Bindplane vai ser instalado.

Obtenha o ID de cliente do Google SecOps

  1. Inicie sessão na consola Google SecOps.
  2. Aceda a Definições do SIEM > Perfil.
  3. Copie e guarde o ID do cliente da secção Detalhes da organização.

Instale o agente do Bindplane

Instale o agente do Bindplane no seu sistema operativo Windows ou Linux de acordo com as seguintes instruções.

Instalação do Windows

  1. Abra a Linha de comandos ou o PowerShell como administrador.
  2. Execute o seguinte comando:

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

Instalação do Linux

  1. Abra um terminal com privilégios de raiz ou sudo.
  2. Execute o seguinte comando:

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

Recursos de instalação adicionais

Para ver opções de instalação adicionais, consulte o guia de instalação.

Configure o agente Bindplane para carregar o Syslog e enviá-lo para o Google SecOps

  1. Aceda ao ficheiro de configuração:
    • Localize o ficheiro config.yaml. Normalmente, encontra-se no diretório /opt/observiq-otel-collector/ no Linux ou no diretório C:Program FilesobservIQ OpenTelemetry Collector no Windows.
    • Abra o ficheiro com um editor de texto (por exemplo, nano, vi ou Bloco de notas).
  2. Edite o ficheiro config.yaml da seguinte forma:

    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
    
    • Substitua a porta e o endereço IP conforme necessário na sua infraestrutura.
    • Substitua YOUR_CUSTOMER_ID pelo ID de cliente real.
    • Atualize /path/to/ingestion-authentication-file.json para o caminho onde o ficheiro de autenticação foi guardado no passo 1.

Reinicie o agente do Bindplane para aplicar as alterações

  • Para reiniciar o agente BindPlane no Linux, execute o seguinte comando:

    sudo systemctl restart observiq-otel-collector
    
  • Para reiniciar o agente Bindplane no Windows, pode usar a consola Serviços ou introduzir o seguinte comando:

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

Configure o registo externo no Ansible AWX

  1. Inicie sessão na consola de gestão do Ansible AWX.
  2. Aceda a Definições na barra de navegação.
  3. Selecione Definições de registo nas opções de Sistema.
  4. Indique os seguintes detalhes de configuração:
    • Agregador de registos: introduza o endereço IP do agente do Bindplane.
    • Porta do agregador de registos: introduza o número da porta do agente do Bindplane (por exemplo, 514).
    • Tipo de agregador de registos: selecione Outro na lista.
    • Nome de utilizador do agregador de registos: deixe em branco (não é necessário para o syslog).
    • Palavra-passe/token do agregador de registos: deixe em branco (não é necessário para o syslog).
    • Protocolo de agregação de registos: selecione UDP (recomendado para syslog).
    • Limite do nível do agregador de registos: selecione Informações ou o seu nível de registo preferido.
    • Ativar registo externo: clique no botão para ativar .
    • Registadores para enviar dados para o agregador de registos: selecione os tipos de registos relevantes:
      • awx: registos genéricos do servidor
      • activity_stream: registo de alterações a objetos do AWX
      • job_events: dados do módulo de callback do Ansible
      • system_tracking: factos do sistema e dados de configuração
    • Registar factos de monitorização do sistema individualmente: desative a opção (predefinição).
  5. Clique em Guardar para aplicar as definições.
  6. Opcional: clique em Testar para validar a ligação ao agente Bindplane.

Tabela de mapeamento do UDM

Campo de registo Mapeamento do UDM Lógica
agent.ephemeral_id observer.labels.value O valor de agent.ephemeral_id do registo não processado.
agent.hostname observer.hostname O valor de agent.hostname do registo não processado.
agent.id observer.asset_id Concatenação de "filebeat:" e o valor de agent.id do registo não processado.
agent.name observer.user.userid O valor de agent.name do registo não processado.
agent.type observer.application O valor de agent.type do registo não processado.
agent.version observer.platform_version O valor de agent.version do registo não processado.
cloud.availability_zone principal.resource.attribute.labels.value O valor de cloud.availability_zone do registo não processado.
cloud.instance.id principal.resource.product_object_id O valor de cloud.instance.id do registo não processado.
cloud.instance.name principal.resource.name O valor de cloud.instance.name do registo não processado.
cloud.machine.type principal.resource.attribute.labels.value O valor de cloud.machine.type do registo não processado.
cloud.provider principal.resource.attribute.labels.value O valor de cloud.provider do registo não processado.
event1 metadata.description O valor de event1 do registo não processado. Se event1 não estiver presente, é usado o valor de message.
event1_data.host principal.hostname O valor de event1_data.host do registo não processado.
event1_data.remote_addr principal.ip O endereço IP extraído de event1_data.remote_addr através de um padrão grok.
event1_data.task security_result.detection_fields.value O valor de event1_data.task do registo não processado.
event1_data.task_path principal.process.file.full_path O valor de event1_data.task_path do registo não processado.
event1_data.task_uuid security_result.detection_fields.value O valor de event1_data.task_uuid do registo não processado.
event1_data.uuid metadata.product_log_id O valor de event1_data.uuid do registo não processado.
event1_display security_result.description O valor de event1_display do registo não processado.
host principal.hostname O valor de host do registo não processado, usado se event1_data.host e host_name não estiverem presentes.
host.architecture target.asset.hardware.cpu_platform O valor de host.architecture do registo não processado.
host.fqdn target.administrative_domain O valor de host.fqdn do registo não processado.
host.hostname target.hostname O valor de host.hostname do registo não processado.
host.id target.asset.asset_id Concatenação de "Host Id: " e o valor de host.id do registo não processado.
host.ip target.asset.ip Os valores de host.ip do registo não processado.
host.mac target.mac Os valores de host.mac do registo não processado.
host.os.codename target.asset.attribute.labels.value O valor de host.os.codename do registo não processado.
host.os.kernel target.platform_patch_level O valor de host.os.kernel do registo não processado.
host.os.name target.asset.attribute.labels.value O valor de host.os.name do registo não processado.
host.os.platform target.platform Definido como "LINUX" se host.os.platform for "debian".
host.os.version target.platform_version O valor de host.os.version do registo não processado.
host_name principal.hostname O valor de host_name do registo não processado, usado se event1_data.host não estiver presente.
input.type network.ip_protocol Definido como "TCP" se input.type for "tcp".
level security_result.severity Mapeado com base no valor de level: "DEBUG", "INFO", "AUDIT" mapeiam para "INFORMATIONAL"; "ERROR" mapeia para "ERROR"; "WARNING" mapeia para "MEDIUM".
level security_result.severity_details O valor de level do registo não processado.
log.source.address principal.ip O endereço IP extraído de log.source.address através de um padrão grok.
log.source.address principal.port A porta extraída de log.source.address através de um padrão grok.
logger_name intermediary.application O valor de logger_name do registo não processado.
message metadata.description O valor de message do registo não processado, usado como alternativa se event1 não estiver presente.
parent_uuid security_result.detection_fields.value O valor de parent_uuid do registo não processado.
timestamp metadata.event_timestamp O valor de timestamp do registo não processado, analisado através do filtro de data. Determinado pela lógica: "NETWORK_CONNECTION" se log.source.address existir e host.ip existir no JSON; "STATUS_UPDATE" se principal_hostname ou event1_data.remote_addr existir; "GENERIC_EVENT" caso contrário. Codificado de forma rígida como "ANSIBLE_AWX". Codificado de forma rígida como "ANSIBLE_AWX". Codificado de forma rígida como "ANSIBLE_AWX". Codificado de forma rígida para "ephemeral_id". Codificado de forma rígida para "machine_type", "provider" ou "availability_zone", consoante o campo que está a ser mapeado. Codificado de forma rígida para "VIRTUAL_MACHINE". Codificado de forma rígida para "parent_uuid", "task" ou "task_uuid", consoante o campo que está a ser mapeado. Codificado de forma rígida como "codename" ou "os_name", consoante o campo que está a ser mapeado.

Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais da Google SecOps.