Coletar registros do Pharos

Com suporte em:

Este documento explica como ingerir registros do Pharos no Google Security Operations usando o Bindplane.

O Pharos é uma plataforma de gerenciamento de impressão local para rastrear, controlar e auditar atividades de impressão em ambientes empresariais. O Pharos Blueprint Enterprise armazena dados de jobs de impressão, atividade do usuário e eventos de dispositivos em um banco de dados do SQL Server.

Antes de começar

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

  • Uma instância do Google SecOps
  • Windows Server 2016 ou mais recente
  • Conectividade de rede entre o agente do Bindplane e o servidor do Pharos Blueprint
  • Se estiver executando em um proxy, verifique se as portas do firewall estão abertas de acordo com os requisitos do agente do Bindplane
  • Acesso administrativo ao servidor do Pharos Blueprint
  • Acesso ao banco de dados do Pharos SQL Server ou ao console de relatórios do Blueprint Administrator

Receber credenciais do Google SecOps para o agente do Bindplane

Para autenticar o agente do Bindplane no Google SecOps, escolha um dos seguintes métodos:

  • Novas implantações: use a API Chronicle (opção 1).
  • Implantações legadas: continue usando o arquivo de autenticação de ingestão (opção 2) até que a API Ingestion seja descontinuada em 20 de julho de 2027.
  1. Faça login no Google Cloud console e selecione o Google Cloud projeto vinculado à sua instância do Google SecOps.
  2. Acesse IAM e administrador > Contas de serviço.
  3. Clique em Criar conta de serviço.
  4. Informe os seguintes detalhes de configuração:
    • Nome da conta de serviço: digite um nome para a conta (por exemplo, bindplane-ingest).
    • Descrição da conta de serviço: digite uma descrição (por exemplo, Bindplane agent log ingestion).
  5. Clique em Criar e continuar.
  6. Na seção Conceder a essa conta de serviço acesso ao projeto, clique em Selecionar um papel e escolha Editor do Chronicle.
  7. Clique em Continuar e depois em Concluído.
  8. Clique na conta de serviço criada e acesse a guia Chaves.
  9. Selecione Adicionar chave > Criar nova chave.
  10. Selecione JSON e clique em Criar. O arquivo de chave é baixado para o seu computador.
  11. Salve o arquivo de chave como ingestion-auth.json no diretório do coletor do Bindplane (/opt/observiq-otel-collector/ingestion-auth.json no Linux ou C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json no Windows) ou atualize creds_file_path em config.yaml para corresponder ao caminho em que você o salva.
  12. Acesse IAM e administrador > Configurações e copie o Número do projeto. Você vai precisar dele para a configuração do exportador.

Opção 2: baixar o arquivo de autenticação de ingestão (legado)

  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.
  4. Salve o arquivo com segurança no sistema em que o agente do Bindplane será instalado.

Receber o ID de 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 de cliente na seção Detalhes da organização.

Instalar o agente do Bindplane

Instale o agente do Bindplane no sistema operacional Windows 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
    
  3. Aguarde a conclusão da instalação.

  4. Execute o seguinte comando para confirmar a instalação:

    sc query observiq-otel-collector
    

O serviço vai aparecer como EM EXECUÇÃO.

Recursos de instalação adicionais

Para mais opções de instalação e solução de problemas, consulte o Guia de instalação do agente do Bindplane.

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

  • Localize o arquivo de configuração

    notepad "C:\Program Files\observIQ OpenTelemetry Collector\config.yaml"
    

Editar o arquivo de configuração

  • Substitua todo o conteúdo de config.yaml pela seguinte configuração:

    receivers:
      filelog:
        include:
          - 'C:\Pharos\Exports\*.csv'
        start_at: beginning
        poll_interval: 5s
    
    exporters:
      chronicle/pharos:
        protocol: https
        # Region of your instance, for example us, europe, asia-southeast1
        location: <LOCATION>
        # Project number of the Google Cloud project linked to the instance
        project: '<PROJECT_NUMBER>'
        compression: gzip
        creds_file_path: 'C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json'
        customer_id: '<customer_id>'
        endpoint: chronicle.googleapis.com
        log_type: PHAROS
        raw_log_field: body
        ingestion_labels:
          env: production
    
    service:
      pipelines:
        logs/pharos_to_chronicle:
          receivers:
            - filelog
          exporters:
            - chronicle/pharos
    

Parâmetros de configuração

Substitua os seguintes marcadores de posição:

  • Configuração do receptor :

    • include: caminhos para arquivos de exportação do Pharos:
      • Windows: C:\Pharos\Exports\*.csv
      • Ajuste o caminho com base em onde você exporta os relatórios de atividade de impressão do Pharos
    • start_at: defina como beginning para ler os registros atuais ou end para ler apenas novas entradas
    • poll_interval: com que frequência verificar novos dados de registro (padrão: 5s)
  • Configuração do exportador :

    • pharos: nome descritivo do exportador
    • creds_file_path: caminho completo para o arquivo de chave JSON da conta de serviço (opção 1):
      • Windows: C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
    • <customer_id>: ID de cliente da etapa anterior
    • location: substitua <LOCATION> pela região da sua instância do Google SecOps (por exemplo, us, europe ou asia-southeast1). O exportador prefixa chronicle.googleapis.com com esse valor. Consulte Endpoints regionais para a lista completa.
    • project: substitua <PROJECT_NUMBER> pelo número do projeto em IAM e administrador > Configurações.
    • endpoint: mantenha definido como chronicle.googleapis.com.
    • PHAROS: tipo de registro exatamente como aparece no Chronicle
    • ingestion_labels: rótulos opcionais no formato YAML (por exemplo, env: production)
  • Configuração do pipeline :

    • pharos_to_chronicle: nome descritivo do pipeline

