Coletar registros do Skyhigh Security

Compatível com:

Neste documento, explicamos como ingerir registros do Skyhigh Security (antigo McAfee Skyhigh CASB) no Google Security Operations usando o Bindplane. O analisador transforma registros de um formato SYSLOG + KV em um modelo de dados unificado (UDM). Primeiro, ele normaliza a mensagem de registro em pares de chave-valor e mapeia os campos extraídos para os atributos correspondentes da UDM no objeto event.idm.read_only_udm, categorizando o tipo de evento com base na presença e nos valores de campos específicos.

Antes de começar

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

  • Instância do Google SecOps
  • Um host Windows 2016 ou mais recente ou Linux com systemd
  • Se estiver executando por trás de um proxy, as portas do firewall estarão abertas.
  • Instalou e configurou o Skyhigh Cloud Connector
  • Acesso privilegiado ao conector da nuvem do Skyhigh Security

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 /etc/bindplane-agent/ no Linux ou no diretório de instalação 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:
            # Replace the port and IP address as required
            listen_address: "0.0.0.0:514"
    
    exporters:
        chronicle/chronicle_w_labels:
            compression: gzip
            # Adjust the path to the credentials file you downloaded in Step 1
            creds_file_path: '/path/to/ingestion-authentication-file.json'
            # Replace with your actual customer ID from Step 2
            customer_id: <customer_id>
            endpoint: malachiteingestion-pa.googleapis.com
            # Add optional ingestion labels for better organization
            log_type: 'MCAFEE_SKYHIGH_CASB'
            raw_log_field: body
            ingestion_labels:
    
    service:
        pipelines:
            logs/source0__chronicle_w_labels-0:
                receivers:
                    - udplog
                exporters:
                    - chronicle/chronicle_w_labels
    
    • Substitua a porta e o endereço IP conforme necessário na sua infraestrutura.
    • Substitua <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 seção Receber arquivo de autenticação de ingestão do Google SecOps.

Reinicie o agente do Bindplane para aplicar as mudanças

  1. Para reiniciar o agente do Bindplane em Linux, execute o seguinte comando:

    sudo systemctl restart bindplane-agent
    
  2. Para reiniciar o agente do Bindplane no Windows, use o console Serviços ou insira o seguinte comando:

    net stop BindPlaneAgent && net start BindPlaneAgent
    

Pré-requisitos antes de fazer o download do cliente do Logging

Verifique se você tem os seguintes detalhes:

  1. Privilégio de usuário do Google Analytics de uso: sua conta precisa ter a função de usuários do Google Analytics de uso.
  2. ID do cliente: siga estas etapas para encontrar seu ID do cliente no Skyhigh CASB:
    • Faça login no Skyhigh CASB.
    • Acesse Configurações > Infraestrutura > Gerenciamento de proxy do cliente.
    • Clique em Configuração global > Autenticação do locatário.
    • Em Configurações globais, encontre seu ID do cliente.
  3. Endereço de e-mail e senha: suas credenciais de login (ou da conta de serviço dedicada). Se você fizer login usando SAML sem enviar uma senha, não será possível instalar o cliente de geração de registros.

