Coletar registros não especificados do Security Command Center
Este documento explica como exportar e ingerir registros não especificados do Security Command Center no Google Security Operations usando o Cloud Storage. O analisador transforma descobertas de segurança formatadas em JSON bruto em um modelo de dados unificado (UDM). Ele lida especificamente com inconsistências na estrutura de dados de entrada, extrai campos relevantes, como detalhes de vulnerabilidade e informações do usuário, e enriquece a saída com rótulos e metadados para melhorar a análise e a correlação.
Antes de começar
Verifique se você 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.
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-unspecified-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 em registros 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 não especificados 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-unspecified-logs-sink
. - Destino do coletor: selecione Cloud Storage e insira o URI do bucket. Por exemplo,
gs://gcp-scc-unspecified-logs/
. Filtro de registros:
logName="projects/<your-project-id>/logs/cloudsecurityscanner.googleapis.com%2Funspecified" resource.type="security_command_center_unspecified"
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 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 não especificados do Security Command Center.
- Selecione Google Cloud Storage V2 como o Tipo de origem.
- Selecione Security Command Center não especificado 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-unspecified-logs/
. O URL precisa terminar com uma barra (/). Opções de exclusão de fontes: selecione a opção de exclusão de acordo com sua preferência.
Idade máxima do arquivo: inclui arquivos modificados no último número de 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 |
---|---|---|
canonicalName | read_only_udm.target.resource_ancestors.name | Mapeado diretamente do campo canonicalName do registro bruto. Isso representa o ancestral do recurso de destino. |
categoria | read_only_udm.metadata.product_event_type | Mapeado diretamente do campo category do registro bruto. |
categoria | read_only_udm.metadata.event_type | Derivado do campo category . Se a categoria for OPEN_FIREWALL e determinadas condições forem atendidas, ela será mapeada para SCAN_VULN_HOST . Caso contrário, o padrão é GENERIC_EVENT . |
categoria | read_only_udm.security_result.category | Mapeado do campo de registro bruto category . Se a categoria for OPEN_FIREWALL , ela será mapeada para POLICY_VIOLATION . |
complies.ids | read_only_udm.additional.fields.value.string_value | Mapeado diretamente do campo complies.ids do registro bruto. Representa o ID de compliance. |
complies.standard | read_only_udm.additional.fields.value.string_value | Mapeado diretamente do campo complies.standard do registro bruto. Representa o padrão de compliance. |
complies.standard | read_only_udm.about.labels.value | Mapeado diretamente do campo complies.standard do registro bruto. Representa o padrão de compliance. |
contacts.security.contacts.email | read_only_udm.security_result.about.user.email_addresses | Mapeado diretamente do campo contacts.security.contacts.email do registro bruto. Representa o endereço de e-mail do contato de segurança. |
contacts.technical.contacts.email | read_only_udm.security_result.about.user.email_addresses | Mapeado diretamente do campo contacts.technical.contacts.email do registro bruto. Representa o endereço de e-mail do contato técnico. |
createTime | read_only_udm.security_result.detection_fields.value | Mapeado diretamente do campo createTime do registro bruto. |
eventTime | read_only_udm.metadata.event_timestamp | Mapeado diretamente do campo de registro bruto eventTime após a conversão para um carimbo de data/hora. |
externalUri | read_only_udm.about.url | Mapeado diretamente do campo externalUri do registro bruto. |
mute | read_only_udm.security_result.detection_fields.value | Mapeado diretamente do campo mute do registro bruto. |
muteInitiator | read_only_udm.security_result.detection_fields.value | Mapeado diretamente do campo muteInitiator do registro bruto. |
muteUpdateTime | read_only_udm.security_result.detection_fields.value | Mapeado diretamente do campo muteUpdateTime do registro bruto. |
nome | read_only_udm.target.resource.attribute.labels.value | Mapeado diretamente do campo name do registro bruto. Ele será usado como o ID da descoberta. |
primária | read_only_udm.target.resource_ancestors.name | Mapeado diretamente do campo parent do registro bruto. |
parentDisplayName | read_only_udm.metadata.description | Mapeado diretamente do campo parentDisplayName do registro bruto. |
resourceName | read_only_udm.target.resource.name | Mapeado diretamente do campo resourceName do registro bruto. |
gravidade, | read_only_udm.security_result.severity | Mapeado diretamente do campo severity do registro bruto. |
sourceDisplayName | read_only_udm.target.resource.attribute.labels.value | Mapeado diretamente do campo sourceDisplayName do registro bruto. |
sourceProperties.AllowedIpRange | read_only_udm.target.resource.attribute.labels.value | Mapeado diretamente do campo sourceProperties.AllowedIpRange do registro bruto. |
sourceProperties.ExternallyAccessibleProtocolsAndPorts.IPProtocol | read_only_udm.target.resource.attribute.labels.value | Mapeado diretamente do campo sourceProperties.ExternallyAccessibleProtocolsAndPorts.IPProtocol do registro bruto. |
sourceProperties.ExternallyAccessibleProtocolsAndPorts.ports | read_only_udm.target.resource.attribute.labels.value | Mapeado diretamente do campo sourceProperties.ExternallyAccessibleProtocolsAndPorts.ports do registro bruto. |
sourceProperties.ReactivationCount | read_only_udm.target.resource.attribute.labels.value | Mapeado diretamente do campo sourceProperties.ReactivationCount do registro bruto. |
sourceProperties.ResourcePath | read_only_udm.target.resource.attribute.labels.value | Mapeado diretamente do campo sourceProperties.ResourcePath do registro bruto. Os valores são concatenados em uma única string. |
sourceProperties.ScannerName | read_only_udm.additional.fields.value.string_value | Mapeado diretamente do campo sourceProperties.ScannerName do registro bruto. |
sourceProperties.ScannerName | read_only_udm.principal.labels.value | Mapeado diretamente do campo sourceProperties.ScannerName do registro bruto. |
estado | read_only_udm.security_result.detection_fields.value | Mapeado diretamente do campo state do registro bruto. |
read_only_udm.metadata.log_type | Fixado no código como GCP_SECURITYCENTER_UNSPECIFIED no código do analisador. |
|
read_only_udm.metadata.product_log_id | Extraído do campo name , representando o ID da descoberta. |
|
read_only_udm.metadata.product_name | Fixado no código como Security Command Center no código do analisador. |
|
read_only_udm.metadata.vendor_name | Fixado no código como Google no código do analisador. |
|
read_only_udm.security_result.about.investigation.status | Fixado no código como NEW no código do analisador. |
|
read_only_udm.security_result.alert_state | Fixado no código como NOT_ALERTING no código do analisador. |
|
read_only_udm.security_result.url_back_to_product | Construído no código do analisador usando o formato: https://console.cloud.google.com/security/command-center/findingsv2;name=organizations%2F{organization_id}%2Fsources%2F{source_id}%2Ffindings%2F{finding_id} . |
|
read_only_udm.target.resource.product_object_id | Extraído do campo parent no registro bruto, representando o ID da origem. |
|
read_only_udm.target.resource.resource_type | Definido como CLUSTER no código do analisador. |
|
read_only_udm.target.resource_ancestors.resource_type | Fixado no código como CLOUD_PROJECT no código do analisador. |
|
read_only_udm.target.resource_ancestors.name | Extraído do campo resourceName no registro bruto, representando o ID do projeto. |
|
read_only_udm.additional.fields.key | Várias instâncias são criadas com chaves codificadas: compliances_id_0_0 , compliances_standard_0 e sourceProperties_ScannerName . |
|
read_only_udm.about.labels.key | Fixado no código como compliances_standard e compliances_id no código do analisador. |
|
read_only_udm.principal.labels.key | Fixado no código como sourceProperties_ScannerName no código do analisador. |
|
read_only_udm.target.resource.attribute.labels.key | Várias instâncias são criadas com chaves codificadas: finding_id , source_id , sourceProperties_ResourcePath , sourceDisplayName , sourceProperties_ReactivationCount , sourceProperties_AllowedIpRange , sourceProperties_ExternallyAccessibleProtocolsAndPorts_IPProtocol , sourceProperties_ExternallyAccessibleProtocolsAndPorts_ports . |
|
read_only_udm.security_result.about.user.attribute.roles.name | Duas instâncias são criadas, uma com o valor Security e outra com Technical , com base no campo contacts no registro bruto. |
|
read_only_udm.security_result.detection_fields.key | Várias instâncias são criadas com chaves codificadas: mute , mute_update_time , mute_initiator , createTime , state . |
Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais do Google SecOps.