Coletar registros do CyberArk

Versão do analisador: 8.0

Compatível com:

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

O CyberArk Privileged Access Manager (PAM) é uma solução de segurança de acesso privilegiado de nível empresarial que protege, gerencia e monitora contas e credenciais privilegiadas em ambientes locais e na nuvem. Ele oferece armazenamento de credenciais, isolamento e monitoramento de sessões, detecção de ameaças com o Privileged Threat Analytics (PTA) e registro de auditoria abrangente de todas as atividades privilegiadas.

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 ou host Linux com systemd
  • Conectividade de rede entre o agente do Bindplane e o servidor do CyberArk Vault
  • Se estiver em execução atrás de 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 CyberArk Vault (acesso à pasta de instalação Server\Conf)
  • CyberArk Vault versão 10.0 ou mais recente

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 desativada em 20 de julho de 2027.
  1. Faça login no console doGoogle Cloud e selecione o projeto do Google Cloud 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: insira um nome para a conta (por exemplo, bindplane-ingest).
    • Descrição da conta de serviço: insira 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 que você criou e acesse a guia Chaves.
  9. Clique em Adicionar chave > Criar nova chave.
  10. Selecione JSON e clique em Criar. O download do arquivo de chave é feito no 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 salvou.
  12. Acesse IAM e administrador > Configurações e copie o Número do projeto. Você vai precisar dele para configurar o exportador.

Opção 2: fazer o download do arquivo de autenticação de ingestão (legado)

  1. Faça login no console do Google SecOps.
  2. Acesse Configurações > Gerenciamento de dados > Agentes de coleta. Se você estiver em uma plataforma somente SIEM, acesse Configurações > Agentes de coleta.
  3. Faça o download do 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 > Administração > Perfil. Se você estiver em uma plataforma somente SIEM, acesse Configurações > 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 seu 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
    
  3. Aguarde a conclusão da instalação.

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

    sc query observiq-otel-collector
    

    O status do serviço precisa ser RUNNING.

Instalação do Linux

  1. Abra um terminal com privilégios de raiz 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
    
  3. Aguarde a conclusão da instalação.

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

    sudo systemctl status observiq-otel-collector
    

    O status do serviço precisa ser active (running).

Outros recursos de instalação

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 o syslog e enviá-lo ao Google SecOps

Localize o arquivo de configuração.

  • Linux:

    sudo nano /opt/observiq-otel-collector/config.yaml
    
  • Windows:

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

Editar o arquivo de configuração

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

    receivers:
      udplog:
        listen_address: "0.0.0.0:514"
    
    exporters:
      chronicle/cyberark:
        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: '/opt/observiq-otel-collector/ingestion-auth.json'
        customer_id: 'your-customer-id'
        endpoint: chronicle.googleapis.com
        log_type: CYBERARK
        raw_log_field: body
    
    service:
      pipelines:
        logs/cyberark_to_chronicle:
          receivers:
            - udplog
          exporters:
            - chronicle/cyberark
    
  2. Substitua os seguintes marcadores de posição:

    • Configuração do receptor:

      • listen_address: endereço IP e porta a serem detectados:

        • 0.0.0.0:514 para detectar todas as interfaces na porta 514 (requer raiz no Linux)
        • 0.0.0.0:1514 para detectar uma porta sem privilégios (recomendado para Linux não raiz)
      • Opções de tipo de receptor:

        • udplog para syslog UDP (padrão para o CyberArk Vault)
        • tcplog para syslog TCP
        • Use tcplog se o CyberArk Vault estiver configurado com SyslogServerProtocol=TCP.
    • Configuração do exportador:

      • creds_file_path: caminho completo para o arquivo de chave JSON da conta de serviço (opção 1):

        • Linux: /opt/observiq-otel-collector/ingestion-auth.json
        • Windows: C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
      • customer_id: ID de cliente do Google SecOps

      • 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 ver 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.

