Recolha registos de segurança do Skyhigh
Este documento explica como carregar registos do Skyhigh Security (anteriormente McAfee Skyhigh CASB) para o Google Security Operations através do Bindplane.
O analisador transforma os registos de um formato SYSLOG + KV num modelo de dados unificado (UDM). Primeiro, normaliza a mensagem de registo em pares de chave-valor e, em seguida, mapeia os campos extraídos para os atributos UDM correspondentes 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
Certifique-se de que tem os seguintes pré-requisitos:
- Instância do Google SecOps
- Um anfitrião Windows 2016 ou posterior, ou um anfitrião Linux com
systemd
- Se estiver a ser executado através de um proxy, as portas da firewall estão abertas
- O Skyhigh Cloud Connector foi instalado e configurado
- Acesso privilegiado ao conetor do Skyhigh Security Cloud
Obtenha o ficheiro de autenticação de carregamento do Google SecOps
- Inicie sessão na consola Google SecOps.
- Aceda a Definições do SIEM > Agentes de recolha.
- Transfira o ficheiro de autenticação de carregamento. Guarde o ficheiro de forma segura no sistema onde o Bindplane vai ser instalado.
Obtenha o ID de cliente do Google SecOps
- Inicie sessão na consola Google SecOps.
- Aceda a Definições do SIEM > Perfil.
- Copie e guarde o ID do cliente da secção Detalhes da organização.
Instale o agente do Bindplane
Instale o agente do Bindplane no seu sistema operativo Windows ou Linux de acordo com as seguintes instruções.
Instalação do Windows
- Abra a Linha de comandos ou o PowerShell como administrador.
Execute o seguinte 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 raiz ou sudo.
Execute o seguinte comando:
sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
Recursos de instalação adicionais
Para ver opções de instalação adicionais, consulte o guia de instalação.
Configure o agente Bindplane para carregar o Syslog e enviá-lo para o Google SecOps
- Aceda ao ficheiro de configuração:
- Localize o ficheiro
config.yaml
. Normalmente, encontra-se no diretório/etc/bindplane-agent/
no Linux ou no diretório de instalação no Windows. - Abra o ficheiro com um editor de texto (por exemplo,
nano
,vi
ou Bloco de notas).
- Localize o ficheiro
Edite o ficheiro
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 de cliente real. - Atualize
/path/to/ingestion-authentication-file.json
para o caminho onde o ficheiro de autenticação foi guardado na secção Obtenha o ficheiro de autenticação de carregamento do Google SecOps.
Reinicie o agente do Bindplane para aplicar as alterações
Para reiniciar o agente do Bindplane no Linux, execute o seguinte comando:
sudo systemctl restart bindplane-agent
Para reiniciar o agente Bindplane no Windows, pode usar a consola Serviços ou introduzir o seguinte comando:
net stop BindPlaneAgent && net start BindPlaneAgent
Pré-requisitos antes de transferir o cliente de registo
Certifique-se de que tem os seguintes detalhes:
- Privilégio de utilizador do Usage Analytics: a sua conta tem de ter a função de utilizadores do Usage Analytics.
- ID de cliente: execute os seguintes passos para encontrar o seu ID de cliente no Skyhigh CASB:
- Inicie sessão no Skyhigh CASB.
- Aceda a Definições > Infraestrutura > Gestão de proxy do cliente.
- Clique em Configuração global > Autenticação de inquilino.
- Em Definições globais, encontra o seu ID de cliente apresentado.
- Endereço de email e palavra-passe: as suas credenciais de início de sessão (ou da conta de serviço dedicada). Se iniciar sessão através de SAML sem enviar uma palavra-passe, não pode instalar o cliente de registo.
Transfira e instale o cliente de registo Skyhigh
- Transfira o cliente de registo para uma instância dedicada.
- Instale o cliente de registo (descomprima o ficheiro EXE transferido, se necessário).
- Após a conclusão da instalação, abra o Logging Client.
- Na página Configuração, faculte os seguintes detalhes de configuração:
- ID de cliente: introduza o ID de cliente do Skyhigh CASB obtido no passo anterior.
- Serviço: selecione SSE se estiver a usar o Skyhigh SSE ou WGCS se estiver a usar este produto juntamente com o Trellix ePO.
- Região: escolha um código regional ou de país consoante onde os seus dados estão armazenados:
- EU — União Europeia
- IN — Índia
- SG — Singapura
- UE — Emirados Árabes Unidos
- UK — Reino Unido
- US — Estados Unidos
- Nome: introduza o nome de utilizador, que é mais comummente o endereço de email usado para iniciar sessão no Secure Web Gateway ou numa instância dedicada.
- Palavra-passe: introduza a palavra-passe que usa para iniciar sessão no Secure Web Gateway. Se iniciar sessão com SAML, não pode usar o cliente de registo.
- Versão da API: introduza
version 13
. - Tipo de registo: pode transferir diferentes tipos de registos, incluindo registos com dados provenientes da Web, do isolamento do navegador remoto (RBI), do acesso privado e da firewall na nuvem.
- Selecione Enviar como Syslogs e faculte os seguintes detalhes de configuração:
- Anfitrião do cliente Syslog: introduza o endereço IP do agente do Bindplane.
- Porta do cliente Syslog: introduza o número da porta do agente do Bindplane.
- Transporte: selecione UDP ou TCP, consoante a configuração do agente Bindplane.
Tabela de mapeamento do UDM
Campo de registo | Mapeamento do UDM | Lógica |
---|---|---|
EventReceivedTime | metadata.event_timestamp | Convertida para data/hora no formato yyyy-MM-dd HH:mm:ss |
FileSize | target.file.size | Mapeado diretamente, convertido em uinteger |
Nome do anfitrião | principal.hostname | Mapeamento direto |
MessageSourceAddress | principal.ip | Mapeado diretamente, unido se existirem várias instâncias |
Gravidade | additional.fields.value.string_value (key: SEVERITY) | Mapeamento direto |
SeverityValue | additional.fields.value.string_value (key: SEVERITY_VALUE) | Mapeamento direto |
SourceModuleName | additional.fields.value.string_value (key: SOURCE_MODULE_NAME) | Mapeamento direto |
SourceModuleType | principal.resource.resource_subtype | Mapeamento direto |
SyslogFacility | security_result.about.resource.attribute.labels.value (key: SYSLOG_FACILITY) | Mapeamento direto |
SyslogFacilityValue | security_result.about.resource.attribute.labels.value (key: SYSLOG_FACILITY_VALUE) | Mapeamento direto |
SyslogSeverity | security_result.about.resource.attribute.labels.value (key: SYSLOG_SEVERITY) | Mapeamento direto |
SyslogSeverityValue | security_result.about.resource.attribute.labels.value (key: SYSLOG_SEVERITY_VALUE) | Mapeamento direto |
activityName | metadata.product_event_type | Mapeamento direto, parênteses removidos |
actorId | principal.user.userid | Mapeado diretamente, também adicionado a email_addresses se for um email |
actorIdType | principal.user.attribute.roles.name | Mapeamento direto |
collaborationSharedLink | security_result.about.resource.attribute.labels.value (key: COLLABORATION_SHARED_LINK) | Mapeamento direto |
contentItemId | target.file.full_path (se contentItemType for FILE) | Mapeamento direto, estimativas do custo removidas |
contentItemId | target.url (se contentItemType for SAAS_RESOURCE) | Mapeamento direto, estimativas do custo removidas |
contentItemHierarchy | additional.fields.value.string_value (key: CONTENT_ITEM_HIERARCHY) | Mapeamento direto, estimativas do custo removidas |
contentItemName | target.resource.name | Mapeamento direto, estimativas do custo removidas |
contentItemType | additional.fields.value.string_value (key: CONTENT_ITEM_TYPE) | Mapeamento direto |
incidentGroup | security_result.detection_fields.value (key: INCIDENT_GROUP) | Mapeamento direto |
incidentId | metadata.product_log_id | Mapeamento direto |
incidentRiskScore | security_result.detection_fields.value (key: INCIDENT_RISK_SCORE) | Mapeamento direto |
incidentRiskSeverityId | Usado em combinação com riskSeverity para determinar security_result.severity | |
informationAccountId | target.resource.product_object_id | Mapeamento direto |
informationAnomalyCategory | security_result.category_details | Mapeamento direto, estimativas do custo removidas |
informationAnomalyCause | security_result.detection_fields.value (key: INFO_ANOMALY_CAUSE) | Mapeamento direto, estimativas do custo removidas |
informationCategory | security_result.category_details | Mapeamento direto |
informationConfigType | additional.fields.value.string_value (key: INFORMATION_CONFIG_TYPE) | Mapeamento direto, estimativas do custo removidas |
informationContentItemParent | target.resource.parent | Mapeamento direto, estimativas do custo removidas |
informationEventId | additional.fields.value.string_value (key: INFORMATION_EVENT_ID) | Mapeamento direto |
informationExternalCollaboratorsCount | additional.fields.value.string_value (key: INFORMATION_COLLAB_COUNT) | Mapeamento direto |
informationFileTypes | additional.fields.value.list_value.values.string_value (key: FILE_TYPE) | Extraído de uma string semelhante a JSON, parênteses e aspas removidos |
informationLastExecutedResponseLabel | additional.fields.value.string_value (key: INFORMATION_LAST_RESPONSE) | Mapeamento direto |
informationScanName | metadata.description | Mapeamento direto, estimativas do custo removidas |
informationScanRunDate | Não mapeado para o UDM | |
informationSource | additional.fields.value.string_value (key: INFORMATION_SOURCE) | Mapeamento direto |
informationUniqueMatchCount | additional.fields.value.string_value (key: INFORMATION_UNQ_MATCH_COUNT) | Mapeamento direto |
informationUserAttributesSAMAccountName | principal.user.user_display_name | Mapeamento direto, parênteses removidos |
instanceId | principal.resource.product_object_id | Mapeamento direto |
instanceName | principal.resource.name | Mapeamento direto, estimativas do custo removidas |
policyId | security_result.rule_id | Mapeamento direto |
policyName | security_result.summary | Mapeamento direto, estimativas do custo removidas |
resposta | Usado para determinar security_result.action (ALLOW ou BLOCK) | |
riskSeverity | Usado em combinação com incidentRiskSeverityId para determinar security_result.severity, convertido em maiúsculas | |
serviceNames | target.application | Mapeamento direto, parênteses, aspas e espaços adicionais removidos |
sourceIps | principal.ip | Extraído de uma string semelhante a JSON, unida se existirem várias instâncias |
estado | additional.fields.value.string_value (key: STATUS) | Mapeamento direto |
threatCategory | security_result.threat_name | Mapeamento direto, estimativas do custo removidas |
totalMatchCount | security_result.detection_fields.value (key: TOTAL_MATCH_COUNT) | Mapeamento direto |
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 num 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 (não sensível a maiúsculas e minúsculas) - BLOCK se a resposta contiver Violation (não sensível a maiúsculas e minúsculas) |
Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais da Google SecOps.