Coletar registros de violação de postura do Cloud Security Command Center

Compatível com:

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

  1. Faça login no console do Google Cloud.
  2. Acesse a página Buckets do Cloud Storage.

    Acessar buckets

  3. Clique em Criar.

  4. 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:

    1. Na seção Começar, faça o seguinte:

      1. Insira um nome exclusivo que atenda aos requisitos de nome de bucket. Por exemplo, gcp-scc-posture-violation-logs.
      2. 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.

      3. Para adicionar um rótulo de bucket, clique na seta de expansão para abrir a seção Rótulos.

      4. Clique em Adicionar rótulo e especifique uma chave e um valor para o rótulo.

    2. Na seção Escolha onde armazenar seus dados, faça o seguinte:

      1. Selecione um tipo de local.
      2. Use o menu do tipo de local para selecionar um Local em que os dados de objetos no bucket serão armazenados permanentemente.

      3. Para configurar a replicação entre buckets, abra a seção Configurar a replicação entre buckets.

    3. 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.

    4. 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.

    5. Na seção Escolha como proteger os dados do objeto, faça o seguinte:

      1. Selecione qualquer uma das opções em Proteção de dados que você quer definir para o bucket.
      2. 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.
  5. Clique em Criar.

Configurar o registro do Security Command Center

  1. Faça login no console do Google Cloud.
  2. Acesse a página Security Command Center.

    Acesse Security Command Center

  3. Selecione a organização.

  4. Clique em Configurações.

  5. Clique na guia Exportações contínuas.

  6. Em Nome da exportação, clique em Exportação do Logging.

  7. Em Coletores, ative a opção Registrar descobertas no Logging.

  8. Em Projeto do Logging, insira ou pesquise o projeto em que você quer registrar as descobertas.

  9. Clique em Salvar.

Configurar Google Cloud exportação de registros de violação de postura do Security Command Center

  1. Faça login no console do Google Cloud.
  2. Acesse Logging > Roteador de registros.
  3. Clique em Criar coletor.
  4. 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.

  5. Clique em Criar.

Configurar permissões do Cloud Storage

  1. Acesse IAM e administrador > IAM.
  2. Localize a conta de serviço do Cloud Logging.
  3. 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

  1. Acesse Configurações do SIEM > Feeds.
  2. Clique em Adicionar novo.
  3. 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.
  4. Selecione Google Cloud Storage como o Tipo de origem.
  5. Selecione Security Command Center Posture Violation como o Tipo de registro.
  6. Clique em Pegar conta de serviço ao lado do campo Conta de serviço do Chronicle.
  7. Clique em Próxima.
  8. 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.

  9. Clique em Próxima.

  10. 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 bruto resource.projectDisplayName ao final do URL mapeado para o campo UDM security_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.