Exportador da API de ingestão 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/cyberark:
        compression: gzip
        creds_file_path: '/opt/observiq-otel-collector/ingestion-auth.json'
        customer_id: 'your-customer-id'
        endpoint: malachiteingestion-pa.googleapis.com
        log_type: CYBERARK
        raw_log_field: body
    

Salve o arquivo de configuração.

Depois de editar, salve o arquivo:

  • Linux: pressione Ctrl+O, depois Enter e, em seguida, Ctrl+X.
  • Windows: clique em Arquivo > Salvar.

Reinicie o agente do BindPlane para aplicar as mudanças:

  • Para reiniciar o agente do BindPlane no Linux:

    1. Execute este comando:

      sudo systemctl restart observiq-otel-collector
      
    2. Verifique se o serviço está sendo executado:

      sudo systemctl status observiq-otel-collector
      
    3. Verifique se há erros nos registros:

      sudo journalctl -u observiq-otel-collector -f
      
  • 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 OpenTelemetry da observIQ.
        3. Clique com o botão direito do mouse e selecione Reiniciar.
    2. Verifique se o serviço está sendo executado:

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

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

Configurar o encaminhamento de syslog do CyberArk

O CyberArk Vault envia eventos de auditoria em CEF (Common Event Format) por syslog. O servidor do Vault converte os registros de auditoria XML em mensagens CEF usando um arquivo de tradução XSL e os encaminha para o agente do Bindplane.

Configurar o servidor do Vault para enviar syslog

  1. Faça login na máquina host do servidor do CyberArk Vault com privilégios de administrador.
  2. Navegue até a pasta de instalação do servidor do CyberArk Vault (por exemplo, `C:\Program Files (x86)\PrivateArk\Server\Conf`).
  3. Abra o arquivo DBParm.ini em um editor de texto.
  4. Copie a seção [SYSLOG] do arquivo DBParm.sample.ini (localizado na mesma pasta) e cole-a na parte de baixo de DBParm.ini.
  5. Configure os seguintes parâmetros de syslog na seção [SYSLOG]:

    [SYSLOG]
    SyslogServerIP=<BINDPLANE_AGENT_IP>
    SyslogServerPort=514
    SyslogServerProtocol=UDP
    UseLegacySyslogFormat=No
    SyslogTranslatorFile=Syslog\Arcsight.sample.xsl
    SyslogMessageCodeFilter=0-999
    
  6. Substitua os seguintes valores:

    • SyslogServerIP: insira o endereço IP do host do agente do BindPlane (por exemplo, 192.168.1.100).
    • SyslogServerPort: insira a porta correspondente ao agente do BindPlane listen_address (por exemplo, 514).
    • SyslogServerProtocol: selecione o protocolo:

      • UDP para syslog UDP (padrão)
      • TCP para syslog TCP
    • SyslogTranslatorFile: insira o arquivo do tradutor XSL para o formato CEF:

      • Syslog\Arcsight.sample.xsl para saída CEF padrão (recomendado)
    • SyslogMessageCodeFilter: digite os códigos de mensagem a serem encaminhados:

      • 0-999 para encaminhar todos os eventos
      • Especifique códigos ou intervalos individuais (por exemplo, 1,2,3,5-10,30) para filtrar eventos específicos.
    • UseLegacySyslogFormat: defina como No para o formato RFC 5424.

  7. Salve o arquivo DBParm.ini.

  8. Reinicie o serviço PrivateArk Server:

    1. Abra os Serviços do Windows (services.msc).
    2. Localize o serviço CyberArk Vault Recuperação de Desastres e interrompa-o (se estiver em execução).
    3. Localize o serviço PrivateArk Server.
    4. Clique com o botão direito do mouse e selecione Reiniciar.
    5. Inicie o serviço CyberArk Vault Disaster Recovery novamente (se aplicável).

Encaminhar o syslog para vários destinos

  • Para encaminhar eventos de syslog do Vault para o agente do Bindplane e outros destinos (por exemplo, PTA), especifique vários endereços IP e arquivos de tradutor separados por vírgulas:

    SyslogServerIP=<BINDPLANE_AGENT_IP>,<PTA_SERVER_IP>
    SyslogTranslatorFile=Syslog\Arcsight.sample.xsl,Syslog\PTA.xsl
    

