Coletar registros do sistema de detecção de intrusões do Cloud (Cloud IDS)
Este documento explica como exportar e ingerir registros do Cloud IDS no Google Security Operations usando o Cloud Storage. O analisador transforma registros brutos do Cloud IDS formatados em JSON de Google Cloud em um formato UDM estruturado. Ele extrai campos relevantes, mapeia para o esquema da UDM, categoriza eventos e enriquece os dados com contexto adicional, como direção da rede e tipos de recursos.
Antes de começar
Verifique se você atende aos seguintes pré-requisitos:
- Instância do Google SecOps.
- O Cloud IDS está configurado e ativo no seu ambiente Google Cloud .
- Acesso privilegiado a Google Cloud e permissões adequadas para acessar o Cloud IDS.
Criar um bucket do Cloud Storage
- Faça login no console doGoogle Cloud .
Acesse a página Buckets do Cloud Storage.
Clique em Criar.
Na página Criar um bucket, insira as informações do seu bucket. Após cada uma das etapas a seguir, clique em Continuar para prosseguir para a próxima etapa:
Na seção Começar, faça o seguinte:
- Insira um nome exclusivo que atenda aos requisitos de nome de bucket. Por exemplo, gcp-ids-logs.
Para ativar o namespace hierárquico, clique na seta de expansão para abrir a seção Otimizar para cargas de trabalho orientadas a arquivos e com uso intensivo de dados e selecione Ativar namespace hierárquico neste bucket.
Para adicionar um rótulo de bucket, clique na seta de expansão para abrir a seção Rótulos.
Clique em Adicionar rótulo e especifique uma chave e um valor para o rótulo.
Na seção Escolha onde armazenar seus dados, faça o seguinte:
- Selecione um tipo de local.
Use o menu do tipo de local para selecionar um Local em que os dados de objetos no bucket serão armazenados permanentemente.
Para configurar a replicação entre buckets, abra a seção Configurar a replicação entre buckets.
Na seção Escolha uma classe de armazenamento para seus dados, selecione uma classe de armazenamento padrão para o bucket ou selecione Classe automática para gerenciamento automático da classe de armazenamento dos dados do bucket.
Na seçã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 controle de acesso para os objetos do bucket.
Na seção Escolha como proteger os dados do objeto, faça o seguinte:
- Selecione qualquer uma das opções em Proteção de dados que você quer definir para o bucket.
- Para escolher como os dados do objeto serão criptografados, clique na seta de expansão identificada como Criptografia de dados e selecione um Método de criptografia de dados.
Clique em Criar.
Configurar a exportação de registros do Cloud IDS
- Faça login no console doGoogle Cloud .
- Acesse Logging > Roteador de registros.
- Clique em Criar coletor.
Forneça os seguintes parâmetros de configuração:
- Nome do coletor: insira um nome significativo, por exemplo,
google-cloud-ids-logs-sink
. - Destino do gravador: selecione Cloud Storage e forneça o URI do bucket de armazenamento Google Cloud . Por exemplo,
gs://gcp-ids-logs
. Filtro de registros:
logName="projects/<your-project-id>/logs/cloud-ids"
- Nome do coletor: insira um nome significativo, por exemplo,
Clique em Criar.
Configurar permissões para o Cloud Storage
- Acesse IAM e administrador > IAM.
- Localize a conta de serviço do Cloud Logging.
- Conceda o papel roles/storage.admin no bucket.
Configurar feeds
Para configurar um feed, siga estas etapas:
- Acesse Configurações do SIEM > Feeds.
- Clique em Adicionar novo feed.
- Na próxima página, clique em Configurar um único feed.
- No campo Nome do feed, insira um nome para o feed, por exemplo, Registros do IDS do GCP.
- Selecione Google Cloud Storage V2 como o Tipo de origem.
- Selecione GCP IDS como o Tipo de registro.
- Clique em Receber conta de serviço ao lado do campo Conta de serviço do Chronicle.
- Clique em Próxima.
- Especifique valores para os seguintes parâmetros de entrada:
- URI do bucket de armazenamento: URL do bucket do Cloud Storage. Por exemplo,
gs://gcp-ids-logs
. - Opções de exclusão de fontes: selecione a opção de exclusão de acordo com sua preferência.
Observação: se você selecionar a opção
Delete transferred files
ouDelete transferred files and empty directories
, verifique se concedeu as permissões adequadas à conta de serviço. - Idade máxima do arquivo: inclui arquivos modificados no último número de dias. O padrão é 180 dias.
- URI do bucket de armazenamento: URL do bucket do Cloud Storage. Por exemplo,
- Clique em Próxima.
- Revise a nova configuração do feed na tela Finalizar e clique em Enviar.
Tabela de mapeamento da UDM
Campo de registro | Mapeamento do 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, somente se a direção for de cliente para 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 na 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 é 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 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, somente se a direção for de cliente para servidor ou se logName contiver traffic . |
jsonPayload.repeat_count | security_result.detection_fields.value | Mapeado, se existir. A chave é 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 é definida como "start_time". |
jsonPayload.start_time | additional.fields.value.string_value | Mapeado, se existir. A chave é definida como "start_time". |
jsonPayload.threat_id | security_result.threat_id | Mapeamento direto. |
jsonPayload.total_bytes | about.labels.value | Mapeado, se existir. A chave é definida como "total_bytes". |
jsonPayload.total_bytes | additional.fields.value.string_value | Mapeado, se existir. A chave é definida como "total_bytes". |
jsonPayload.total_packets | about.labels.value | Mapeado, se existir. A chave é definida como "total_packets". |
jsonPayload.total_packets | additional.fields.value.string_value | Mapeado, se existir. A chave é definida como "total_packets". |
jsonPayload.type | security_result.detection_fields.value | Mapeado, se existir. A chave é 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 padrão "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 de cliente para servidor ou se logName contiver traffic . |
|
observer.resource.resource_type | Valor estático: CLOUD_PROJECT , adicionado se "resource.labels.resource_container" ou "resource.type" existir. |
|
observer.resource.attribute.cloud.environment | Valor estático: GOOGLE_CLOUD_PLATFORM , adicionado se "resource.labels.resource_container" ou "resource.type" existir. |
Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais do Google SecOps.