Coletar registros do Atlassian Bitbucket

Compatível com:

Visão geral

Esse analisador extrai campos dos registros JSON do Atlassian Bitbucket e os mapeia para a UDM. Ele processa vários formatos de registros, preenche entidades principais ou de destino com base em campos disponíveis, como endereços IP, IDs de usuário e informações de recursos. Ele também categoriza eventos com base na atividade de rede e do usuário e enriquece os dados com descobertas de segurança, se houver. O analisador prioriza agentRealtimeInfo em vez de agentDetectionInfo ao preencher campos.

Antes de começar

Verifique se você atende aos seguintes pré-requisitos:

  • Instância do Google SecOps.
  • Acesso privilegiado a um repositório.

Configurar feeds

Há dois pontos de entrada diferentes para configurar feeds na plataforma do Google SecOps:

  • Configurações do SIEM > Feeds
  • Central de conteúdo > Pacotes de conteúdo

Configure feeds em "Configurações do SIEM" > "Feeds".

Para configurar um feed, siga estas etapas:

  1. Acesse Configurações do SIEM > Feeds.
  2. Clique em Adicionar novo feed.
  3. Na próxima página, clique em Configurar um único feed.
  4. No campo Nome do feed, insira um nome para o feed (por exemplo, Registros do Atlassian Bitbucket).
  5. Selecione Webhook como o Tipo de origem.
  6. Selecione Atlassian Bitbucket como o Tipo de registro.
  7. Clique em Próxima.
  8. Opcional: especifique valores para os seguintes parâmetros de entrada:
    • Delimitador de divisão: o delimitador usado para separar linhas de registro, como \n.
    • Namespace do recurso: o namespace do recurso.
    • Rótulos de ingestão: o rótulo aplicado aos eventos deste feed.
  9. Clique em Próxima.
  10. Revise a configuração do feed na tela Finalizar e clique em Enviar.
  11. Clique em Gerar chave secreta para autenticar o feed.
  12. Copie e armazene a chave secreta. Não é possível ver essa chave secreta novamente. Se necessário, você pode gerar uma nova chave secreta, mas isso torna a anterior obsoleta.
  13. Na guia Detalhes, copie o URL do endpoint do feed no campo Informações do endpoint. É necessário especificar esse URL de endpoint no aplicativo cliente.
  14. Clique em Concluído.

Configurar feeds na Central de conteúdo

Especifique valores para os seguintes campos:

  • Delimitador de divisão: o delimitador usado para separar linhas de registro, como \n.

Opções avançadas

  • Namespace do recurso: o namespace do recurso.
  • Rótulos de ingestão: o rótulo aplicado aos eventos deste feed.
  • Nome do feed: um valor pré-preenchido que identifica o feed.
  • Tipo de origem: método usado para coletar registros no Google SecOps.

  • Clique em Gerar chave secreta para autenticar o feed.

  • Copie e armazene a chave secreta. Não é possível ver essa chave secreta novamente. Se necessário, você pode gerar uma nova chave secreta, mas isso torna a anterior obsoleta.

  • Na guia Detalhes, copie o URL do endpoint do feed no campo Informações do endpoint. É necessário especificar esse URL de endpoint no aplicativo cliente.

Criar uma chave de API para o feed de webhook

  1. Acesse o console doGoogle Cloud > Credenciais.

    Ir para Credenciais

  2. Clique em Criar credenciais e, em seguida, selecione Chave de API.

  3. Restrinja o acesso da chave de API à API Google Security Operations.

Especifique o URL do endpoint

  1. No aplicativo cliente, especifique o URL do endpoint HTTPS fornecido no feed do webhook.
  2. Ative a autenticação especificando a chave de API e a chave secreta como parte do cabeçalho personalizado no seguinte formato:

    X-goog-api-key = API_KEY
    X-Webhook-Access-Key = SECRET
    

    Recomendação: especifique a chave de API como um cabeçalho em vez de no URL. Se o cliente de webhook não aceitar cabeçalhos personalizados, especifique a chave de API e a chave secreta usando parâmetros de consulta no seguinte formato:

    ENDPOINT_URL?key=API_KEY&secret=SECRET
    

