Coletar registros do Auth0

Compatível com:

Visão geral

Esse analisador extrai eventos de registro do Auth0 de mensagens formatadas em JSON. Ele inicializa campos da UDM, analisa o payload JSON, mapeia campos relevantes para o esquema da UDM e categoriza eventos com base no campo type, definindo ações de segurança e tipos de eventos adequados.

Antes de começar

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

  • Instância do Google SecOps.
  • Conta do Auth0 com as permissões necessárias.

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 Auth0).
  5. Selecione Webhook como o Tipo de origem.
  6. Selecione AUTH_ZERO 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 Chronicle.

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.

Configurar o webhook do Auth0 para o Google SecOps

  1. Acesse o painel do Auth0.
  2. Acesse Monitoring > Streams.
  3. Clique em Criar fluxo de registros.
  4. Clique no botão Webhook personalizado e dê a ele um nome de sua escolha. Por exemplo: Webhook do Google SecOps.
  5. Configure o seguinte:
    • URL de payload: insira o URL do endpoint de API Google SecOps.
    • Content-Type: defina o cabeçalho Content-Type como application/json. Isso informa ao Google SecOps o formato dos dados enviados.
    • Opcional: Token de autorização: configure um secret para aumentar a segurança. Isso será usado para verificar a autenticidade das solicitações de webhook.

Personalizar o payload: é possível personalizar o payload enviado ao Google SecOps modificando a categoria do evento. Isso permite selecionar pontos de dados específicos do evento do Auth0 e formatá-los conforme necessário para o Google SecOps. Consulte a documentação do Auth0 para mais detalhes sobre as variáveis de contexto e opções de script disponíveis. Verifique se o payload final está em conformidade com o formato UDM esperado do Google SecOps.

  1. Clique em Salvar para criar o webhook.
  2. Acione o evento associado ao hook (por exemplo, registrar um novo usuário, fazer login).
  3. Verifique se os registros estão sendo enviados para o Google SecOps conferindo o feed no console do Google SecOps.

Tabela de mapeamento do UDM

