Recolha registos do Auth0

Compatível com:

Vista geral

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

Antes de começar

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

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

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

    Aceder a Credenciais

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

  3. Restrinja o acesso da chave da API à API Chronicle.

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.

Configure o webhook do Auth0 para o Google SecOps

  1. Aceda ao painel de controlo do Auth0.
  2. Aceda a Monitorização > Streams.
  3. Clique em Criar stream de registos.
  4. Clique no botão Webhook personalizado e atribua-lhe um nome à sua escolha. Por exemplo: Webhook do Google SecOps.
  5. Configure o seguinte:
    • URL de payload: introduza o URL do ponto final da API Google SecOps.
    • Content-Type: defina o cabeçalho Content-Type como application/json. Isto indica ao Google SecOps o formato dos dados que estão a ser enviados.
    • Opcional: símbolo de autorização: configure um segredo para maior segurança. Isto vai ser usado para validar a autenticidade dos pedidos de webhook.

Personalize o payload: pode personalizar o payload enviado para o Google SecOps modificando a categoria do evento. Isto permite-lhe selecionar pontos de dados específicos do evento Auth0 e formatá-los conforme necessário para o Google SecOps. Consulte a documentação do Auth0 para ver detalhes sobre as variáveis de contexto e as opções de scripting disponíveis. Certifique-se de que a carga útil final está em conformidade com o formato UDM do Google SecOps esperado.

  1. Clique em Guardar para criar o webhook.
  2. Acione o evento associado ao gancho (por exemplo, registe um novo utilizador, inicie sessão).
  3. Valide se os registos estão a ser enviados para o Google SecOps verificando o feed na consola do Google SecOps.

Tabela de mapeamento da UDM

Campo de registo Mapeamento de UDM Lógica
client_id principal.asset.product_object_id Mapeado diretamente a partir do campo client_id.
client_name principal.hostname Mapeado diretamente a partir do campo client_name.
connection security_result.description Mapeado diretamente a partir do campo connection.
connection_id security_result.rule_id Mapeado diretamente a partir do campo connection_id.
date metadata.event_timestamp Analisado a partir do campo date através do formato ISO8601.
description metadata.description Mapeado diretamente a partir do campo description.
details.error security_result.detection_fields Mapeado a partir do campo details.error. A chave é "Error".
details.error.oauthError security_result.detection_fields Mapeado a partir do campo details.error.oauthError. A chave é "oauthError".
details.error.type security_result.detection_fields Mapeado a partir do campo details.error.type. A chave é "oauth_error_type".
details.ipOnAllowlist security_result.detection_fields Mapeado a partir do campo details.ipOnAllowlist. A chave é "ipOnAllowlist".
details.link target.url Mapeado diretamente a partir do campo details.link, se estiver presente. Caso contrário, é derivado de outros campos (veja abaixo).
details.request.auth.strategy security_result.detection_fields Mapeado a partir do campo details.request.auth.strategy. A chave é "strategy".
details.request.body.app_metadata.blockedReason security_result.detection_fields Mapeado a partir 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 a partir do campo details.request.body.app_metadata.customer_id.
details.request.body.app_metadata.migrated security_result.detection_fields Mapeado a partir do campo details.request.body.app_metadata.migrated. A chave é "migrada".
details.request.channel security_result.detection_fields Mapeado a partir do campo details.request.channel. A chave é "channel".
details.request.method network.http.method Mapeado diretamente a partir do campo details.request.method após a conversão para letras maiúsculas.
details.request.path target.url Mapeado diretamente a partir 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 a partir do campo details.response.body.email.
details.response.body.email_verified security_result.detection_fields Mapeado a partir do campo details.response.body.email_verified. A chave é "email_verified".
details.response.body.nickname target.user.user_display_name Mapeado diretamente a partir do campo details.response.body.nickname.
details.response.body.user_id target.user.userid Mapeado diretamente a partir do campo details.response.body.user_id.
details.response.statusCode network.http.response_code Mapeado diretamente a partir do campo details.response.statusCode após a conversão para número inteiro.
details.return_to target.url Mapeado diretamente a partir 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 a partir do campo details.session_id.
details.stats.loginsCount additional.fields Mapeado a partir do campo details.stats.loginsCount. A chave é "loginsCount".
details.requiresVerification security_result.detection_fields Mapeado a partir do campo details.requiresVerification. A chave é "requiresVerification".
details.to target.user.email_addresses Mapeado diretamente a partir do campo details.to.
hostname target.hostname Mapeado diretamente a partir do campo hostname.
ip principal.ip Mapeado diretamente a partir do campo ip.
js_data.audience target.url Mapeado diretamente a partir 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 a partir do campo js_data.details.body.email_verified. A chave é "email_verified".
js_data.details.body.is_signup security_result.detection_fields Mapeado a partir do campo js_data.details.body.is_signup. A chave é "is_signup".
js_data.details.body.transaction.redirect_uri target.url Mapeado diretamente a partir 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 a partir do campo js_data.scope. A chave é "scope".
js_data.tracking_id security_result.detection_fields Mapeado a partir do campo js_data.tracking_id. A chave é "tracking_id".
log_id metadata.product_log_id Mapeado diretamente a partir do campo log_id.
metadata.log_type metadata.log_type Mapeado diretamente a partir do campo log_type.
metadata.product_name metadata.product_name Definido como "AUTH_ZERO".
metadata.vendor_name metadata.vendor_name Definido como "AUTH_ZERO".
metadata.product_event_type metadata.product_event_type Mapeado diretamente a partir do campo type.
network.http.parsed_user_agent network.http.parsed_user_agent Analisado a partir do campo user_agent.
network.http.user_agent network.http.user_agent Mapeado diretamente a partir 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 a partir do campo strategy. A chave é "strategy".
strategy_type security_result.detection_fields Mapeado a partir do campo strategy_type. A chave é "strategy_type".
target.user.email_addresses target.user.email_addresses Mapeado diretamente a partir do campo user_name, se for um endereço de email. Caso contrário, é derivado de outros campos (consulte acima).
target.user.userid target.user.userid Mapeado diretamente a partir 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 a partir do campo user_agent.
user_id target.user.userid Mapeado diretamente a partir do campo user_id.
user_name target.user.email_addresses Mapeado diretamente a partir do campo user_name. Definido como "MACHINE" se security_result.action for "ALLOW" e type for "slo", "sapi", "s", "ss" ou "ssa". Definido 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 da Google SecOps.