ANSIBLE_AWX

Compatível com:

Este documento explica como ingerir registros do Ansible AWX no Google Security Operations usando o Bindplane. O analisador extrai campos de registros do Ansible AWX formatados em JSON. Ele usa a análise JSON para extrair campos de registro e mapeia esses valores para o Modelo Unificado de Dados (UDM, na sigla em inglês). Ele também define valores de metadados padrão para a origem e o tipo do evento.

Antes de começar

Verifique se você tem os pré-requisitos a seguir:

  • Uma instância do Google SecOps.
  • Um host Windows 2016 ou mais recente ou Linux com systemd.
  • Se você estiver executando um proxy, verifique se as portas do firewall estão abertas de acordo com os requisitos do agente do Bindplane.
  • Acesso privilegiado ao console de gerenciamento ou appliance do Ansible AWX com permissões de administrador.

Receber o arquivo de autenticação de ingestão do Google SecOps

  1. Faça login no console do Google SecOps.
  2. Acesse Configurações do SIEM > Agentes de coleta.
  3. Baixe o arquivo de autenticação de ingestão. Salve o arquivo de forma segura no sistema em que o Bindplane será instalado.

Receber o ID do cliente do Google SecOps

  1. Faça login no console do Google SecOps.
  2. Acesse Configurações do SIEM > Perfil.
  3. Copie e salve o ID do cliente na seção Detalhes da organização.

Instalar o agente do BindPlane

Instale o agente do Bindplane no sistema operacional Windows ou Linux de acordo com as instruções a seguir.

Instalação do Windows

  1. Abra o Prompt de Comando ou o PowerShell como administrador.
  2. Execute este 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 root ou sudo.
  2. Execute este comando:

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

Outros recursos de instalação

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

Configurar o agente do Bindplane para ingerir o Syslog e enviar ao Google SecOps

  1. Acesse o arquivo de configuração:
    • Localize o arquivo config.yaml. Normalmente, ele fica no diretório /opt/observiq-otel-collector/ no Linux ou C:Program FilesobservIQ OpenTelemetry Collector no Windows.
    • Abra o arquivo usando um editor de texto (por exemplo, nano, vi ou Bloco de Notas).
  2. Edite o arquivo 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 do cliente real.
    • Atualize /path/to/ingestion-authentication-file.json para o caminho em que o arquivo de autenticação foi salvo na Etapa 1.

Reinicie o agente do Bindplane para aplicar as mudanças.

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

    sudo systemctl restart observiq-otel-collector
    
  • Para reiniciar o agente do Bindplane no Windows, use o console Serviços ou insira o seguinte comando:

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

Configurar o registro externo no Ansible AWX

  1. Faça login no Ansible AWX Management Console.
  2. Acesse Configurações na barra de navegação.
  3. Selecione Configurações de geração de registros nas opções de Sistema.
  4. Informe os seguintes detalhes de configuração:
    • Agregador de registros: insira o endereço IP do agente do Bindplane.
    • Porta do agregador de registros: insira o número da porta do agente do Bindplane (por exemplo, 514).
    • Tipo de agregador de registros: selecione Outro na lista.
    • Nome de usuário do agregador de registros: deixe em branco (não é necessário para o syslog).
    • Senha/token do agregador de registros: deixe em branco (não é necessário para syslog).
    • Protocolo do agregador de registros: selecione UDP (recomendado para syslog).
    • Limite do nível do agregador de geração de registros: selecione Informações ou seu nível de registro preferido.
    • Ativar o registro externo: clique no botão ATIVADO.
    • Loggers para enviar dados ao agregador de registros: selecione os tipos de registro relevantes:
      • awx: registros genéricos do servidor
      • activity_stream: registro de mudanças em objetos do AWX.
      • job_events: dados do módulo de callback do Ansible.
      • system_tracking: dados de configuração e fatos do sistema
    • Registrar fatos de rastreamento do sistema individualmente: alterne para DESATIVADO (padrão).
  5. Clique em Salvar para aplicar as configurações.
  6. Opcional: clique em Testar para verificar a conexão com o agente do Bindplane.

Tabela de mapeamento da UDM

