Recolha registos do Atlassian Jira

Compatível com:

Vista geral

Este analisador processa registos do Atlassian Jira nos formatos SYSLOG e JSON. Primeiro, tenta analisar a mensagem como JSON. Se falhar, usa padrões grok para analisar mensagens formatadas em SYSLOG, extraindo vários campos, como endereços IP, nomes de utilizadores, métodos HTTP e códigos de resposta, antes de os mapear para o UDM. O analisador também processa eventos de auditoria específicos do Jira, incluindo sucessos e falhas de início de sessão, e mapeia campos relevantes para atributos de resultados de segurança no UDM.

Antes de começar

Certifique-se de que tem os seguintes pré-requisitos:

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

Configure feeds a partir de Definições do SIEM > Feeds

Para configurar um feed, siga estes passos:

  1. Aceda a Definições do SIEM > Feeds.
  2. Clique em Adicionar novo feed.
  3. Na página seguinte, clique em Configurar um único feed.
  4. No campo Nome do feed, introduza um nome para o feed (por exemplo, Registos do Atlassian Jira).
  5. Selecione Webhook como o Tipo de origem.
  6. Selecione Atlassian Jira como o Tipo de registo.
  7. Clicar em Seguinte.
  8. Opcional: especifique valores para os seguintes parâmetros de entrada:
    • Delimitador de divisão: o delimitador usado para separar linhas de registo, como \n.
    • Espaço de nomes do recurso: o espaço de nomes do recurso.
    • Etiquetas de carregamento: a etiqueta aplicada aos eventos deste feed.
  9. Clicar em Seguinte.
  10. Reveja a configuração do feed no ecrã Finalizar e, de seguida, clique em Enviar.
  11. Clique em Gerar chave secreta para gerar uma chave secreta para autenticar este feed.
  12. Copie e armazene a chave secreta. Não pode ver esta chave secreta novamente. Se necessário, pode regenerar uma nova chave secreta, mas esta ação torna a chave secreta anterior obsoleta.
  13. No separador Detalhes, copie o URL do ponto final do feed do campo Informações do ponto final. Tem de especificar este URL do ponto final na sua aplicação cliente.
  14. Clique em Concluído.

Crie uma chave da API para o feed de webhook

  1. Aceda à Google Cloud consola > Credenciais.
  2. Clique em Criar credenciais e, de seguida, selecione Chave de API.
  3. Restrinja o acesso da chave de API à API Google Security Operations.

Especifique o URL do ponto final

  1. Na aplicação cliente, especifique o URL do ponto final HTTPS fornecido no feed do webhook.
  2. Ative a autenticação especificando a chave da 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 da API como um cabeçalho em vez de a especificar no URL. Se o seu cliente de webhook não suportar cabeçalhos personalizados, pode especificar a chave da API e a chave secreta através de parâmetros de consulta no seguinte formato:

    ENDPOINT_URL?key=API_KEY&secret=SECRET
    

Substitua o seguinte:

  • ENDPOINT_URL: o URL do ponto final do feed.
  • API_KEY: a chave da API para autenticar no Google Security Operations.
  • SECRET: a chave secreta que gerou para autenticar o feed.

Crie um webhook no Atlassian Jira para o Google SecOps

  1. Aceda à sua instância do Jira como administrador.
  2. Aceda a Definições settings > Sistema > WebHooks.
  3. Clique em Criar um WebHook.
  4. Configure os seguintes detalhes do webhook:
    • Nome: indique um nome descritivo para o webhook (por exemplo, Integração do Google SecOps).
    • URL: introduza o URL do ponto final da API Google SecOps.
    • Eventos: selecione os eventos do Jira que devem acionar o webhook. Escolha os eventos relevantes para as suas necessidades de monitorização de segurança (por exemplo, problema criado, problema atualizado, comentário adicionado). Se necessário, pode selecionar Todos os eventos.
    • Opcional: filtro JQL: use um filtro JQL para refinar ainda mais os eventos que acionam o webhook. Isto é útil para se concentrar em projetos específicos, tipos de problemas ou outros critérios.
    • Excluir corpo: deixe esta opção desmarcada. O webhook tem de enviar os dados de eventos no formato JSON para o Google SecOps.
  5. Clique em Criar para guardar a configuração do webhook.

Tabela de mapeamento da UDM

Campo de registo Mapeamento de UDM Lógica
affectedObjects.id target.resource.attribute.labels.value O campo id em cada objeto da matriz affectedObjects é mapeado para uma etiqueta 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 uma etiqueta 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 uma etiqueta 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", este campo é mapeado para target.user.userid. Caso contrário, é mapeado para uma etiqueta com a chave "associatedItems Id" em security_result.detection_fields.
associatedItems.0.name target.user.user_display_name Se associatedItems.0.typeName for "USER", este campo é mapeado para target.user.user_display_name. Caso contrário, é mapeado para uma etiqueta com a chave "associatedItems Name" em security_result.detection_fields.
associatedItems.0.parentId target.process.parent_process.pid Se associatedItems.0.typeName for "USER", este campo é mapeado para target.process.parent_process.pid.
associatedItems.0.parentName target.resource.parent Se associatedItems.0.typeName for "USER", este campo é mapeado para target.resource.parent.
associatedItems.0.typeName security_result.detection_fields.value Mapeado para uma etiqueta 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 uma etiqueta 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 uma etiqueta 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 uma etiqueta com a chave "Alterado de" em security_result.about.resource.attribute.labels.
changedValues.changedTo security_result.about.resource.attribute.labels.value Mapeado para uma etiqueta com a chave "Changed To" em security_result.about.resource.attribute.labels.
changedValues.fieldName security_result.about.resource.attribute.labels.value Mapeado para uma etiqueta com a chave "FieldName" em security_result.about.resource.attribute.labels.
changedValues.i18nKey security_result.about.resource.attribute.labels.value Mapeado para uma etiqueta com a chave "FieldName" em security_result.about.resource.attribute.labels.
changedValues.key security_result.about.resource.attribute.labels.value Mapeado para uma etiqueta com a chave "Alterado de" em security_result.about.resource.attribute.labels.
changedValues.to security_result.about.resource.attribute.labels.value Mapeado para uma etiqueta 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 uma etiqueta com a chave "Nome" em principal.resource.attribute.labels.
extraAttributes.value principal.resource.attribute.labels.value Mapeado para uma etiqueta com a chave "Valor" 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 uma etiqueta com a chave "objectItem Id" em security_result.detection_fields.
objectItem.name security_result.detection_fields.value Mapeado para uma etiqueta com a chave "objectItem Name" em security_result.detection_fields.
objectItem.typeName security_result.detection_fields.value Mapeado para uma etiqueta com a chave "objectItem TypeName" em security_result.detection_fields.
path principal.url Se não for "-" ou "/status", é mapeado para principal.url.
protocol network.ip_protocol Se for "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 unidos 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 estiver a analisar o syslog ou created se estiver a analisar o JSON. Se timestamp estiver disponível em JSON, é usado em vez de created. Se nenhum destes estiver presente, é usado o create_time do lote. 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) 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". Está sempre definido como "ATLASSIAN_JIRA". Está sempre definido como "ATLASSIAN_JIRA". Definido como "ALLOW" se auditType.action contiver "login successful" e "BLOCK" se auditType.action contiver "login failed".

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