Configurar o encaminhamento de syslog do Privileged Threat Analytics (PTA) (opcional)

Se você também quiser encaminhar alertas de segurança da PTA para o Google SecOps, configure a integração do SIEM da PTA:

  1. Faça login no console do PVWA (Password Vault Web Access).
  2. Acesse Administration > Configuration Options > Privileged Threat Analytics.
  3. Na seção SIEM, configure o seguinte:
    • IP do servidor Syslog: insira o endereço IP do host do agente do BindPlane.
    • Porta do servidor Syslog: insira a porta correspondente à configuração do agente do BindPlane (por exemplo, 514).
    • Protocolo: selecione UDP ou TCP para corresponder ao receptor do agente do Bindplane.
    • Formato: selecione CEF.
  4. Clique em Salvar.

Arquivos de tradutor XSL disponíveis

  • A subpasta Syslog na pasta de instalação do servidor do CyberArk contém exemplos de arquivos de tradução XSL:

    Arquivo do tradutor Formatar Descrição
    Arcsight.sample.xsl CEF Formato CEF padrão (recomendado para o Google SecOps)
    SplunkCIM.xsl CIM Formato do modelo de informações comuns do Splunk
    PTA.xsl Personalizado Formato para encaminhamento ao CyberArk PTA
    XSIAM.xsl CEF Formato Palo Alto Cortex XSIAM

Verificar o encaminhamento do syslog

  1. Depois de reiniciar o serviço do PrivateArk Server, realize uma ação de teste no Vault (por exemplo, recupere uma senha ou faça login no PVWA).
  2. Verifique os registros do agente do BindPlane para ver as mensagens de syslog recebidas:
    • Linux: sudo journalctl -u observiq-otel-collector -f
    • Windows: type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
  3. Verifique se as mensagens formatadas em CEF aparecem nos registros, por exemplo:

    CEF:0|Cyber-Ark|Vault|10.0|22|CPM password retrieved|5|suser=Administrator src=10.0.0.1 fname=Root\operating system-server1-admin
    

Tabela de mapeamento de UDM