Fazer o download e instalar o cliente de geração de registros do Skyhigh

  1. Faça o download do cliente de geração de registros para uma instância dedicada.
  2. Instale o cliente do Logging. Se necessário, descompacte o arquivo EXE baixado.
  3. Depois que a instalação for concluída, abra o cliente de geração de registros.
  4. Na página Configuração, forneça os seguintes detalhes de configuração:
    1. ID do cliente: insira o ID do cliente do Skyhigh CASB que você recebeu na etapa anterior.
    2. Serviço: selecione SSE se você estiver usando o Skyhigh SSE ou WGCS se estiver usando este produto com o Trellix ePO.
    3. Região: escolha um código regional ou de país, dependendo de onde seus dados estão armazenados:
      • UE — União Europeia
      • IN — Índia
      • SG — Singapura
      • UE — Emirados Árabes Unidos
      • UK — Reino Unido
      • US — Estados Unidos
    4. Nome: insira o nome de usuário, que geralmente é o endereço de e-mail usado para fazer login no Secure Web Gateway ou em uma instância dedicada.
    5. Senha: digite a senha que você usa para fazer login no Secure Web Gateway. Se você fizer login com SAML, não poderá usar o cliente de geração de registros.
    6. Versão da API: insira version 13.
    7. Tipo de registro: é possível baixar diferentes tipos de registros, incluindo aqueles com dados originados da Web, do isolamento de navegador remoto (RBI, na sigla em inglês), do acesso particular e do Cloud Firewall.
    8. Selecione Enviar como Syslogs e forneça os seguintes detalhes de configuração:
      • Host do cliente Syslog: insira o endereço IP do agente do Bindplane.
      • Porta do cliente Syslog: insira o número da porta do agente Bindplane.
      • Transporte: selecione UDP ou TCP, dependendo da configuração do agente do Bindplane.

Tabela de mapeamento da UDM

