Coletar registros do Atlassian Jira

Compatível com:

Visão geral

Esse analisador processa registros do Atlassian Jira nos formatos SYSLOG e JSON. Primeiro, ele tenta analisar a mensagem como JSON. Se isso falhar, ele usará padrões grok para analisar mensagens formatadas do SYSLOG, extraindo vários campos, como endereços IP, nomes de usuário, métodos HTTP e códigos de resposta, antes de mapeá-los para a UDM. O analisador também processa eventos de auditoria específicos do Jira, incluindo sucessos e falhas de login, e mapeia campos relevantes para atributos de resultados de segurança na UDM.

Antes de começar

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

  • Instância do Google SecOps.
  • Acesso privilegiado ao Atlassian Jira.

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 Jira).
  5. Selecione Webhook como o Tipo de origem.
  6. Selecione Atlassian Jira 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

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

  • 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 Jira para o Google SecOps

  1. Acesse sua instância do Jira como administrador.
  2. Acesse Configurações settings > Sistema > WebHooks.
  3. Clique em Criar um webhook.
  4. Configure os seguintes detalhes do webhook:
    • Nome: dê um nome descritivo ao webhook (por exemplo, Integração do Google SecOps).
    • URL: insira o URL do endpoint de API Google SecOps.
    • Eventos: selecione os eventos do Jira que vão acionar o webhook. Escolha os eventos relevantes para suas necessidades de monitoramento de segurança (por exemplo, problema criado, problema atualizado, comentário adicionado). Se necessário, selecione Todos os eventos.
    • Opcional: Filtro JQL: use um filtro JQL para refinar ainda mais quais eventos acionam o webhook. Isso é útil para focar em projetos, tipos de problemas ou outros critérios específicos.
    • Excluir corpo: deixe essa opção desmarcada. O webhook precisa enviar os dados de eventos no formato JSON para o Google SecOps.
  5. Clique em Criar para salvar a configuração do webhook.

Tabela de mapeamento do UDM