Campo de registro Mapeamento de UDM Lógica
RequestId_label additional.fields Mapeado como par de chave-valor
Category_label additional.fields Mapeado como par de chave-valor
ExtraDetails_label additional.fields Mapeado como par de chave-valor
CAPolicy_label additional.fields Mapeado como par de chave-valor
line_number_label additional.fields Mapeado como par de chave-valor
pasvc_action_label additional.fields Mapeado como par de chave-valor
control_socket_label additional.fields Mapeado como par de chave-valor
data_socket_label additional.fields Mapeado como par de chave-valor
timeout_label additional.fields Mapeado como par de chave-valor
vault_name_label additional.fields Mapeado como par de chave-valor
class_name_label additional.fields Mapeado como par de chave-valor
status_label additional.fields Mapeado como par de chave-valor
Publisher_Event additional.fields Mapeado como par de chave-valor
Last_Event additional.fields Mapeado como par de chave-valor
Total_Events additional.fields Mapeado como par de chave-valor
cs1_var additional.fields Mapeado como par de chave-valor
cs3_var additional.fields Mapeado como par de chave-valor
app_var additional.fields Mapeado como par de chave-valor
reason_var additional.fields Mapeado como par de chave-valor
cs5_var additional.fields Mapeado como par de chave-valor
cs4_var additional.fields Mapeado como par de chave-valor
_auth_mechanism extensions.auth.mechanism Mesclado diretamente
dvc intermediary.ip Se o valor corresponder ao padrão de endereço IP
EventName metadata.description Se o processo não corresponder ao padrão exe
agir metadata.description Se fname estiver vazio
EventMessage metadata.description Se act estiver vazio
LastEventDate metadata.event_timestamp Convertido usando o formato ISO8601 ou yyyy-MM-ddTHH:mm:ss
_temp_datetime metadata.event_timestamp Convertido usando o formato dd/MM/aaaa HH:mm:ss
datetime metadata.event_timestamp Convertido usando o formato ISO8601 ou MMM d HH:mm:ss
_event_type metadata.event_type Renomeado diretamente
nome metadata.event_type Definido com base nas condições: FILE_CREATION para "Armazenar arquivo", USER_LOGIN para "Login", NETWORK_CONNECTION se has_principal e has_target, FILE_UNCATEGORIZED se has_target_file_details, PROCESS_UNCATEGORIZED se has_target_process_details, STATUS_UPDATE se apenas has_principal, NETWORK_UNCATEGORIZED se app_error, has_principal e has_target, caso contrário, GENERIC_EVENT
EventType metadata.product_event_type Mapeado diretamente
signature_id, name metadata.product_event_type Concatenado de signature_id e name
LastEventID metadata.product_log_id Convertido em string
tid metadata.product_log_id Mapeado diretamente
produto metadata.product_name Renomeado diretamente
versão metadata.product_version Renomeado diretamente
fornecedor metadata.vendor_name Renomeado diretamente
host observer.hostname Mapeado diretamente
LastEventUserName principal.administrative_domain Extraído usando o padrão grok domain\user
ApplicationType principal.application Mapeado diretamente
shost principal.asset.hostname Se o valor não corresponder ao padrão de endereço IP
shost principal.asset.hostname Alternativa se dhost estiver vazio
shost principal.asset.ip Se o valor corresponder ao padrão de endereço IP
src principal.asset.ip Mapeado diretamente
ip_address principal.asset.ip Mapeado diretamente
shost principal.asset.ip Alternativa se dhost estiver vazio
shost principal.ip Se o valor corresponder ao padrão de endereço IP, mesclado
src principal.ip Mesclado diretamente
ip_address principal.ip Mesclado diretamente
Local principal.location.name Mapeado diretamente
LastEventSourceName principal.platform Defina como WINDOWS se o valor corresponder ao padrão do Windows
EventName principal.process.command_line Se o processo corresponder ao padrão exe
LastEventPackageName principal.resource.name Se o valor não for EventName
ApplicationType principal.user.attribute.roles Defina como ADMINISTRATOR se o valor for igual a AdminTask.
LastEventUserName principal.user.user_display_name Parte do usuário do domínio extraída usando o padrão grok domain\user
user_name principal.user.user_display_name Mapeado diretamente
SourceUser principal.user.userid Mapeado diretamente
suser principal.user.userid Se o evento não for do tipo USER_
usrName principal.user.userid Mapeado diretamente
_action security_result.action Mesclado diretamente
nome security_result.action Defina como BLOCK se o valor começar com "Failure" ou "Failed". Caso contrário, defina como ALLOW.
msg security_result.description Mapeado diretamente
msg, reason security_result.description Concatenado de msg e reason se houver condição de falha
_sec_result_description security_result.description Mapeado diretamente
PolicyName security_result.rule_name Mapeado diretamente
cs2 security_result.rule_name Mapeado diretamente
gravidade, security_result.severity Defina como LOW se o valor for <= 5, MEDIUM se o valor for <= 8, HIGH caso contrário
sev security_result.severity Mapeado diretamente
sev security_result.severity_details Mapeado diretamente
Motivo security_result.summary Mapeado diretamente
nome security_result.summary Mapeado diretamente
dhost target.asset.hostname Se o valor não corresponder ao padrão de endereço IP
shost target.asset.hostname Alternativa se dhost estiver vazio
dhost target.asset.ip Se o valor corresponder ao padrão de endereço IP
GatewayStation target.asset.ip Mapeado diretamente
shost target.asset.ip Alternativa se dhost estiver vazio
FileQualifier target.asset_id Com o prefixo "código do recurso:" e convertido em string
Arquivo target.file.full_path Mapeado diretamente
file_path target.file.full_path Mapeado diretamente
LastEventSourceName target.file.full_path Se o valor começar com "C:"
fname target.file.full_path Mapeado diretamente
Hash target.file.sha1 O prefixo "SHA1##" foi removido, e o valor foi convertido em letras minúsculas, se o tipo for SHA1.
GatewayStation target.ip Mesclado diretamente
pid target.process.pid Convertido em string
Seguro target.resource.name Mapeado diretamente
user_name target.user.user_display_name Mapeado diretamente
TargetUser target.user.userid Mapeado diretamente
duser target.user.userid Mapeado diretamente
suser target.user.userid Se o evento for do tipo USER_
event_msg.created event.idm.read_only_udm.metadata.collected_timestamp Mapeado do registro de alterações
datetime event.idm.read_only_udm.metadata.event_timestamp Mapeado do registro de alterações
Issuer event.idm.read_only_udm.principal.application Mapeado do registro de alterações
Message event.idm.read_only_udm.security_result.description Mapeado do registro de alterações
Station event.idm.read_only_udm.principal.ip, event.idm.read_only_udm.principal.asset.ip Mapeado do registro de alterações
MessageID event.idm.read_only_udm.metadata.product_log_id Mapeado do registro de alterações
Safe event.idm.read_only_udm.target.resource.name Mapeado do registro de alterações
Version event.idm.read_only_udm.metadata.product_version Mapeado do registro de alterações
usrName event.idm.read_only_udm.principal.user.userid Mapeado do registro de alterações
src event.idm.read_only_udm.principal.ip e event.idm.read_only_udm.principal.asset.ip Mapeado do registro de alterações
GatewayStation event.idm.read_only_udm.target.ip e event.idm.read_only_udm.target.asset.ip Mapeado do registro de alterações
Reason event.idm.read_only_udm.security_result.summary Mapeado do registro de alterações
Location event.idm.read_only_udm.principal.location.name Mapeado do registro de alterações
File event.idm.read_only_udm.target.file.full_path Mapeado do registro de alterações
RequestId security_result.detection_fields Mapeado do registro de alterações
sev event.idm.read_only_udm.security_result Mapeado do registro de alterações
Category event.idm.read_only_udm.additional.fields Mapeado do registro de alterações
ExtraDetails event.idm.read_only_udm.additional.fields Mapeado do registro de alterações
CAPolicy event.idm.read_only_udm.additional.fields Mapeado do registro de alterações
status event.idm.read_only_udm.additional.fields Mapeado do registro de alterações
class_name event.idm.read_only_udm.additional.fields Mapeado do registro de alterações
vault_name event.idm.read_only_udm.additional.fields Mapeado do registro de alterações
timeout event.idm.read_only_udm.additional.fields Mapeado do registro de alterações
data_socket event.idm.read_only_udm.additional.fields Mapeado do registro de alterações
control_socket event.idm.read_only_udm.additional.fields Mapeado do registro de alterações
pasvc_action event.idm.read_only_udm.additional.fields Mapeado do registro de alterações
line_number event.idm.read_only_udm.additional.fields Mapeado do registro de alterações
ip_address event.idm.read_only_udm.principal.ip e event.idm.read_only_udm.principal.asset.ip Mapeado do registro de alterações
file_path event.idm.read_only_udm.target.file.full_path Mapeado do registro de alterações
tid event.idm.read_only_udm.metadata.product_log_id Mapeado do registro de alterações
pid event.idm.read_only_udm.target.process.pid Mapeado do registro de alterações
EventMessage event.idm.read_only_udm.metadata.description Mapeado do registro de alterações
SourceUser event.idm.read_only_udm.principal.user.userid Mapeado do registro de alterações
TargetUser event.idm.read_only_udm.target.user.userid Mapeado do registro de alterações
user_name event.idm.read_only_udm.target.user.user_display_name Mapeado do registro de alterações
host event.idm.read_only_udm.observer.hostname Mapeado do registro de alterações

Registro de alterações

Confira o registro de alterações deste analisador

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