Recolha registos do sistema de deteção de intrusões do Cloud (Cloud IDS)
Este documento explica como exportar e carregar registos do Cloud IDS para o Google Security Operations através do Cloud Storage. O analisador transforma os registos do Cloud IDS formatados em JSON não processados de Google Cloud num formato UDM estruturado. Extrai campos relevantes, mapeia-os para o esquema de UDM, categoriza eventos e enriquece os dados com contexto adicional, como a direção da rede e os tipos de recursos.
Antes de começar
Certifique-se de que tem os seguintes pré-requisitos:
- Instância do Google SecOps.
- O IDS na nuvem está configurado e ativo no seu ambiente Google Cloud .
- Acesso privilegiado ao Google Cloud e autorizações adequadas para aceder ao Cloud IDS.
Crie um contentor do Cloud Storage
- Inicie sessão na Google Cloud consola.
Aceda à página Contentores do Cloud Storage.
Clique em Criar.
Na página Criar um depósito, introduza as informações do depósito. Após cada um dos passos seguintes, clique em Continuar para avançar para o passo seguinte:
Na secção Começar, faça o seguinte:
- Introduza um nome exclusivo que cumpra os requisitos do nome do contentor; por exemplo, gcp-ids-logs.
Para ativar o espaço de nomes hierárquico, clique na seta de expansão para expandir a secção Otimizar para cargas de trabalho orientadas para ficheiros e com grande volume de dados e, de seguida, selecione Ativar espaço de nomes hierárquico neste contentor.
Para adicionar uma etiqueta de grupo, clique na seta de expansão para expandir a secção Etiquetas.
Clique em Adicionar etiqueta e especifique uma chave e um valor para a etiqueta.
Na secção Escolha onde quer armazenar os seus dados, faça o seguinte:
- Selecione um Tipo de localização.
Use o menu de tipo de localização para selecionar uma Localização onde os dados de objetos no seu contentor vão ser armazenados permanentemente.
Para configurar a replicação entre contentores, expanda a secção Configurar replicação entre contentores.
Na secção Escolha uma classe de armazenamento para os seus dados, selecione uma classe de armazenamento predefinida para o contentor ou selecione Autoclass para a gestão automática da classe de armazenamento dos dados do seu contentor.
Na secção Escolha como controlar o acesso a objetos, selecione não para aplicar a prevenção de acesso público e selecione um modelo de controlo de acesso para os objetos do seu contentor.
Na secção Escolha como proteger os dados de objetos, faça o seguinte:
- Selecione qualquer uma das opções em Proteção de dados que quer definir para o seu contentor.
- Para escolher como os dados de objetos vão ser encriptados, clique na seta de expansão com a etiqueta Encriptação de dados e selecione um Método de encriptação de dados.
Clique em Criar.
Configure a exportação de registos do Cloud IDS
- Inicie sessão na Google Cloud consola.
- Aceda a Registo > Router de registos.
- Clique em Criar destino.
Forneça os seguintes parâmetros de configuração:
- Nome do destino: introduza um nome significativo; por exemplo,
google-cloud-ids-logs-sink
. - Destino da sincronização: selecione Cloud Storage e indique o Google Cloud URI do contentor de armazenamento; por exemplo,
gs://gcp-ids-logs
. Filtro de registo:
logName="projects/<your-project-id>/logs/cloud-ids"
- Nome do destino: introduza um nome significativo; por exemplo,
Clique em Criar.
Configure autorizações para o Cloud Storage
- Aceda a IAM e administrador > IAM.
- Localize a conta de serviço do Cloud Logging.
- Conceda a função roles/storage.admin no contentor.
Configure feeds
Para configurar um feed, siga estes passos:
- Aceda a Definições do SIEM > Feeds.
- Clique em Adicionar novo feed.
- Na página seguinte, clique em Configurar um único feed.
- No campo Nome do feed, introduza um nome para o feed; por exemplo, Registos de IDS da GCP.
- Selecione Google Cloud Storage V2 como Tipo de origem.
- Selecione GCP IDS como o Tipo de registo.
- Clique em Obter conta de serviço junto ao campo Conta de serviço do Chronicle.
- Clicar em Seguinte.
- Especifique valores para os seguintes parâmetros de entrada:
- URI do contentor de armazenamento: URL do contentor do Cloud Storage; por exemplo,
gs://gcp-ids-logs
. - Opções de eliminação da origem: selecione a opção de eliminação de acordo com a sua preferência.
Nota: se selecionar a opção
Delete transferred files
ouDelete transferred files and empty directories
, certifique-se de que concedeu as autorizações adequadas à conta de serviço. - Idade máxima do ficheiro: inclui ficheiros modificados no último número de dias. A predefinição é 180 dias
- URI do contentor de armazenamento: URL do contentor do Cloud Storage; por exemplo,
- Clicar em Seguinte.
- Reveja a nova configuração do feed no ecrã Finalizar e, de seguida, clique em Enviar.
Tabela de mapeamento da UDM
Campo de registo | Mapeamento de UDM | Lógica |
---|---|---|
insertId | metadata.product_log_id | Mapeamento direto. |
jsonPayload.alert_severity | security_result.severity | Mapeamento direto. |
jsonPayload.alert_time | metadata.event_timestamp | Mapeamento direto. |
jsonPayload.application | principal.application | Mapeamento direto, apenas se a direção for do servidor para o cliente. |
jsonPayload.application | target.application | Mapeamento direto, apenas se a direção for do cliente para o servidor ou se logName contiver traffic . |
jsonPayload.category | security_result.category | Mapeado com base no valor de "jsonPayload.category": - "dos": NETWORK_DENIAL_OF_SERVICE - "info-leak": NETWORK_SUSPICIOUS - "protocol-anomaly": NETWORK_MALICIOUS - "backdoor", "spyware", "trojan": SOFTWARE_MALICIOUS |
jsonPayload.category | security_result.category_details | Mapeamento direto. |
jsonPayload.cves | extensions.vulns.vulnerabilities.cve_id | Mapeamento direto, iterando sobre a matriz. |
jsonPayload.destination_ip_address | target.ip | Mapeamento direto. |
jsonPayload.destination_port | target.port | Mapeamento direto. |
jsonPayload.details | extensions.vulns.vulnerabilities.description | Mapeamento direto. |
jsonPayload.details | security_result.detection_fields.value | Mapeado se "jsonPayload.repeat_count" existir. A chave está definida como "repeat_count". |
jsonPayload.direction | network.direction | Mapeado com base no valor de "jsonPayload.direction": - "client-to-server": OUTBOUND - "server-to-client": INBOUND |
jsonPayload.elapsed_time | network.session_duration.seconds | Mapeamento direto. |
jsonPayload.ip_protocol | network.ip_protocol | Mapeamento direto, conversão para maiúsculas e, em seguida, mapeamento para o número do protocolo. |
jsonPayload.name | security_result.threat_name | Mapeamento direto. |
jsonPayload.network | principal.resource.name | Mapeamento direto, apenas se a direção for do servidor para o cliente. |
jsonPayload.network | target.resource.name | Mapeamento direto, apenas se a direção for do cliente para o servidor ou se logName contiver traffic . |
jsonPayload.repeat_count | security_result.detection_fields.value | Mapeado se existir. A chave está definida como "repeat_count". |
jsonPayload.session_id | network.session_id | Mapeamento direto. |
jsonPayload.source_ip_address | principal.ip | Mapeamento direto. |
jsonPayload.source_port | principal.port | Mapeamento direto. |
jsonPayload.start_time | about.labels.value | Mapeado se existir. A chave está definida como "start_time". |
jsonPayload.start_time | additional.fields.value.string_value | Mapeado se existir. A chave está definida como "start_time". |
jsonPayload.threat_id | security_result.threat_id | Mapeamento direto. |
jsonPayload.total_bytes | about.labels.value | Mapeado se existir. A chave está definida como "total_bytes". |
jsonPayload.total_bytes | additional.fields.value.string_value | Mapeado se existir. A chave está definida como "total_bytes". |
jsonPayload.total_packets | about.labels.value | Mapeado se existir. A chave está definida como "total_packets". |
jsonPayload.total_packets | additional.fields.value.string_value | Mapeado se existir. A chave está definida como "total_packets". |
jsonPayload.type | security_result.detection_fields.value | Mapeado se existir. A chave está definida como "type". |
jsonPayload.uri_or_filename | target.file.full_path | Mapeamento direto. |
logName | security_result.category_details | Mapeamento direto. |
receiveTimestamp | metadata.collected_timestamp | Mapeamento direto. |
resource.labels.id | observer.resource.product_object_id | Mapeamento direto. |
resource.labels.location | observer.location.name | Mapeamento direto. |
resource.labels.resource_container | observer.resource.name | Mapeamento direto. |
resource.type | observer.resource.resource_subtype | Mapeamento direto. |
metadata.event_type | Determinado por um conjunto de regras condicionais com base na presença e nos valores de outros campos, sendo o valor predefinido "GENERIC_EVENT". | |
metadata.vendor_name | Valor estático: Google Cloud Platform . |
|
metadata.product_name | Valor estático: GCP_IDS . |
|
metadata.log_type | Valor estático: GCP_IDS . |
|
extensions.vulns.vulnerabilities.vendor | Valor estático: GCP_IDS , adicionado para cada CVE em "jsonPayload.cves". |
|
principal.resource.resource_type | Valor estático: VPC_NETWORK , adicionado se "jsonPayload.network" existir e a direção for do servidor para o cliente. |
|
target.resource.resource_type | Valor estático: VPC_NETWORK , adicionado se "jsonPayload.network" existir e a direção for do cliente para o servidor ou se logName contiver traffic . |
|
observer.resource.resource_type | Valor estático: CLOUD_PROJECT , adicionado se existir "resource.labels.resource_container" ou "resource.type". |
|
observer.resource.attribute.cloud.environment | Valor estático: GOOGLE_CLOUD_PLATFORM , adicionado se existir "resource.labels.resource_container" ou "resource.type". |
Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais da Google SecOps.