Coletar registros de observação do Security Command Center
Este documento explica como exportar e ingerir registros de observação do Security Command Center no Google Security Operations usando o Cloud Storage. O analisador transforma dados JSON brutos em um modelo de dados unificado (UDM). Ele normaliza a estrutura de dados, processando possíveis variações na entrada. Em seguida, extrai e mapeia os campos relevantes para o esquema do UDM, enriquecendo os dados com contexto e flags adicionais para análise downstream.
Antes de começar
Verifique se você atende os seguintes pré-requisitos:
- O Security Command Center está ativado e configurado no seu ambiente do Google Cloud .
- Instância do Google SecOps.
- Acesso privilegiado ao Security Command Center e ao Cloud Logging.
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-scc-observation-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 dos objetos 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 o registro do Security Command Center
- Faça login no console doGoogle Cloud .
Acesse a página Security Command Center.
Selecione a organização.
Clique em Configurações.
Clique na guia Exportações contínuas.
Em Nome da exportação, clique em Exportação do Logging.
Em Coletores, ative a opção Registrar descobertas no Logging.
Em Projeto do Logging, insira ou pesquise o projeto em que você quer registrar as descobertas.
Clique em Salvar.
Configurar a exportação de registros de observação do Security Command Center
- 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,
scc-observation-logs-sink. - Destino do coletor: selecione Cloud Storage e insira o URI do bucket. Por exemplo,
gs://gcp-scc-observation-logs/. Filtro de registros:
logName="projects/<your-project-id>/logs/cloudsecurityscanner.googleapis.com%2Fobservations" resource.type="security_command_center_observation" logName="projects/<your-project-id>/logs/cloudsecurityscanner.googleapis.com%2Ffindings" resource.type="security_center_findings"Definir opções de exportação: inclua todas as entradas de registro.
- 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 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 de observação do Security Command Center.
- Selecione Google Cloud Storage V2 como o Tipo de origem.
- Selecione Observação do Security Command Center 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-scc-observation-logs/. Esse URL precisa terminar com uma barra (/). Opções de exclusão da fonte: selecione a opção de exclusão de acordo com sua preferência.
Idade máxima do arquivo: inclui arquivos modificados nos últimos dias. O padrão é de 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 do UDM
| Campo de registro | Mapeamento do UDM | Lógica |
|---|---|---|
| access.callerIp | read_only_udm.principal.ip | Mapeamento direto. |
| access.callerIpGeo.regionCode | read_only_udm.principal.location.country_or_region | Mapeamento direto. |
| access.methodName | read_only_udm.additional.fields.value.string_value | Mapeamento direto. Também mapeado para "read_only_udm.target.labels.value". |
| access.principalEmail | read_only_udm.principal.user.email_addresses | Mapeamento direto. |
| access.principalSubject | read_only_udm.principal.user.attribute.labels.value | Mapeamento direto. |
| assetDisplayName | read_only_udm.target.resource.attribute.labels.value | Mapeamento direto. |
| assetId | read_only_udm.target.asset.asset_id | O valor após assets/ é extraído do campo assetId e mapeado como AssetID:<extracted_value>. |
| categoria | read_only_udm.metadata.product_event_type | Mapeamento direto. |
| contacts.security.contacts.email | read_only_udm.security_result.about.user.email_addresses | Mapeamento direto. O objeto about pode se repetir várias vezes com base no número de contatos. O campo roles.name está definido como Security. |
| contacts.technical.contacts.email | read_only_udm.security_result.about.user.email_addresses | Mapeamento direto. O objeto about pode se repetir várias vezes com base no número de contatos. O campo roles.name está definido como Technical. |
| createTime | read_only_udm.security_result.detection_fields.value | Mapeamento direto. O objeto detection_fields pode se repetir várias vezes com base nos campos disponíveis. O campo key está definido como createTime. |
| eventTime | read_only_udm.metadata.event_timestamp | Convertido para o formato de carimbo de data/hora. |
| externalUri | read_only_udm.about.url | Mapeamento direto. |
| findingClass | read_only_udm.security_result.category_details | Mapeamento direto. |
| findingProviderId | read_only_udm.target.resource.attribute.labels.value | Mapeamento direto. |
| mitreAttack.primaryTactic | read_only_udm.security_result.detection_fields.value | Mapeamento direto. O objeto detection_fields pode se repetir várias vezes com base nos campos disponíveis. O campo key está definido como primary_tactic. |
| mitreAttack.primaryTechniques | read_only_udm.security_result.detection_fields.value | Mapeamento direto. O objeto detection_fields pode se repetir várias vezes com base no número de técnicas. O campo key está definido como primary_technique. |
| mute | read_only_udm.security_result.detection_fields.value | Mapeamento direto. O objeto detection_fields pode se repetir várias vezes com base nos campos disponíveis. O campo key está definido como mute. |
| nome | read_only_udm.metadata.product_log_id | Mapeamento direto. |
| parentDisplayName | read_only_udm.metadata.description | Mapeamento direto. |
| resource.display_name | read_only_udm.target.resource.attribute.labels.value | Mapeamento direto. |
| resource.name | read_only_udm.target.resource.name, read_only_udm.principal.resource.name | Mapeamento direto. Quando esse campo é usado para preencher o campo principal.resource.name, o analisador verifica se resource.project_name está vazio. Se não estiver vazio, ele vai usar resource.project_name. |
| resource.parent_display_name | read_only_udm.target.resource.attribute.labels.value | Mapeamento direto. |
| resource.parent_name | read_only_udm.target.resource.attribute.labels.value | Mapeamento direto. |
| resource.project_display_name | read_only_udm.target.resource.attribute.labels.value | Mapeamento direto. |
| resource.project_name | read_only_udm.target.resource.attribute.labels.value | Mapeamento direto. |
| resource.type | read_only_udm.target.resource.attribute.labels.value | Mapeamento direto. |
| resourceName | read_only_udm.target.resource.name | Mapeamento direto. |
| securityMarks.name | read_only_udm.security_result.detection_fields.value | Mapeamento direto. O objeto detection_fields pode se repetir várias vezes com base nos campos disponíveis. O campo key está definido como securityMarks_name. |
| gravidade, | read_only_udm.security_result.severity, read_only_udm.security_result.priority_details | Mapeamento direto. |
| sourceDisplayName | read_only_udm.target.resource.attribute.labels.value | Mapeamento direto. |
| sourceProperties.contextUris.mitreUri.displayName | read_only_udm.security_result.detection_fields.key | Mapeamento direto. O objeto detection_fields pode se repetir várias vezes com base nos campos disponíveis. |
| sourceProperties.contextUris.mitreUri.url | read_only_udm.security_result.detection_fields.value | Mapeamento direto. O objeto detection_fields pode se repetir várias vezes com base nos campos disponíveis. |
| sourceProperties.detectionCategory.ruleName | read_only_udm.security_result.rule_name | Mapeamento direto. |
| sourceProperties.detectionCategory.subRuleName | read_only_udm.security_result.detection_fields.value | Mapeamento direto. O objeto detection_fields pode se repetir várias vezes com base nos campos disponíveis. O campo key está definido como sourceProperties_detectionCategory_subRuleName. |
| sourceProperties.detectionPriority | read_only_udm.security_result.priority_details | Mapeamento direto. |
| sourceProperties.findingId | read_only_udm.target.resource.attribute.labels.value | Mapeamento direto. |
| estado | read_only_udm.security_result.detection_fields.value | Mapeamento direto. O objeto detection_fields pode se repetir várias vezes com base nos campos disponíveis. O campo key está definido como state. |
| N/A | read_only_udm.metadata.log_type | Fixado no código como GCP_SECURITYCENTER_OBSERVATION. |
| N/A | read_only_udm.metadata.product_name | Fixado no código como Security Command Center. |
| N/A | read_only_udm.metadata.vendor_name | Fixado no código como Google. |
| N/A | read_only_udm.principal.user.account_type | Defina como CLOUD_ACCOUNT_TYPE se o e-mail principal estiver presente. |
| N/A | read_only_udm.security_result.alert_state | Fixado no código como ALERTING. |
| N/A | read_only_udm.security_result.priority | Defina como LOW_PRIORITY se a gravidade for LOW. |
| N/A | read_only_udm.target.application | Extraído do campo resourceName. |
| N/A | read_only_udm.target.resource.product_object_id | Extraído do campo principal. |
| N/A | read_only_udm.target.resource.resource_type | Definido como CLUSTER por padrão. Defina como VIRTUAL_MACHINE se a categoria for Impact: GPU Instance Created ou Impact: Many Instances Created. Defina como SETTING se a categoria for Persistence: Add Sensitive Role. |
| N/A | read_only_udm.target.resource_ancestors.name | Extraído dos campos "parent" e "resourceName". |
| N/A | read_only_udm.target.resource_ancestors.product_object_id | Extraído dos campos "parent", "resource.project_name" e "resourceName". |
| N/A | read_only_udm.target.resource_ancestors.resource_type | Defina como CLOUD_PROJECT se resource.type for google.compute.Project. |
| N/A | read_only_udm.target.labels.key | O valor é definido como access_methodName se access.methodName estiver presente. |
| N/A | read_only_udm.target.labels.value | O valor é definido como access.methodName. |
| N/A | read_only_udm.target.resource.attribute.labels.key | A chave é definida como um dos seguintes valores com base no campo disponível: resource_parentDisplayName, resource_type, resource_parentName, resource_projectDisplayName, resource_displayName, finding_id, source_id, FindingProviderId, sourceDisplayName, asset_display_name. |
| N/A | read_only_udm.target.resource.attribute.labels.value | O valor é definido em um dos seguintes campos com base no campo disponível: parentDisplayName, resource.type, resource.parent_name, resource.project_display_name, resource.display_name, sourceProperties.findingId, sourceProperties.sourceId, findingProviderId, sourceDisplayName, assetDisplayName. |
Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais do Google SecOps.