Coletar registros do Sistema de detecção de intrusões do Cloud (Cloud IDS)
Este documento explica como exportar e processar registros do Cloud IDS no Google Security Operations usando o Cloud Storage. O analisador transforma os registros do Cloud IDS formatados em JSON brutos de Google Cloud em um formato UDM estruturado. Ele extrai campos relevantes, os mapeia para o esquema do UDM, categoriza eventos e enriquece os dados com mais contexto, como direção de rede e tipos de recursos.
Antes de começar
- Verifique se você tem uma instância do Google SecOps.
- Verifique se o Cloud IDS está configurado e ativo no seu Google Cloud ambiente.
- Verifique se você tem acesso privilegiado a Google Cloud e as permissões adequadas para acessar os IDS do Cloud.
Criar um bucket do Cloud Storage
- Faça login no console do Google 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:
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 do Google Cloud.
- Acesse Logging > Roteador de registros.
- Clique em Criar coletor.
Informe os seguintes parâmetros de configuração:
- Nome do coletor: insira um nome significativo. Por exemplo,
google-cloud-ids-logs-sink
. - Destino da sink: selecione Cloud Storage e forneça o URI do bucket do Google Cloud storage. Por exemplo,
gs://gcp-ids-logs
. Filtro de registro:
logName="projects/<your-project-id>/logs/cloud-ids"
- Nome do coletor: insira um nome significativo. Por exemplo,
Clique em Criar.
Configurar permissões do 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 um feed no Google SecOps para processar registros do Cloud IDS
- Acesse Configurações do SIEM > Feeds.
- Clique em Adicionar novo.
- No campo Nome do feed, insira um nome para o feed. Por exemplo, Logs de IDS do GCP.
- Selecione Google Cloud Storage como o Tipo de origem.
- Selecione GCP IDS como o Tipo de registro.
- Clique em Pegar 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 do Storage: URL do bucket do Cloud Storage. Por exemplo,
gs://gcp-ids-logs
. - URI Is A: selecione Directory which includes subdirectories.
Opções de exclusão de origem: selecione a opção de exclusão de acordo com sua preferência.
Namespace do recurso: o namespace do recurso.
Rótulos de ingestão: o rótulo aplicado aos eventos desse feed.
- URI do bucket do Storage: URL do bucket do Cloud Storage. Por exemplo,
Clique em Próxima.
Revise a configuração do novo feed na tela Finalizar e clique em Enviar.
Tabela de mapeamento do 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 de servidor para 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 pela 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': SAÍDA - 'server-to-client': ENTRADA |
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 de servidor para cliente. |
jsonPayload.network | target.resource.name | Mapeamento direto, somente 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, com 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 de servidor para 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. |
|
is_alert | Verdadeiro se "jsonPayload.alert_severity" for "CRITICAL". Caso contrário, será falso. | |
is_significant | Verdadeiro se "jsonPayload.alert_severity" for "CRITICAL". Caso contrário, será falso. |
Alterações
2024-05-01
- Adicionamos outros mapeamentos para
noun.labels
descontinuado.
2023-12-13
- O analisador GCP_IDS foi promovido para o padrão.
Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais do Google SecOps.