Coletar registros de violação de postura do Cloud Security Command Center
Este documento explica como exportar e processar registros de violação de postura do Security Command Center nas operações de segurança do Google usando o Cloud Storage. O analisador transforma dados JSON brutos das descobertas em um modelo de dados unificado (UDM). Ele extrai campos relevantes, reestrutura os dados, os mapeia para campos do UDM e realiza várias validações e enriquecimentos para garantir a qualidade e a consistência dos dados.
Antes de começar
- Verifique se o Google Cloud Security Command Center está ativado no seu 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-posture-violation-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 violação de postura 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-posture-violation-logs-sink
. - Destino do sink: selecione Cloud Storage e insira o URI do bucket. Por exemplo,
gs://gcp-scc-posture-violation-logs
. Filtro de registro:
logName="projects/<your-project-id>/logs/cloudsecurityscanner.googleapis.com%2Fposture_violations" resource.type="cloud_security_center_posture_violation"
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 violação de postura 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 Logs de violação de postura do Security Command Center.
- Selecione Google Cloud Storage como o Tipo de origem.
- Selecione Security Command Center Posture Violation 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-posture-violation-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 |
---|---|---|
categoria | read_only_udm.metadata.product_event_type | Mapeamento direto. |
changed_policy | read_only_udm.security_result.rule_name | Mapeamento direto. |
cloudProvider | read_only_udm.target.resource.attribute.cloud.environment | Mapeamento direto. |
createTime | read_only_udm.security_result.detection_fields[createTime ] |
Mapeamento direto. |
finding.risks.riskCategory | read_only_udm.security_result.detection_fields[risk_category ] |
Mapeamento direto. |
mute | read_only_udm.security_result.detection_fields[mute ] |
Mapeamento direto. |
nome | read_only_udm.metadata.product_log_id | Mapeamento direto. |
originalProviderId | read_only_udm.target.resource.attribute.labels[original_provider_id ] |
Mapeamento direto. |
primária | read_only_udm.target.resource_ancestors[0].name | Mapeamento direto. |
parentDisplayName | read_only_udm.metadata.description | Mapeamento direto. |
propertyDataTypes.changed_policy.primitiveDataType | read_only_udm.security_result.rule_labels[changed_policy_primitive_data_type ] |
Mapeamento direto. |
propertyDataTypes.policy_drift_details.listValues.propertyDataTypes[0].structValue.fields.drift_details.structValue.fields.detected_configuration.primitiveDataType | read_only_udm.security_result.rule_labels[detected_configuration_primitive_data_type ] |
Mapeamento direto. |
propertyDataTypes.policy_drift_details.listValues.propertyDataTypes[0].structValue.fields.drift_details.structValue.fields.expected_configuration.primitiveDataType | read_only_udm.security_result.rule_labels[expected_configuration_primitive_data_type ] |
Mapeamento direto. |
propertyDataTypes.policy_drift_details.listValues.propertyDataTypes[0].structValue.fields.field_name.primitiveDataType | read_only_udm.security_result.rule_labels[field_name_primitive_data_type ] |
Mapeamento direto. |
propertyDataTypes.posture_deployment_name.primitiveDataType | read_only_udm.security_result.detection_fields[posture_deployment_name_primitiveDataType ] |
Mapeamento direto. |
propertyDataTypes.posture_deployment_resource.primitiveDataType | read_only_udm.security_result.detection_fields[posture_deployment_resource_primitiveDataType ] |
Mapeamento direto. |
propertyDataTypes.posture_name.primitiveDataType | read_only_udm.security_result.detection_fields[posture_name_primitiveDataType ] |
Mapeamento direto. |
propertyDataTypes.posture_revision_id.primitiveDataType | read_only_udm.security_result.detection_fields[posture_revision_id_primitiveDataType ] |
Mapeamento direto. |
resource.cloudProvider | read_only_udm.target.resource.attribute.cloud.environment | Mapeamento direto. |
resource.displayName | read_only_udm.target.resource.attribute.labels[resource_displayName ] |
Mapeamento direto. |
resource.gcpMetadata.organization | read_only_udm.target.resource.attribute.labels[resource_organization ] |
Mapeamento direto. |
resource.gcpMetadata.parent | read_only_udm.target.resource.attribute.labels[resource_parent ] |
Mapeamento direto. |
resource.gcpMetadata.parentDisplayName | read_only_udm.target.resource.attribute.labels[resource_parentDisplayName ] |
Mapeamento direto. |
resource.gcpMetadata.project | read_only_udm.target.resource.attribute.labels[resource_project ] |
Mapeamento direto. |
resource.gcpMetadata.projectDisplayName | read_only_udm.target.resource.attribute.labels[resource_projectDisplayName ] |
Mapeamento direto. |
resource.organization | read_only_udm.target.resource.attribute.labels[resource_organization ] |
Mapeamento direto. |
resource.resourcePath.nodes.displayName | read_only_udm.target.resource_ancestors.name | Mapeamento direto. |
resource.resourcePath.nodes.id | read_only_udm.target.resource_ancestors.product_object_id | Mapeamento direto. |
resource.resourcePath.nodes.nodeType | read_only_udm.target.resource_ancestors.resource_subtype | Mapeamento direto. |
resource.resourcePathString | read_only_udm.target.resource.attribute.labels[resource_path_string ] |
Mapeamento direto. |
resource.service | read_only_udm.target.resource_ancestors[10].name | Mapeamento direto. |
resource.type | read_only_udm.target.resource.attribute.labels[resource_type ] |
Mapeamento direto. |
resourceName | read_only_udm.target.resource.name | Mapeamento direto. |
securityPosture.changedPolicy | read_only_udm.security_result.rule_labels[changed_policy ] |
Mapeamento direto. |
securityPosture.name | read_only_udm.security_result.detection_fields[security_posture_name ] |
Mapeamento direto. |
securityPosture.policyDriftDetails[0].detectedValue | read_only_udm.security_result.rule_labels[policy_drift_details_detected_value ] |
Mapeamento direto. |
securityPosture.policyDriftDetails[0].expectedValue | read_only_udm.security_result.rule_labels[policy_drift_details_expected_value ] |
Mapeamento direto. |
securityPosture.policyDriftDetails[0].field | read_only_udm.security_result.rule_labels[policy_drift_details_field ] |
Mapeamento direto. |
securityPosture.policySet | read_only_udm.security_result.rule_set | Mapeamento direto. |
securityPosture.postureDeployment | read_only_udm.security_result.detection_fields[posture_deployment ] |
Mapeamento direto. |
securityPosture.postureDeploymentResource | read_only_udm.security_result.detection_fields[posture_deployment_resource ] |
Mapeamento direto. |
securityPosture.revisionId | read_only_udm.security_result.detection_fields[security_posture_revision_id ] |
Mapeamento direto. |
gravidade, | read_only_udm.security_result.severity | Mapeamento direto. |
sourceProperties.categories[0] | read_only_udm.security_result.detection_fields[source_properties_categories ] |
Mapeamento direto. |
sourceProperties.changed_policy | read_only_udm.security_result.rule_name | Mapeamento direto. |
sourceProperties.name | read_only_udm.target.application | Mapeamento direto. |
sourceProperties.policy_drift_details[0].drift_details.detected_configuration | read_only_udm.security_result.rule_labels[policy_drift_details_detected_configuration ] |
Mapeamento direto. |
sourceProperties.policy_drift_details[0].drift_details.expected_configuration | read_only_udm.security_result.rule_labels[policy_drift_details_expected_configuration ] |
Mapeamento direto. |
sourceProperties.policy_drift_details[0].field_name | read_only_udm.security_result.rule_labels[policy_drift_details_field_name ] |
Mapeamento direto. |
sourceProperties.posture_deployment | read_only_udm.security_result.detection_fields[source_properties_posture_deployment_name ] |
Mapeamento direto. |
sourceProperties.posture_deployment_name | read_only_udm.security_result.detection_fields[source_properties_posture_deployment_name ] |
Mapeamento direto. |
sourceProperties.posture_deployment_resource | read_only_udm.security_result.detection_fields[source_properties_posture_deployment_resource ] |
Mapeamento direto. |
sourceProperties.posture_name | read_only_udm.target.application | Mapeamento direto. |
sourceProperties.posture_revision_id | read_only_udm.security_result.detection_fields[source_properties_posture_revision_id ] |
Mapeamento direto. |
sourceProperties.revision_id | read_only_udm.security_result.detection_fields[source_properties_posture_revision_id ] |
Mapeamento direto. |
estado | read_only_udm.security_result.detection_fields[state ] |
Mapeamento direto. |
read_only_udm.metadata.vendor_name | O analisador mapeia o valor estático Google . |
|
read_only_udm.metadata.product_name | O analisador mapeia o valor estático Security Command Center . |
|
read_only_udm.target.resource.resource_type | O analisador mapeia o valor estático CLUSTER . |
|
read_only_udm.security_result.about.investigation.status | O analisador mapeia o valor estático NEW . |
|
read_only_udm.security_result.alert_state | O analisador mapeia o valor estático ALERTING . |
|
read_only_udm.is_alert | O analisador mapeia o valor estático true . |
|
read_only_udm.is_significant | O analisador mapeia o valor estático true . |
|
read_only_udm.metadata.event_type | O analisador mapeia para GENERIC_EVENT como valor padrão. Se o campo "category" for igual a "SECURITY_POSTURE_DRIFT" e "client_device_present" e "token_target.application" não estiverem vazios, ele será associado a "SERVICE_MODIFICATION". Se o campo "category" for igual a "SECURITY_POSTURE_POLICY_DRIFT", "SECURITY_POSTURE_POLICY_DELETE", "SECURITY_POSTURE_DETECTOR_DRIFT" ou "SECURITY_POSTURE_DETECTOR_DELETE" e "network_edr_not_present" for falso e "client_device_present" for verdadeiro, ele será mapeado para "SCAN_UNCATEGORIZED". Se o campo "token_metadata.event_type" for igual a "GENERIC_EVENT" e "network_edr_not_present" for falso e "client_device_present" for verdadeiro, ele será mapeado para "STATUS_UPDATE". |
|
read_only_udm.target.resource_ancestors[1].resource_type | O analisador mapeia o valor estático CLOUD_PROJECT . |
|
read_only_udm.target.resource.product_object_id | O analisador extrai o valor do campo "parent", entre o segundo e o terceiro caracteres "/". | |
read_only_udm.target.resource_ancestors[1].name | O analisador extrai o valor do campo "resourceName", entre o quarto e o quinto caracteres "/". | |
read_only_udm.security_result.url_back_to_product | O analisador cria o URL de forma dinâmica usando os IDs de organização, fonte e descoberta extraídos do registro. | |
securityMarks.name | read_only_udm.security_result.detection_fields[securityMarks_name ] |
Mapeamento direto. |
Alterações
2025-02-07
- Atualizamos o mapeamento do campo de UDM
security_result.url_back_to_product
. O valor do ID do projeto foi adicionado do valor do campo de registro brutoresource.projectDisplayName
ao final do URL mapeado para o campo UDMsecurity_result.url_back_to_product
com o prefixo;?project=
.
2024-11-21
- Foi adicionado suporte à versão v2 da API SCC, e os seguintes campos foram incluídos como parte da atualização
- resource.gcpMetadata.project
- resource.gcpMetadata.projectDisplayName
- resource.gcpMetadata.parent
- resource.gcpMetadata.parentDisplayName
- resource.gcpMetadata.folders.resourceFolder
- resource.gcpMetadata.folders.resourceFolderDisplayName
- resource.gcpMetadata.organization
2024-03-20
- Parser recém-criado.
Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais do Google SecOps.