Substitua:

  • ENDPOINT_URL: o URL do endpoint do feed.
  • API_KEY: a chave de API para autenticar no Google Security Operations.
  • SECRET: a chave secreta gerada para autenticar o feed.

Criar um webhook no Atlassian Bitbucket

  1. No Bitbucket, acesse as configurações do repositório.
  2. Clique em Webhooks em Fluxo de trabalho.
  3. Clique em Add webhook.
  4. Configure os seguintes campos:
    • Título: forneça um nome descritivo (por exemplo, Google SecOps).
    • URL: insira o URL do endpoint de API Google SecOps.
    • Status: definido como Ativo.
    • Acionadores: selecione os eventos relevantes.
  5. Clique em Salvar.

Tabela de mapeamento do UDM

Campo de registro Mapeamento do UDM Lógica
agentComputerName principal.hostname Preenchido com base em agentRealtimeInfo.agentComputerName.
agentDetectionInfo.accountId metadata.product_deployment_id Convertido em string. Usado se agentRealtimeInfo.accountId não estiver presente.
agentDetectionInfo.accountName metadata.product_name Usado se agentRealtimeInfo.accountName não estiver presente.
agentDetectionInfo.agentDomain principal.administrative_domain Mapeado diretamente.
agentDetectionInfo.agentIpV4 target.ip Extraído da matriz JSON e mesclado no campo target.ip.
agentDetectionInfo.agentIpV6 principal.ip Extraído da matriz JSON e mesclado no campo principal.ip.
agentDetectionInfo.agentLastLoggedInUserName principal.user.userid Analisado para extrair o ID do usuário e o domínio (se houver). Se não houver domínio, mapeado diretamente para principal.user.userid.
agentDetectionInfo.agentOsName principal.platform_version, principal.asset.platform_software.platform_version Usado se agentRealtimeInfo.agentOsName não estiver presente.
agentDetectionInfo.agentOsRevision principal.platform_patch_level, principal.asset.platform_software.platform_patch_level Usado se agentRealtimeInfo.agentOsRevision não estiver presente.
agentDetectionInfo.agentRegisteredAt principal.asset.first_discover_time Analisado como um carimbo de data/hora ISO8601.
agentDetectionInfo.agentUuid principal.asset_id, principal.asset.asset_id Usado se agentRealtimeInfo.agentUuid não estiver presente. Prefixo "agentUuid:".
agentDetectionInfo.agentVersion metadata.product_version Usado se agentRealtimeInfo.agentVersion não estiver presente.
agentDetectionInfo.externalIp target.ip Mapeado diretamente.
agentDetectionInfo.groupId principal.user.group_identifiers Será mesclado ao campo se não estiver vazio ou com "-". Usado se agentRealtimeInfo.groupId não estiver presente.
agentDetectionInfo.groupName principal.group.group_display_name Usado se agentRealtimeInfo.groupName não estiver presente.
agentDetectionInfo.siteId additional.fields Adicionado como um par de chave-valor com a chave "agentDetectionInfo.siteId". Usado se agentRealtimeInfo.siteId não estiver presente.
agentDetectionInfo.siteName additional.fields Adicionado como um par de chave-valor com a chave "agentDetectionInfo.siteName". Usado se agentRealtimeInfo.siteName não estiver presente.
agentRealtimeInfo.accountId metadata.product_deployment_id Convertido em string.
agentRealtimeInfo.accountName metadata.product_name Mapeado diretamente.
agentRealtimeInfo.agentComputerName principal.hostname, principal.asset.hostname Mapeado diretamente.
agentRealtimeInfo.agentId principal.asset_id, principal.asset.asset_id Prefixo "agentId:".
agentRealtimeInfo.agentMachineType principal.asset.category Mapeado diretamente.
agentRealtimeInfo.agentOsName principal.platform_version, principal.asset.platform_software.platform_version Mapeado diretamente.
agentRealtimeInfo.agentOsRevision principal.platform_patch_level, principal.asset.platform_software.platform_patch_level Mapeado diretamente.
agentRealtimeInfo.agentOsType principal.asset.platform_software.platform, principal.platform Mapeado para WINDOWS, MAC ou LINUX com base no valor.
agentRealtimeInfo.agentUuid principal.asset_id, principal.asset.asset_id Mapeado diretamente. Prefixo "agentUuid:".
agentRealtimeInfo.agentVersion metadata.product_version Mapeado diretamente.
agentRealtimeInfo.groupId principal.user.group_identifiers Unido ao campo se não estiver vazio ou com "-".
agentRealtimeInfo.groupName principal.group.group_display_name Mapeado diretamente.
agentRealtimeInfo.siteId additional.fields Adicionado como um par de chave-valor com a chave "agentDetectionInfo.siteId".
agentRealtimeInfo.siteName additional.fields Adicionado como um par de chave-valor com a chave "agentDetectionInfo.siteName".
associatedItems.0.id principal.resource.id Mapeado diretamente.
associatedItems.0.name principal.resource.name Mapeado diretamente.
associatedItems.0.typeName principal.resource.resource_subtype Mapeado diretamente.
authorAccountId principal.user.userid Mapeado diretamente.
category metadata.product_event_type Mapeado diretamente. Se não estiver presente e a mensagem contiver "ameaças", defina como "Ameaças".
id metadata.product_log_id Convertido em string.
indicators.0.description security_result.description Mapeado diretamente.
objectItem.id additional.fields Adicionado como um par de chave-valor com a chave "objectItem.id".
objectItem.name additional.fields Adicionado como um par de chave-valor com a chave "objectItem.name".
objectItem.typeName additional.fields Adicionado como um par de chave-valor com a chave "objectItem.typeName".
remoteAddress principal.ip Mapeado diretamente.
summary security_result.summary Mapeado diretamente.
threatInfo.classification security_result.category_details Mapeado diretamente. Também usado para determinar security_result.category.
threatInfo.collectionId metadata.ingestion_labels Adicionado como um par de chave-valor com a chave "alert_aggregation_value".
threatInfo.confidenceLevel security_result.confidence_details Mapeado diretamente. Também usado para determinar security_result.confidence.
threatInfo.createdAt metadata.collected_timestamp Analisado como um carimbo de data/hora ISO8601.
threatInfo.detectionEngines metadata.ingestion_labels O key e o title de cada elemento são adicionados como pares de chave-valor.
threatInfo.fileExtensionType target.process.file.mime_type Mapeado diretamente.
threatInfo.filePath target.file.full_path Mapeado diretamente.
threatInfo.fileSize target.file.size Convertido para string e depois para inteiro sem sinal.
threatInfo.identifiedAt event_timestamp Analisado como um carimbo de data/hora ISO8601.
threatInfo.maliciousProcessArguments principal.process.command_line Mapeado diretamente. Também usado no campo security_result.summary se summary não estiver presente.
threatInfo.md5 target.file.md5 Mapeado diretamente.
threatInfo.originatorProcess target.process.parent_process.file.full_path Mapeado diretamente. Também usado no campo security_result.summary se summary não estiver presente.
threatInfo.processUser target.user.userid Mapeado diretamente.
threatInfo.sha1 target.file.sha1 Mapeado diretamente.
threatInfo.sha256 target.file.sha256 Mapeado diretamente.
threatInfo.storyline principal.process.product_specific_process_id Prefixo "ID:".
threatInfo.threatId security_result.threat_id Mapeado diretamente.
threatInfo.threatName security_result.threat_name, target.file.names Mapeado e mesclado diretamente em target.file.names. Também usado no campo security_result.summary se summary não estiver presente. Defina como "GENERIC_EVENT" inicialmente. Mudou para "NETWORK_UNCATEGORIZED", "STATUS_UPDATE" ou "USER_UNCATEGORIZED" com base na presença do principal e do IP/nome de host/usuário de destino. Copiado do campo event.type. Defina como "Atlassian Bitbucket". Defina como "Atlassian Bitbucket" inicialmente. Pode ser substituído por agentRealtimeInfo.accountName ou agentDetectionInfo.accountName.
timestamp metadata.event_timestamp, timestamp Mapeado diretamente.

Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais do Google SecOps.