Campo de registro Mapeamento do UDM Lógica
client_id principal.asset.product_object_id Mapeado diretamente do campo client_id.
client_name principal.hostname Mapeado diretamente do campo client_name.
connection security_result.description Mapeado diretamente do campo connection.
connection_id security_result.rule_id Mapeado diretamente do campo connection_id.
date metadata.event_timestamp Analisado do campo date usando o formato ISO8601.
description metadata.description Mapeado diretamente do campo description.
details.error security_result.detection_fields Mapeado do campo details.error. A chave é "Error".
details.error.oauthError security_result.detection_fields Mapeado do campo details.error.oauthError. A chave é "oauthError".
details.error.type security_result.detection_fields Mapeado do campo details.error.type. A chave é "oauth_error_type".
details.ipOnAllowlist security_result.detection_fields Mapeado do campo details.ipOnAllowlist. A chave é "ipOnAllowlist".
details.link target.url Mapeado diretamente do campo details.link, se presente. Caso contrário, derivado de outros campos (consulte abaixo).
details.request.auth.strategy security_result.detection_fields Mapeado do campo details.request.auth.strategy. A chave é "strategy".
details.request.body.app_metadata.blockedReason security_result.detection_fields Mapeado do campo details.request.body.app_metadata.blockedReason. A chave é "blockedReason".
details.request.body.app_metadata.customer_id target.user.product_object_id Mapeado diretamente do campo details.request.body.app_metadata.customer_id.
details.request.body.app_metadata.migrated security_result.detection_fields Mapeado do campo details.request.body.app_metadata.migrated. A chave é "migrated".
details.request.channel security_result.detection_fields Mapeado do campo details.request.channel. A chave é "channel".
details.request.method network.http.method Mapeado diretamente do campo details.request.method após a conversão para maiúsculas.
details.request.path target.url Mapeado diretamente do campo details.request.path se details.link não estiver presente. Caso contrário, derivado de outros campos (veja abaixo).
details.response.body.email target.user.email_addresses Mapeado diretamente do campo details.response.body.email.
details.response.body.email_verified security_result.detection_fields Mapeado do campo details.response.body.email_verified. A chave é "email_verified".
details.response.body.nickname target.user.user_display_name Mapeado diretamente do campo details.response.body.nickname.
details.response.body.user_id target.user.userid Mapeado diretamente do campo details.response.body.user_id.
details.response.statusCode network.http.response_code Mapeado diretamente do campo details.response.statusCode após a conversão para número inteiro.
details.return_to target.url Mapeado diretamente do campo details.return_to se details.link e details.request.path não estiverem presentes. Caso contrário, derivado de outros campos (veja abaixo).
details.session_id network.session_id Mapeado diretamente do campo details.session_id.
details.stats.loginsCount additional.fields Mapeado do campo details.stats.loginsCount. A chave é "loginsCount".
details.requiresVerification security_result.detection_fields Mapeado do campo details.requiresVerification. A chave é "requiresVerification".
details.to target.user.email_addresses Mapeado diretamente do campo details.to.
hostname target.hostname Mapeado diretamente do campo hostname.
ip principal.ip Mapeado diretamente do campo ip.
js_data.audience target.url Mapeado diretamente do campo js_data.audience se details.link, details.request.path e details.return_to não estiverem presentes.
js_data.details.body.email_verified security_result.detection_fields Mapeado do campo js_data.details.body.email_verified. A chave é "email_verified".
js_data.details.body.is_signup security_result.detection_fields Mapeado do campo js_data.details.body.is_signup. A chave é "is_signup".
js_data.details.body.transaction.redirect_uri target.url Mapeado diretamente do campo js_data.details.body.transaction.redirect_uri se details.link, details.request.path, details.return_to e js_data.audience não estiverem presentes.
js_data.scope security_result.detection_fields Mapeado do campo js_data.scope. A chave é "scope".
js_data.tracking_id security_result.detection_fields Mapeado do campo js_data.tracking_id. A chave é "tracking_id".
log_id metadata.product_log_id Mapeado diretamente do campo log_id.
metadata.log_type metadata.log_type Mapeado diretamente do campo log_type.
metadata.product_name metadata.product_name Defina como "AUTH_ZERO".
metadata.vendor_name metadata.vendor_name Defina como "AUTH_ZERO".
metadata.product_event_type metadata.product_event_type Mapeado diretamente do campo type.
network.http.parsed_user_agent network.http.parsed_user_agent Analisado do campo user_agent.
network.http.user_agent network.http.user_agent Mapeado diretamente do campo user_agent.
security_result.action security_result.action Determinado pelo campo type (ALLOW ou BLOCK). Consulte o código do analisador para mapeamentos específicos.
strategy security_result.detection_fields Mapeado do campo strategy. A chave é "strategy".
strategy_type security_result.detection_fields Mapeado do campo strategy_type. A chave é "strategy_type".
target.user.email_addresses target.user.email_addresses Mapeado diretamente do campo user_name se for um endereço de e-mail. Caso contrário, é derivado de outros campos (consulte acima).
target.user.userid target.user.userid Mapeado diretamente do campo user_id ou details.response.body.user_id ou user_name se user_id não estiver presente.
user_agent network.http.user_agent Mapeado diretamente do campo user_agent.
user_id target.user.userid Mapeado diretamente do campo user_id.
user_name target.user.email_addresses Mapeado diretamente do campo user_name. Defina como "MACHINE" se security_result.action for "ALLOW" e type for "slo", "sapi", "s", "ss" ou "ssa". Defina como "OTP" se extensions.auth.type for "MACHINE" e type for "slo". Determinado por uma combinação de campos, incluindo type, client_name, ip, hostname e has_user. Consulte o código do analisador para mapeamentos específicos.

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