Campo de registro Mapeamento do UDM Lógica
affectedObjects.id target.resource.attribute.labels.value O campo id em cada objeto da matriz affectedObjects é mapeado para um rótulo com a chave "ID_[index]", em que [index] é a posição do objeto na matriz.
affectedObjects.name target.resource.attribute.labels.value O campo name em cada objeto da matriz affectedObjects é mapeado para um rótulo com a chave "Name_[index]", em que [index] é a posição do objeto na matriz.
affectedObjects.type target.resource.attribute.labels.value O campo type em cada objeto da matriz affectedObjects é mapeado para um rótulo com a chave "Type_[index]", em que [index] é a posição do objeto na matriz.
associatedItems.0.id target.user.userid Se associatedItems.0.typeName for "USER", esse campo será mapeado para target.user.userid. Caso contrário, ele será mapeado para um rótulo com a chave "associatedItems Id" em security_result.detection_fields.
associatedItems.0.name target.user.user_display_name Se associatedItems.0.typeName for "USER", esse campo será mapeado para target.user.user_display_name. Caso contrário, ele será mapeado para um rótulo com a chave "associatedItems Name" em security_result.detection_fields.
associatedItems.0.parentId target.process.parent_process.pid Se associatedItems.0.typeName for "USER", esse campo será mapeado para target.process.parent_process.pid.
associatedItems.0.parentName target.resource.parent Se associatedItems.0.typeName for "USER", esse campo será mapeado para target.resource.parent.
associatedItems.0.typeName security_result.detection_fields.value Mapeado para um rótulo com a chave "associatedItems TypeName" em security_result.detection_fields.
author.id principal.user.userid Mapeado para principal.user.userid.
author.name principal.user.user_display_name Mapeado para principal.user.user_display_name.
author.type principal.resource.attribute.labels.value Mapeado para um rótulo com a chave "Author Type" em principal.resource.attribute.labels.
author.uri principal.url Mapeado para principal.url.
authorAccountId principal.user.userid Mapeado para principal.user.userid.
authorKey target.resource.attribute.labels.value Mapeado para um rótulo com a chave "Author Key" em target.resource.attribute.labels.
auditType.action security_result.summary Mapeado para security_result.summary. Também usado para derivar security_result.action e metadata.event_type (USER_LOGIN se a ação contiver "login", ALLOW se "successful", BLOCK se "failed").
auditType.area metadata.product_event_type Mapeado para metadata.product_event_type.
auditType.category security_result.category_details Mapeado para security_result.category_details.
category metadata.product_event_type Mapeado para metadata.product_event_type.
changedValues.changedFrom security_result.about.resource.attribute.labels.value Mapeado para um rótulo com a chave "Mudou de" em security_result.about.resource.attribute.labels.
changedValues.changedTo security_result.about.resource.attribute.labels.value Mapeado para um rótulo com a chave "Changed To" em security_result.about.resource.attribute.labels.
changedValues.fieldName security_result.about.resource.attribute.labels.value Mapeado para um rótulo com a chave "FieldName" em security_result.about.resource.attribute.labels.
changedValues.i18nKey security_result.about.resource.attribute.labels.value Mapeado para um rótulo com a chave "FieldName" em security_result.about.resource.attribute.labels.
changedValues.key security_result.about.resource.attribute.labels.value Mapeado para um rótulo com a chave "Mudou de" em security_result.about.resource.attribute.labels.
changedValues.to security_result.about.resource.attribute.labels.value Mapeado para um rótulo com a chave "Changed To" em security_result.about.resource.attribute.labels.
created metadata.event_timestamp Analisado e mapeado para metadata.event_timestamp.
dst_ip target.ip Mapeado para target.ip.
extraAttributes.name principal.resource.attribute.labels.value Mapeado para um rótulo com a chave "Name" em principal.resource.attribute.labels.
extraAttributes.value principal.resource.attribute.labels.value Mapeado para um rótulo com a chave "Value" em principal.resource.attribute.labels.
http_method network.http.method Mapeado para network.http.method.
http_referral_url network.http.referral_url Mapeado para network.http.referral_url.
id metadata.product_log_id Mapeado para metadata.product_log_id.
objectItem.id security_result.detection_fields.value Mapeado para um rótulo com a chave "objectItem Id" em security_result.detection_fields.
objectItem.name security_result.detection_fields.value Mapeado para um rótulo com a chave "objectItem Name" em security_result.detection_fields.
objectItem.typeName security_result.detection_fields.value Mapeado para um rótulo com a chave "objectItem TypeName" em security_result.detection_fields.
path principal.url Se não for "-" ou "/status", será mapeado para principal.url.
protocol network.ip_protocol Se "HTTP", mapeado para network.ip_protocol.
remoteAddress principal.ip Mapeado para principal.ip.
response_code network.http.response_code Mapeado para network.http.response_code.
sent_bytes network.sent_bytes Mapeado para network.sent_bytes.
source principal.ip Analisados para extrair endereços IP e mesclados em principal.ip.
src_ip1, src_ip2, src_ip3 principal.ip Mapeado para principal.ip.
summary metadata.description Mapeado para metadata.description.
user_agent network.http.user_agent Mapeado para network.http.user_agent.
user_name principal.user.userid Mapeado para principal.user.userid. Defina como "MACHINE" se auditType.action contiver "login". Derivado de date_time se a análise for de syslog ou de created se for de JSON. Se timestamp estiver disponível em JSON, ele será usado em vez de created. Se nenhum deles estiver presente, o create_time do lote será usado. Derivado com base na presença de outros campos: NETWORK_HTTP se dst_ip estiver presente, USER_UNCATEGORIZED se user_name ou (associatedItems.0.typeName for "USER" e associatedItems.0.id estiver presente), STATUS_UPDATE se src_ip1, src_ip2, src_ip3 ou remoteAddress estiver presente ou GENERIC_EVENT caso contrário. Substituído por USER_LOGIN se auditType.action contiver "login". Sempre definido como "ATLASSIAN_JIRA". Sempre definido como "ATLASSIAN_JIRA". Defina como "ALLOW" se auditType.action contiver "login successful" e como "BLOCK" se auditType.action contiver "login failed".

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