Coletar registros do Auth0
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
Para configurar um feed, siga estas etapas:
- Acesse Configurações do SIEM > Feeds.
 - Clique em Adicionar novo feed.
 - Na próxima página, clique em Configurar um único feed.
 - No campo Nome do feed, insira um nome para o feed (por exemplo, Registros do Auth0).
 - Selecione Webhook como o Tipo de origem.
 - Selecione AUTH_ZERO como o Tipo de registro.
 - Clique em Próxima.
 - 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.
 
 - Delimitador de divisão: o delimitador usado para separar linhas de registro, como 
 - Clique em Próxima.
 - Revise a configuração do feed na tela Finalizar e clique em Enviar.
 - 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.
 - Clique em Concluído.
 
Criar uma chave de API para o feed de webhook
Acesse o console doGoogle Cloud > Credenciais.
Clique em Criar credenciais e, em seguida, selecione Chave de API.
Restrinja o acesso da chave de API à API Chronicle.
Especifique o URL do endpoint
- No aplicativo cliente, especifique o URL do endpoint HTTPS fornecido no feed do webhook.
 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 = SECRETRecomendaçã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
- Acesse o painel do Auth0.
 - Acesse Monitoring > Streams.
 - Clique em Criar fluxo de registros.
 - Clique no botão Webhook personalizado e dê a ele um nome de sua escolha. Por exemplo, Webhook do Google SecOps.
 - 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.
- Clique em Salvar para criar o webhook.
 - Acione o evento associado ao hook (por exemplo, registrar um novo usuário, fazer login).
 - 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.