Recolha registos de observação do Security Command Center
Este documento explica como exportar e carregar registos de observação do Security Command Center para o Google Security Operations através do Cloud Storage. O analisador transforma os dados JSON não processados num modelo de dados unificado (UDM). Normaliza a estrutura de dados, processando potenciais variações na entrada e, em seguida, extrai e mapeia os campos relevantes para o esquema do UDM, enriquecendo os dados com contexto e flags adicionais para análise a jusante.
Antes de começar
Certifique-se de que tem os seguintes pré-requisitos:
- O Security Command Center está ativado e configurado no seu ambiente Google Cloud .
- Instância do Google SecOps.
- Acesso privilegiado ao Security Command Center e ao Cloud Logging.
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-scc-observation-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 o registo do Security Command Center
- Inicie sessão na Google Cloud consola.
Aceda à página do Security Command Center.
Selecione a sua organização.
Clique em Definições.
Clique no separador Exportações contínuas.
Em Nome da exportação, clique em Exportação de registos.
Em Sinks, ative a opção Registar resultados no registo.
Em Projeto de registo, introduza ou pesquise o projeto onde quer registar as descobertas.
Clique em Guardar.
Configure a exportação de registos de observação do Security Command Center
- 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,
scc-observation-logs-sink
. - Destino da sincronização: selecione Armazenamento do Cloud Storage e introduza o URI do seu contentor; por exemplo,
gs://gcp-scc-observation-logs
. Filtro de registo:
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: inclui todas as entradas do registo.
- 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 observação do Security Command Center.
- Selecione Google Cloud Storage V2 como Tipo de origem.
- Selecione Observação do Security Command Center 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-scc-observation-logs
. Opções de eliminação da origem: selecione a opção de eliminação de acordo com a sua preferência.
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 |
---|---|---|
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 repetir-se várias vezes com base no número de contactos. O campo roles.name está definido como Security para este campo. |
contacts.technical.contacts.email | read_only_udm.security_result.about.user.email_addresses | Mapeamento direto. O objeto about pode repetir-se várias vezes com base no número de contactos. O campo roles.name está definido como Technical para este campo. |
createTime | read_only_udm.security_result.detection_fields.value | Mapeamento direto. O objeto detection_fields pode repetir-se várias vezes com base nos campos disponíveis. O campo key está definido como createTime para este campo. |
eventTime | read_only_udm.metadata.event_timestamp | Convertido para o formato 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 repetir-se várias vezes com base nos campos disponíveis. O campo key está definido como primary_tactic para este campo. |
mitreAttack.primaryTechniques | read_only_udm.security_result.detection_fields.value | Mapeamento direto. O objeto detection_fields pode repetir-se várias vezes com base no número de técnicas. O campo key está definido como primary_technique para este campo. |
mudo/muda | read_only_udm.security_result.detection_fields.value | Mapeamento direto. O objeto detection_fields pode repetir-se várias vezes com base nos campos disponíveis. O campo key está definido como mute para este campo. |
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 este campo é usado para preencher o campo principal.resource.name , o analisador verifica se resource.project_name está vazio. Se não estiver vazio, usa 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 repetir-se várias vezes com base nos campos disponíveis. O campo key está definido como securityMarks_name para este campo. |
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 repetir-se 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 repetir-se 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 repetir-se várias vezes com base nos campos disponíveis. O campo key está definido como sourceProperties_detectionCategory_subRuleName para este campo. |
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 repetir-se várias vezes com base nos campos disponíveis. O campo key está definido como state para este campo. |
N/A | read_only_udm.metadata.log_type | Codificado para GCP_SECURITYCENTER_OBSERVATION . |
N/A | read_only_udm.metadata.product_name | Codificado para Security Command Center . |
N/A | read_only_udm.metadata.vendor_name | Codificado para Google . |
N/A | read_only_udm.principal.user.account_type | Definido como CLOUD_ACCOUNT_TYPE se o email principal estiver presente. |
N/A | read_only_udm.security_result.alert_state | Codificado para ALERTING . |
N/A | read_only_udm.security_result.priority | Definido 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 | Predefinido como CLUSTER . Definido como VIRTUAL_MACHINE se a categoria for Impact: GPU Instance Created ou Impact: Many Instances Created . Definido 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 | Definido 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 a partir de access.methodName . |
N/A | read_only_udm.target.resource.attribute.labels.key | A chave está definida para 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 a partir de 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 da Google SecOps.