Coletar registros do Okta
Este documento descreve como coletar registros do Okta configurando um feed do Google Security Operations.
Para mais informações, consulte Ingestão de dados para as operações de segurança do Google.
Um rótulo de transferência identifica o analisador que normaliza os dados de registro brutos
para o formato estruturado do UDM. As informações neste documento se aplicam ao analisador com o rótulo de transferência OKTA
.
Configurar o SSO do Okta
Para configurar o SSO do Okta, conclua as seguintes tarefas:
Criar um usuário administrador somente leitura
- Faça login no Console do administrador do SSO do Okta como administrador.
- Crie um usuário padrão. Se você já tem um usuário padrão que quer tornar um administrador somente leitura, siga para a próxima etapa.
- Selecione Segurança > Administradores.
- Clique em Adicionar administrador.
- No campo Atribuir função de administrador a, digite o nome de usuário.
- Na seção Funções de administrador, marque a caixa de seleção Administrador somente leitura.
- Saia da conta de administrador.
Receber chave da API
- Faça login no Console do administrador do SSO do Okta com o administrador somente leitura criado anteriormente.
- Selecione Segurança > API.
- Clique em Criar token.
- Digite o nome do token e clique em Criar token. O valor do token aparece.
Copie a chave de API, que é necessária ao configurar o feed do Google Security Operations.
A chave da API não pode ser recuperada mais tarde e é armazenada em formato criptografado após o fechamento da janela. Se ocorrerem mudanças no usuário ou nos privilégios do usuário que criou o token, ele não será válido. Se o token for revogado ou expirar, a coleta de registros será interrompida até que um novo token seja configurado.
Clique em OK, entendi.
Configurar o ASA do Okta
Para buscar eventos de auditoria do Okta Advanced Server Access (ASA) pela API de registro do sistema do Okta, integre os eventos de auditoria do Okta ASA ao registro do sistema do Okta. Para ativar essa integração, entre em contato com o suporte da Okta. Para mais informações, consulte a Central de Ajuda da Okta.
Configurar um feed no Google Security Operations para processar registros do Okta
- Acesse Configurações do SIEM > Feeds.
- Clique em Add New.
- Insira um nome exclusivo para o Nome do campo.
- Selecione API de terceiros como o Tipo de origem.
- Selecione CrowdStrike Detection Monitoring como o Tipo de registro.
- Clique em Próxima.
- Configure os seguintes parâmetros de entrada obrigatórios:
- Cabeçalho HTTP de autenticação: especifique credenciais que autenticam um agente do usuário com um servidor, concedendo acesso a um recurso protegido.
- Nome do host da API: especifique o nome de domínio ou o endereço IP do host que atende a API.
- Clique em Próxima e em Enviar.
Para mais informações sobre os feeds do Google Security Operations, consulte a documentação dos feeds do Google Security Operations. Para informações sobre os requisitos de cada tipo de feed, consulte Configuração de feeds por tipo.
Se você tiver problemas ao criar feeds, entre em contato com o suporte da Google Security Operations.
Referência do mapeamento de campo
Esse analisador processa os registros do sistema Okta no formato JSON, extraindo campos de registros do Stackdriver e registros brutos do Okta. Ele normaliza os dados no formato UDM, com foco em eventos de gerenciamento de identidade e acesso, incluindo logins, logouts, mudanças de permissão e ameaças de segurança, além de processar vários tipos de autenticação e enriquecer os dados com contexto geográfico e informações do agente do usuário. O analisador também extrai detalhes relacionados à segurança, como motivos de risco, indicadores de ameaça e informações sobre atividades suspeitas.
Tabela de mapeamento do UDM
Campo de registro | Mapeamento do UDM | Lógica |
---|---|---|
actor.alternateId |
principal.user.email_addresses / principal.user.userid |
Se o campo alternateId for um endereço de e-mail válido, a parte do nome de usuário será mapeada para principal.user.userid , e o endereço de e-mail completo será adicionado à lista principal.user.email_addresses . Se não for um e-mail válido, o valor inteiro será mapeado para principal.user.userid . |
actor.displayName |
principal.user.user_display_name |
Mapeamento direto. |
actor.id |
principal.user.product_object_id |
Mapeamento direto. |
actor.type |
principal.user.attribute.roles.name |
Mapeamento direto. |
authenticationContext.authenticationProvider |
security_result.detection_fields.value , em que key é "authenticationProvider" |
Mapeamento direto como um campo de detecção. |
authenticationContext.credentialProvider |
security_result.detection_fields.value , em que key é "credentialProvider" |
Mapeamento direto como um campo de detecção. |
authenticationContext.credentialType |
extensions.auth.mechanism |
Usado para derivar o mecanismo de autenticação. "OTP" ou "SMS" se torna "OTP", "PASSWORD" se torna "USERNAME_PASSWORD", "IWA" ou eventType "user.authentication.auth_via_AD_agent" se torna "LOCAL". |
authenticationContext.externalSessionId |
network.parent_session_id |
Mapeamento direto. |
client.device |
principal.asset.type / additional.fields.value.string_value , em que key é "device" |
Se o valor for "Mobile", ele será associado a "MOBILE". Se for "Computador", ele será mapeado para "WORKSTATION". Se for "Desconhecido", ele será associado a "ROLE_UNSPECIFIED". Também foi adicionado como outro campo. |
client.geographicalContext.city |
principal.location.city |
Mapeamento direto. |
client.geographicalContext.country |
principal.location.country_or_region |
Mapeamento direto. |
client.geographicalContext.geolocation.lat |
principal.location.region_latitude |
Mapeamento direto. |
client.geographicalContext.geolocation.lon |
principal.location.region_longitude |
Mapeamento direto. |
client.geographicalContext.postalCode |
additional.fields.value.string_value , em que key é "Código postal" |
Mapeamento direto como um campo extra. |
client.geographicalContext.state |
principal.location.state |
Mapeamento direto. |
client.ipAddress |
principal.ip / principal.asset.ip |
Mapeamento direto. Se não estiver presente, o analisador tentará extraí-lo de outros campos, como request.ipChain.0.ip ou debugContext.debugData.clientAddress . |
client.userAgent.browser |
target.resource.attribute.labels.value , em que key é "Navegador" |
Mapeamento direto como um rótulo. |
client.userAgent.os |
principal.platform |
Se o valor contiver "Linux", ele será mapeado para "LINUX". Se for "windows", ele será mapeado para "WINDOWS". Se for "mac" ou "ios", ele será mapeado para "MAC". |
client.userAgent.rawUserAgent |
network.http.user_agent |
Mapeamento direto. Também analisado e armazenado em network.http.parsed_user_agent . |
client.zone |
additional.fields.value.string_value , em que key é "zona" |
Mapeamento direto como um campo extra. |
debugContext.debugData.behaviors |
security_result.description |
Mapeamento direto. Os comportamentos individuais também são extraídos como campos de detecção separados. |
debugContext.debugData.changedAttributes |
security_result.detection_fields.value , em que key é "changedAttributes" |
Mapeamento direto como um campo de detecção. |
debugContext.debugData.clientAddress |
principal.ip / principal.asset.ip |
Usado como substituto se client.ipAddress e request.ipChain.0.ip não estiverem presentes. |
debugContext.debugData.deviceFingerprint |
target.asset.asset_id |
Prefixado com "device_finger_print:" e mapeado. |
debugContext.debugData.dtHash |
security_result.detection_fields.value , em que key é "dtHash" |
Mapeamento direto como um campo de detecção. |
debugContext.debugData.factor |
security_result.detection_fields.value , em que key é "fator" |
Mapeamento direto como um campo de detecção. |
debugContext.debugData.factorIntent |
security_result.detection_fields.value , em que key é "factorIntent" |
Mapeamento direto como um campo de detecção. |
debugContext.debugData.logOnlySecurityData.risk.reasons |
security_result.detection_fields.value , em que key é "Motivos de risco" |
Mapeamento direto como um campo de detecção. |
debugContext.debugData.privilegeGranted |
target.user.attribute.roles.name / target.user.attribute.roles.description |
Cada privilégio é adicionado como uma função separada com o nome e a descrição definidos como o valor do privilégio. |
debugContext.debugData.pushOnlyResponseType |
security_result.detection_fields.value , em que key é "pushOnlyResponseType" |
Mapeamento direto como um campo de detecção. |
debugContext.debugData.pushWithNumberChallengeResponseType |
security_result.detection_fields.value , em que key é "pushWithNumberChallengeResponseType" |
Mapeamento direto como um campo de detecção. |
debugContext.debugData.requestId |
network.session_id |
Mapeamento direto. |
debugContext.debugData.requestUri |
extensions.auth.auth_details / target.url |
Mapeamento direto. |
debugContext.debugData.suspiciousActivityEventId |
security_result.detection_fields.value , em que key é "suspiciousActivityEventId" |
Mapeamento direto como um campo de detecção. |
debugContext.debugData.suspiciousActivityEventType |
security_result.detection_fields.value , em que key é "suspiciousActivityEventType" |
Mapeamento direto como um campo de detecção. |
debugContext.debugData.threatDetections |
security_result.detection_fields.value , em que key é "threatDetections" |
Mapeamento direto como um campo de detecção. |
debugContext.debugData.threatSuspected |
security_result.detection_fields.value , em que key é "threatSuspected" |
Mapeamento direto como um campo de detecção. Também é usado para determinar security_result.threat_status . Se for verdadeiro, o status será "ACTIVE". Caso contrário, será "FALSE_POSITIVE". |
debugContext.debugData.url |
target.url |
Mapeamento direto. |
displayMessage |
security_result.summary |
Mapeamento direto. |
eventType |
metadata.product_event_type |
Mapeamento direto. Também é usado para determinar metadata.event_type (confira a lógica abaixo). |
legacyEventType |
security_result.detection_fields.value , em que key é "legacyEventType" |
Mapeamento direto como um campo de detecção. |
outcome.reason |
security_result.category_details |
Mapeamento direto. |
outcome.result |
security_result.action |
"SUCCESS" ou "ALLOW" se torna "ALLOW", "CHALLENGE" se torna "CHALLENGE", "FAILURE", "DENY", "SKIPPED" ou "RATE_LIMIT" se torna "BLOCK". |
published |
metadata.event_timestamp |
Convertido em um carimbo de data/hora. |
request.ipChain.0.geographicalContext.* |
principal.location.* |
O contexto geográfico do primeiro IP na cadeia é mapeado para o local do principal. |
request.ipChain.0.ip |
principal.ip / principal.asset.ip |
Mapeamento direto. |
request.ipChain.1.geographicalContext.* |
intermediary.location.* |
O contexto geográfico do segundo IP na cadeia é mapeado para o local intermediário. |
request.ipChain.1.ip |
intermediary.ip |
Mapeamento direto. |
securityContext.asNumber |
security_result.detection_fields.value , em que key é "asNumber" |
Mapeamento direto como um campo de detecção. |
securityContext.asOrg |
security_result.detection_fields.value , em que key é "asOrg" |
Mapeamento direto como um campo de detecção. |
securityContext.domain |
security_result.detection_fields.value , em que key é "domain" |
Mapeamento direto como um campo de detecção se o valor não for ".". |
securityContext.isp |
security_result.detection_fields.value , em que key é "isp" |
Mapeamento direto como um campo de detecção. |
securityContext.isProxy |
security_result.detection_fields.value , em que key é "IP anônimo" |
Mapeamento direto como um campo de detecção. |
target.0.alternateId |
target.user.email_addresses / target.user.userid |
Lógica semelhante a actor.alternateId . |
target.0.detailEntry.clientAppId |
target.asset_id |
Com o prefixo "Client_app_id:" e depois mapeado. |
target.0.displayName |
target.user.user_display_name / target.application / target.resource.name |
Mapeado com base em target.0.type . |
target.0.id |
target.user.product_object_id / target.resource.product_object_id |
Mapeado com base em target.0.type . |
target.0.type |
target.user.attribute.roles.name / target.resource.resource_subtype |
Mapeado com base no valor. Também é usado para determinar o mapeamento de outros campos target.0 . |
target.1.alternateId |
target.user.email_addresses / target.user.userid |
Lógica semelhante a actor.alternateId . |
target.1.detailEntry.clientAppId |
target.asset_id |
Com o prefixo "Client_app_id:" e depois mapeado. |
target.1.displayName |
target.user.user_display_name / target.resource.name |
Mapeado com base em target.1.type . |
target.1.id |
target.user.product_object_id / target.resource.product_object_id |
Mapeado com base em target.1.type . |
target.1.type |
target.user.attribute.roles.name / target.resource.resource_subtype |
Mapeado com base no valor. Também é usado para determinar o mapeamento de outros campos target.1 . |
target.2.alternateId target.2.displayName target.2.id target.2.type transaction.id |
network.session_id |
Mapeamento direto. |
transaction.type |
additional.fields.value.string_value , em que key é "type" |
Mapeamento direto como um campo extra. |
uuid |
metadata.product_log_id |
Mapeamento direto. |
N/A | metadata.event_type |
Determinado por eventType . Consulte o código do analisador para conferir a lógica de mapeamento completa. Alguns mapeamentos importantes incluem: "user.authentication.sso", "user.authentication.auth_via_mfa", "user.session.start" mapeados para "USER_LOGIN"; "user.session.end" mapeado para "USER_LOGOUT"; "user.account.reset_password" mapeado para "USER_CHANGE_PASSWORD"; "application.user_membership.update" mapeado para "USER_CHANGE_PERMISSIONS"; "security.threat.detected" mapeado para "USER_UNCATEGORIZED"; "system.import.user.delete" mapeado para "USER_DELETION"; "policy.rule.update" mapeado para "SETTING_MODIFICATION"; "group.user_membership.remove" mapeado para "GROUP_MODIFICATION". Muitos outros valores de eventType são mapeados para "USER_UNCATEGORIZED". |
N/A | metadata.log_type |
Defina como "OKTA". |
N/A | metadata.product_name |
Defina como "Okta". |
N/A | metadata.vendor_name |
Defina como "Okta". |
N/A | extensions.auth.type |
Defina como "SSO". |
Alterações
2024-05-16
- Se "is_alert" for verdadeiro e "is_significant" for verdadeiro, defina "security_result.alert_state" como "ALERTING".
2024-03-05
- Atualizamos o campo "security_result.action" para refletir se o tráfego foi permitido ou bloqueado.
2024-02-16
- Correção de bugs:
- Quando "target.0.type" é "User" ou "AppUser", mapeie "target.0.alternateId" para "target.user.userid".
- Quando "target.1.type" é "User" ou "AppUser", mapeie "target.1.alternateId" para "target.user.userid".
2023-12-14
- "securityContext.asNumber" foi mapeado para "security_result.detection_fields".
- "legacyEventType" foi associado a "security_result.detection_fields".
- Adicionado "conditional_check" antes de definir "metadata.event_type".
2023-06-28
- O valor completo mapeado de "debugContext.debugData.suspiciousActivityEventType" foi mapeado para "security_result.detection_fields".
- O valor completo de "debugContext.debugData.logOnlySecurityData.behaviors.New Device" foi mapeado para "security_result.detection_fields".
2023-06-09
- O campo "debugContext.debugData.deviceFingerprint" é mapeado para "target.asset.asset_id".
- O valor completo de "debugContext.debugData.risk.reasons" foi mapeado para "security_result.detection_fields".
2023-05-17
- O campo "authenticationContext.externalSessionId" está mapeado para "network.parent_session_id".
- O campo "debugContext.debugData.pushOnlyResponseType" é mapeado para "security_result.detection_fields.key/value".
- O campo "debugContext.debugData.factor" é mapeado para "security_result.detection_fields.key/value".
- O campo "debugContext.debugData.factorIntent" é mapeado para "security_result.detection_fields.key/value".
- O campo "debugContext.debugData.pushWithNumberChallengeResponseType" é mapeado para "security_result.detection_fields.key/value".
- O campo "debugContext.debugData.dtHash" é mapeado para "security_result.detection_fields.key/value".
- O campo "client.userAgent.rawUserAgent" é mapeado para "network.http.user_agent".
- O mapeamento foi alterado de "ALLOW_WITH_MODIFICATION" para o valor de enumeração "CHALLENGE" em "security_result.action".
- Para o eventType 'system.api_token.create', mude metadata.event_type de 'USER_UNCATEGORIZED' para 'RESOURCE_CREATION'.
2023-04-28
- Correção de bugs:
- O mapeamento de "security_result.threat_status" foi modificado para "ACTIVE" quando "debugContext.debugData.threatSuspected" é "true". Caso contrário, o mapeamento é "FALSE_POSITIVE".
2023-03-24
- Os campos "logOnlySecurityData" foram mapeados para "security_result.detection_fields".
- Além disso, resolvemos o erro de análise adicionando "DEFERRED" à lista de ações.
2023-04-11
- Os campos mapeados para "http.user_agent" foram mapeados para "http.parsed_user_agent".
- "target.displayName" foi mapeado para "target.resource_ancestors.name".
- Mapeamos "targetfield.detailEntry.methodTypeUsed" para "target.resource_ancestors.attribute.labels".
- Mapeamos "targetfield.detailEntry.methodUsedVerifiedProperties" para "target.resource_ancestors.attribute.labels".
2023-02-20
- "metadata.event_type" foi alterado de "USER_LOGIN" para "STATUS_UPDATE", em que "eventType" é "user.authentication.auth_via_AD_agent".
2022-12-14
- Mapeamos "debugContext.debugData.changedAttributes" para "security_result.detection_fields".
- Adição de verificação de valor nulo para "detail.actor.alternateId".
2022-11-17
- O campo "target[n].alternateId" é mapeado para "target.resource.attribute.labels".
- O campo "detail.target.0.alternateId" é mapeado para "target.resource.attribute.labels".
2022-11-08
- Correção de bugs:
- Foi adicionada uma condição para a verificação de e-mail adequada do campo "user_email".
- Foi adicionada uma verificação para o campo "Action1" que não está em "RATE_LIMIT".
- Adição de verificação de nulos e desconhecidos para "actor.displayName".
2022-11-04
- Adição de suporte a registros com vários eventos.
2022-10-15
- "signOnModeType" mapeado para "security_result.detection_fields".
- "authenticationProvider" mapeado para "security_result.detection_fields".
- "credentialProvider" mapeado para "security_result.detection_fields".
- "device" mapeado para "additional.fields".
- "zone" mapeado para "additional.fields".
- "type" mapeado para "additional.fields".
2022-10-14
- Correção de bugs:
- Adição de uma verificação condicional para "principal.user.email_addresses" e "target.user.email_addresses".
- Adição de grok para verificar se o ip_address é válido para o campo "request.ipChain.0.ip" mapeado para "principal.ip".
- Adição da condição on_error para o campo "debugContext.debugData.url" mapeado para "target.url".
2022-10-03
- "client.userAgent.os" foi associado a "principal.platform".
- "client.device" foi associado a "principal.asset.type".
- O "IP anônimo" (string codificada) foi mapeado para security_result.detection_fields.key, em que o valor "securityContext.isProxy" foi mapeado para security_result.detection_fields.value.
16/09/2022
- "securityContext.asOrg" mapeado para "security_result.category_details".
- "securityContext.isProxy" mapeado para "security_result.detection_fields".
- "securityContext.domain" mapeado para "security_result.detection_fields".
- "securityContext.isp" mapeado para "security_result.detection_fields".
- "debugContext.debugData.risk.level" mapeado para "security_result.severity".
- 'debugContext.debugData.risk.reasons' mapeado para 'security_result.detection_fields'.
2022-08-12
- Os registros recém-ingeridos foram analisados e mapeados para os seguintes campos:
- "detail.uuid" mapeado para "metadata.product_log_id".
- "detail.eventType" mapeado para "metadata.product_event_type"
- "detail.actor.id" mapeado para "principal.user.product_object_id".
- if 'detail.actor.alternateId' mapped to 'principal.user.userid' else
- "detail.actor.alternateId" mapeado para "principal.user.email_addresses".
- "detail.actor.displayName" mapeado para "principal.user.user_display_name".
- "detail.actor.type" mapeado para ".principal.user.attribute.roles".
- "detail.client.ipChain.0.ip" mapeado para "principal.ip".
- "detail.client.ipChain.0.geographicalContext.state" mapeado para "principal.location.state".
- "detail.client.ipChain.0.geographicalContext.city" mapeado para "principal.location.city".
- "detail.client.ipChain.0.geographicalContext.country" mapeado para "principal.location.country_or_region".
- "detail.debugContext.debugData.requestUri" mapeado para "target.url".
- "detail.target.0.type" mapeado para "target.resource.resource_subtype".
- "detail.target.0.id" mapeado para "target.resource.resource.product_object_id".
- "detail.target.0.displayName" mapeado para "target.resource.resource_subtype".
- "detail.target.0.detailEntry.policyType" mapeado para "target.resource_ancestors.attribute.labels".
- "detail.outcome.reason" mapeado para "security_result.category_details".
- "detail.debugContext.debugData.threatSuspected" mapeado para "security_result.detection_fields".
- "detail.displayMessage" mapeado para "security_result.summary".
- "detail.outcome.result" mapeado para "security_result.action".
- "detail.severity" mapeado para "security_result.severity".
- "detail.transaction.id" mapeado para "network.session_id".
- "detail.debugContext.debugData.requestUri" mapeado para "extensions.auth.auth_details".
2022-07-08
- O mapeamento de "actor.type" foi modificado de "principal.user.role_name" para "principal.user.attribute.roles".
- O mapeamento de "target.0.type" foi modificado de "target.user.role_name" para "target.user.attribute.roles".
- O mapeamento de "target.1.type" foi modificado de "target.user.role_name" para "target.user.attribute.roles".
2022-06-15
- Enhancement-
- para "target.0.type" == "Token".
- "target.0.detailEntry.clientAppId" foi associado a "target.asset_id".
- Adicionamos uma verificação condicional para o campo "transaction.id" mapeado para o campo "network.session_id" do UDM.
2022-06-03
- Enhancement-
- Mapeamos debugContext.debugData.privilegeGranted para target.user.attribute.roles.name.
- Mapeamento de debugContext.debugData.requestUri para extensions.auth.auth_details.
- Mapeamos debugContext.debugData.suspiciousActivityEventId, debugContext.debugData.threatDetections e debugContext.debugData.threatSuspected para security_result.detection_fields.
2022-03-22
- Enhancement-
- debugContext.debugData.behaviors mapeado para security_result.description.
- debugContext.debugData.threatSuspected mapeado para security_result.threat_status.
- debugContext.debugData.risk mapeado para security_result.severity.