Exportador da API Ingestion legada

  • Se você usar o arquivo de autenticação de ingestão da opção 2, substitua o bloco exporters pelo seguinte. Defina creds_file_path como o caminho para o arquivo de autenticação de ingestão e, se a instância estiver fora dos EUA, substitua malachiteingestion-pa.googleapis.com pelo endpoint regional (por exemplo, europe-malachiteingestion-pa.googleapis.com).

    exporters:
      chronicle/pharos:
        compression: gzip
        creds_file_path: 'C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json'
        customer_id: '<customer_id>'
        endpoint: malachiteingestion-pa.googleapis.com
        log_type: PHAROS
        raw_log_field: body
        ingestion_labels:
          env: production
    

Salvar o arquivo de configuração

  • Depois de editar, salve o arquivo:
    • Windows: clique em Arquivo > Salvar

Reiniciar o agente do Bindplane para aplicar as mudanças

Para reiniciar o agente do Bindplane no Windows:

  1. Escolha uma das seguintes opções:

    • Prompt de comando ou PowerShell como administrador:
    net stop observiq-otel-collector && net start observiq-otel-collector
    
    • Console de serviços:
      1. Pressione Win+R, digite services.msc e pressione Enter.
      2. Localize o coletor do observIQ OpenTelemetry.
      3. Clique com o botão direito do mouse e selecione Reiniciar.
  2. Verifique se o serviço está em execução:

    sc query observiq-otel-collector
    
  3. Verifique se há erros nos registros:

    type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
    

Exportar registros de atividade de impressão do Pharos

O Pharos Blueprint Enterprise armazena dados de jobs de impressão em um banco de dados do SQL Server. É necessário exportar os dados para arquivos CSV que o agente do Bindplane possa ler.

Exportar dados de atividade de impressão do banco de dados do Pharos SQL

  1. No servidor do Pharos Blueprint, conecte-se ao banco de dados do Pharos SQL usando o SQL Server Management Studio ou uma ferramenta de linha de comando.
  2. Exporte os registros de atividade de impressão usando uma consulta SQL:

    sqlcmd -S <sql_server> -d Pharos -Q "SELECT * FROM PrintJobLog WHERE JobDate >= DATEADD(day, -1, GETDATE())" -o "C:\Pharos\Exports\pharos_print_jobs.csv" -s "," -W
    
  3. Programe a execução desse comando em intervalos regulares (por exemplo, a cada hora) usando o Agendador de tarefas do Windows para que o agente do Bindplane colete continuamente novos arquivos de exportação.

Alternativa: exportar relatórios do console de administração do Blueprint Administrator

  1. Abra o console do Pharos Blueprint Administrator.
  2. Navegue até Insights > Relatórios.
  3. Selecione o tipo de relatório desejado (por exemplo, atividade de impressão, atividade do usuário, atividade do dispositivo).
  4. Configure o período e os filtros.
  5. Exporte o relatório como um arquivo CSV para o diretório de exportação (por exemplo, `C:\Pharos\Exports`).

Tabela de mapeamento de UDM

Campo de registro Mapeamento de UDM Lógica
msg.Building, msg.DataSource, msg.FactSubType, msg.FactType, msg.JobId, msg.JobName, msg.JobTimeutc, msg.PostalCode, msg.VpnConnected, mtd.customer, mtd.slt.node, mtd.slt.pipeline, mtd.source.database, mtd.timestamp.producer_process additional.fields Mesclado com Building_label se msg.Building não estiver vazio, datasource_label se msg.DataSource não estiver vazio, factsubtype_label se msg.FactSubType não estiver vazio, facttype_label se msg.FactType não estiver vazio, jobid_label se msg.JobId não estiver vazio, jobname_label se msg.JobName não estiver vazio, jobtimeutc_label se msg.JobTimeutc não estiver vazio, postalcode_label se msg.PostalCode não estiver em ["", "Unknown"], vpnconnected_label se msg.VpnConnected não estiver vazio, customer_label se mtd.customer não estiver vazio, node_label se mtd.slt.node não estiver vazio, pipeline_label se mtd.slt.pipeline não estiver vazio, database_label se mtd.source.database não estiver vazio, producer_process_label se mtd.timestamp.producer_process não estiver vazio
metadata.event_type Definido como "STATUS_UPDATE" se has_principal for verdadeiro, caso contrário, "GENERIC_EVENT"
msg.Application principal.application Valor copiado diretamente se não estiver vazio
msg.HostName principal.asset.hostname Valor copiado diretamente se não estiver vazio
msg.IPAddress principal.asset.ip Valor copiado diretamente se não estiver em ["", "Unknown"]
msg.City principal.location.city Valor copiado diretamente se não estiver em ["", "Unknown"]
msg.Country principal.location.country_or_region Valor copiado diretamente se não estiver em ["", "Unknown"]
msg.State principal.location.state Valor copiado diretamente se não estiver em ["", "Unknown"]
msg.HostName principal.hostname Valor copiado diretamente se não estiver vazio
msg.IPAddress principal.ip Valor copiado diretamente se não estiver em ["", "Unknown"]
msg.UserDisplayName principal.user.user_display_name Valor copiado diretamente se não estiver vazio
mtd.source.host src.hostname Valor copiado diretamente se não estiver vazio
mtd.source.port src.port Valor copiado diretamente se não estiver em ["", "n/a"]
mtd.source.type src.resource.attribute.labels Mesclado com sourcetype_label se não estiver vazio
metadata.product_name Definido como "PHAROS"
metadata.vendor_name Definido como "PHAROS"

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