ANSIBLE_AWX
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
- Faça login no console do Google SecOps.
- Acesse Configurações do SIEM > Agentes de coleta.
- 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
- Faça login no console do Google SecOps.
- Acesse Configurações do SIEM > Perfil.
- 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
- Abra o Prompt de Comando ou o PowerShell como administrador.
Execute este comando:
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
Instalação do Linux
- Abra um terminal com privilégios de root ou sudo.
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
- Acesse o arquivo de configuração:
- Localize o arquivo
config.yaml
. Normalmente, ele fica no diretório/opt/observiq-otel-collector/
no Linux ouC:Program FilesobservIQ OpenTelemetry Collector
no Windows. - Abra o arquivo usando um editor de texto (por exemplo,
nano
,vi
ou Bloco de Notas).
- Localize o arquivo
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
- Faça login no Ansible AWX Management Console.
- Acesse Configurações na barra de navegação.
- Selecione Configurações de geração de registros nas opções de Sistema.
- 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 servidoractivity_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).
- Clique em Salvar para aplicar as configurações.
- 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.