Campo de registro Mapeamento do UDM Lógica
agent.ephemeral_id observer.labels.value O valor de agent.ephemeral_id do registro bruto.
agent.hostname observer.hostname O valor de agent.hostname do registro bruto.
agent.id observer.asset_id Concatenação de "filebeat:" e o valor de agent.id do registro bruto.
agent.name observer.user.userid O valor de agent.name do registro bruto.
agent.type observer.application O valor de agent.type do registro bruto.
agent.version observer.platform_version O valor de agent.version do registro bruto.
cloud.availability_zone principal.resource.attribute.labels.value O valor de cloud.availability_zone do registro bruto.
cloud.instance.id principal.resource.product_object_id O valor de cloud.instance.id do registro bruto.
cloud.instance.name principal.resource.name O valor de cloud.instance.name do registro bruto.
cloud.machine.type principal.resource.attribute.labels.value O valor de cloud.machine.type do registro bruto.
cloud.provider principal.resource.attribute.labels.value O valor de cloud.provider do registro bruto.
event1 metadata.description O valor de event1 do registro bruto. Se event1 não estiver presente, o valor de message será usado.
event1_data.host principal.hostname O valor de event1_data.host do registro bruto.
event1_data.remote_addr principal.ip O endereço IP extraído de event1_data.remote_addr usando um padrão grok.
event1_data.task security_result.detection_fields.value O valor de event1_data.task do registro bruto.
event1_data.task_path principal.process.file.full_path O valor de event1_data.task_path do registro bruto.
event1_data.task_uuid security_result.detection_fields.value O valor de event1_data.task_uuid do registro bruto.
event1_data.uuid metadata.product_log_id O valor de event1_data.uuid do registro bruto.
event1_display security_result.description O valor de event1_display do registro bruto.
host principal.hostname O valor de host do registro bruto, 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 registro bruto.
host.fqdn target.administrative_domain O valor de host.fqdn do registro bruto.
host.hostname target.hostname O valor de host.hostname do registro bruto.
host.id target.asset.asset_id Concatenação de "Host Id: " e o valor de host.id do registro bruto.
host.ip target.asset.ip Os valores de host.ip do registro bruto.
host.mac target.mac Os valores de host.mac do registro bruto.
host.os.codename target.asset.attribute.labels.value O valor de host.os.codename do registro bruto.
host.os.kernel target.platform_patch_level O valor de host.os.kernel do registro bruto.
host.os.name target.asset.attribute.labels.value O valor de host.os.name do registro bruto.
host.os.platform target.platform Defina como "LINUX" se host.os.platform for "debian".
host.os.version target.platform_version O valor de host.os.version do registro bruto.
host_name principal.hostname O valor de host_name do registro bruto, usado se event1_data.host não estiver presente.
input.type network.ip_protocol Defina 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 registro bruto.
log.source.address principal.ip O endereço IP extraído de log.source.address usando um padrão grok.
log.source.address principal.port A porta extraída de log.source.address usando um padrão grok.
logger_name intermediary.application O valor de logger_name do registro bruto.
message metadata.description O valor de message do registro bruto, usado como substituto se event1 não estiver presente.
parent_uuid security_result.detection_fields.value O valor de parent_uuid do registro bruto.
timestamp metadata.event_timestamp O valor de timestamp do registro bruto, analisado usando o filtro de data. Determinado pela lógica: "NETWORK_CONNECTION" se log.source.address e host.ip existirem no JSON; "STATUS_UPDATE" se principal_hostname ou event1_data.remote_addr existirem; "GENERIC_EVENT" caso contrário. Fixado no código como "ANSIBLE_AWX". Fixado no código como "ANSIBLE_AWX". Fixado no código como "ANSIBLE_AWX". Fixado no código como "ephemeral_id". Codificado como "machine_type", "provider" ou "availability_zone", dependendo do campo que está sendo mapeado. Fixado no código como "VIRTUAL_MACHINE". Codificado como "parent_uuid", "task" ou "task_uuid", dependendo do campo que está sendo mapeado. Codificado como "codename" ou "os_name", dependendo do campo que está sendo mapeado.

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