Coletar registros do Skyhigh Security
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
- 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/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).
- Localize o arquivo
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
Para reiniciar o agente do Bindplane em Linux, execute o seguinte comando:
sudo systemctl restart bindplane-agent
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:
- 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.
- 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.
- 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
- Faça o download do cliente de geração de registros para uma instância dedicada.
- Instale o cliente do Logging. Se necessário, descompacte o arquivo EXE baixado.
- Depois que a instalação for concluída, abra o cliente de geração de registros.
- Na página Configuração, forneça os seguintes detalhes de configuração:
- ID do cliente: insira o ID do cliente do Skyhigh CASB que você recebeu na etapa anterior.
- Serviço: selecione SSE se você estiver usando o Skyhigh SSE ou WGCS se estiver usando este produto com o Trellix ePO.
- 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
- 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.
- 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.
- Versão da API: insira
version 13
. - 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.
- 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.