Campo de registro Mapeamento da UDM Lógica
EventReceivedTime metadata.event_timestamp Convertido para carimbo de data/hora do formato yyyy-MM-dd HH:mm:ss
FileSize target.file.size Mapeado diretamente, convertido para uinteger
Nome do host principal.hostname Mapeado diretamente
MessageSourceAddress principal.ip Mapeado diretamente, mesclado se houver várias instâncias
Gravidade additional.fields.value.string_value (chave: SEVERITY) Mapeado diretamente
SeverityValue additional.fields.value.string_value (chave: SEVERITY_VALUE) Mapeado diretamente
SourceModuleName additional.fields.value.string_value (chave: SOURCE_MODULE_NAME) Mapeado diretamente
SourceModuleType principal.resource.resource_subtype Mapeado diretamente
SyslogFacility security_result.about.resource.attribute.labels.value (key: SYSLOG_FACILITY) Mapeado diretamente
SyslogFacilityValue security_result.about.resource.attribute.labels.value (key: SYSLOG_FACILITY_VALUE) Mapeado diretamente
SyslogSeverity security_result.about.resource.attribute.labels.value (key: SYSLOG_SEVERITY) Mapeado diretamente
SyslogSeverityValue security_result.about.resource.attribute.labels.value (key: SYSLOG_SEVERITY_VALUE) Mapeado diretamente
activityName metadata.product_event_type Mapeado diretamente, colchetes removidos
actorId principal.user.userid Mapeado diretamente, também adicionado a "email_addresses" se for um e-mail
actorIdType principal.user.attribute.roles.name Mapeado diretamente
collaborationSharedLink security_result.about.resource.attribute.labels.value (chave: COLLABORATION_SHARED_LINK) Mapeado diretamente
contentItemId target.file.full_path (se contentItemType for FILE) Mapeado diretamente, aspas removidas
contentItemId target.url (se contentItemType for SAAS_RESOURCE) Mapeado diretamente, aspas removidas
contentItemHierarchy additional.fields.value.string_value (key: CONTENT_ITEM_HIERARCHY) Mapeado diretamente, aspas removidas
contentItemName target.resource.name Mapeado diretamente, aspas removidas
contentItemType additional.fields.value.string_value (key: CONTENT_ITEM_TYPE) Mapeado diretamente
incidentGroup security_result.detection_fields.value (chave: INCIDENT_GROUP) Mapeado diretamente
incidentId metadata.product_log_id Mapeado diretamente
incidentRiskScore security_result.detection_fields.value (key: INCIDENT_RISK_SCORE) Mapeado diretamente
incidentRiskSeverityId Usado em combinação com "riskSeverity" para determinar "security_result.severity".
informationAccountId target.resource.product_object_id Mapeado diretamente
informationAnomalyCategory security_result.category_details Mapeado diretamente, aspas removidas
informationAnomalyCause security_result.detection_fields.value (key: INFO_ANOMALY_CAUSE) Mapeado diretamente, aspas removidas
informationCategory security_result.category_details Mapeado diretamente
informationConfigType additional.fields.value.string_value (key: INFORMATION_CONFIG_TYPE) Mapeado diretamente, aspas removidas
informationContentItemParent target.resource.parent Mapeado diretamente, aspas removidas
informationEventId additional.fields.value.string_value (chave: INFORMATION_EVENT_ID) Mapeado diretamente
informationExternalCollaboratorsCount additional.fields.value.string_value (key: INFORMATION_COLLAB_COUNT) Mapeado diretamente
informationFileTypes additional.fields.value.list_value.values.string_value (key: FILE_TYPE) Extraído de uma string semelhante a JSON, com colchetes e aspas removidos
informationLastExecutedResponseLabel additional.fields.value.string_value (chave: INFORMATION_LAST_RESPONSE) Mapeado diretamente
informationScanName metadata.description Mapeado diretamente, aspas removidas
informationScanRunDate Não mapeado para UDM
informationSource additional.fields.value.string_value (chave: INFORMATION_SOURCE) Mapeado diretamente
informationUniqueMatchCount additional.fields.value.string_value (chave: INFORMATION_UNQ_MATCH_COUNT) Mapeado diretamente
informationUserAttributesSAMAccountName principal.user.user_display_name Mapeado diretamente, colchetes removidos
instanceId principal.resource.product_object_id Mapeado diretamente
instanceName principal.resource.name Mapeado diretamente, aspas removidas
policyId security_result.rule_id Mapeado diretamente
policyName security_result.summary Mapeado diretamente, aspas removidas
resposta Usado para determinar security_result.action (ALLOW ou BLOCK)
riskSeverity Usado em combinação com incidentRiskSeverityId para determinar security_result.severity, convertido para maiúsculas.
serviceNames target.application Mapeamento direto, colchetes, aspas e espaços extras removidos
sourceIps principal.ip Extraído de uma string semelhante a JSON, mesclado se houver várias instâncias
status additional.fields.value.string_value (chave: STATUS) Mapeado diretamente
threatCategory security_result.threat_name Mapeado diretamente, aspas removidas
totalMatchCount security_result.detection_fields.value (key: TOTAL_MATCH_COUNT) Mapeado diretamente
N/A metadata.vendor_name MCAFEE: valor estático
N/A metadata.product_name MCAFEE_SKYHIGH_CASB: valor estático
N/A metadata.log_type MCAFEE_SKYHIGH_CASB: valor estático
N/A principal.resource.type VIRTUAL_MACHINE: definido se instanceName ou instanceId estiverem presentes
N/A metadata.event_type Determinado com base em um conjunto de condições:
- USER_RESOURCE_UPDATE_CONTENT se actorId, contentItemId ou contentItemName estiverem presentes
- USER_UNCATEGORIZED se actorId e target estiverem presentes
- STATUS_UPDATE se Hostname ou MessageSourceAddress estiverem presentes
- GENERIC_EVENT caso contrário
N/A security_result.severity Determinado com base na combinação de riskSeverity e incidentRiskSeverityId:
- LOW se riskSeverity for LOW e incidentRiskSeverityId for 0
- MEDIUM se riskSeverity for MEDIUM e incidentRiskSeverityId for 1
- HIGH se riskSeverity for HIGH e incidentRiskSeverityId for 2
- INFORMATIONAL se riskSeverity for INFO e incidentRiskSeverityId for 3
N/A security_result.action Determinado com base no valor da resposta:
- ALLOW se a resposta contiver allow (sem diferenciar maiúsculas de minúsculas)
- BLOCK se a resposta contiver Violation (sem diferenciar maiúsculas de minúsculas)

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