Coletar registros de observação do Cloud Security Command Center
Este documento explica como exportar e processar os 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, na sigla em inglês). Ele normaliza a estrutura de dados, processando possíveis variações na entrada, extrai e mapeia os campos relevantes para o esquema do UDM, enriquecendo os dados com mais contexto e sinalizações para a análise posterior.
Antes de começar
- Verifique se o Google Cloud Security Command Center está ativado e configurado no Google Cloud ambiente.
- Verifique se você tem uma instância do Google SecOps.
- Verifique se você tem acesso privilegiado ao Security Command Center e ao Cloud Logging.
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-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 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 o registro do Security Command Center
- Faça login no console do Google 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 Google Cloud exportação de registros de observação do Security Command Center
- 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,
scc-observation-logs-sink
. - Destino do sink: selecione Cloud Storage e insira o URI do bucket. Por exemplo,
gs://gcp-scc-observation-logs
. Filtro de registro:
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 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.
Configure um feed no Google SecOps para ingerir Google Cloud registros de observação do Security Command Center.
- Acesse Configurações do SIEM > Feeds.
- Clique em Adicionar novo.
- No campo Nome do feed, insira um nome para o feed. Por exemplo, Google Cloud Registros de observação do Security Command Center.
- Selecione Google Cloud Storage como o Tipo de origem.
- Selecione Observação do Security Command Center 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-scc-observation-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 |
---|---|---|
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 ser repetido 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 ser repetido várias vezes com base no número de contatos. 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 ser repetido 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 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 ser repetido 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 ser repetido 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 ser repetido 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, o valor resource.project_name será usado. |
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 ser repetido 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 ser repetido 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 ser repetido 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 ser repetido 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 ser repetido várias vezes com base nos campos disponíveis. O campo key está definido como state para este campo. |
N/A | is_alert | Defina como "true" se o registro for analisado. |
N/A | is_significant | Defina como "true" se o registro for analisado. |
N/A | read_only_udm.metadata.log_type | Fixado em GCP_SECURITYCENTER_OBSERVATION . |
N/A | read_only_udm.metadata.product_name | Fixado em Security Command Center . |
N/A | read_only_udm.metadata.vendor_name | Fixado em 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 em 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ídos do campo resourceName. |
N/A | read_only_udm.target.resource.product_object_id | Extraídos do campo pai. |
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ídos dos campos "parent" e "resourceName". |
N/A | read_only_udm.target.resource_ancestors.product_object_id | Extraídos 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 será 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 é 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 campos a seguir 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. |
Alterações
2023-11-29
- Correção de uma inconsistência na forma como os nomes de host eram processados no analisador.
2023-05-02
- O campo
security_result.url_back_to_product
agora contém um endereço da Web formatado corretamente.
2023-04-12
- O analisador
GCP_SECURITYCENTER_OBSERVATION
foi atualizado como padrão.
Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais do Google SecOps.