Recopila registros de Okta

Se admite en los siguientes países:

En este documento, se describe cómo puedes recopilar registros de Okta configurando un feed de Google Security Operations.

Para obtener más información, consulta Transferencia de datos a Google Security Operations.

Una etiqueta de transferencia identifica el analizador que normaliza los datos de registro sin procesar al formato estructurado del UDM. La información de este documento se aplica al analizador con la etiqueta de transferencia OKTA.

Configura el SSO de Okta

Para configurar el SSO de Okta, completa las siguientes tareas:

Crea un usuario administrador de solo lectura

  1. Accede a la Consola del administrador de SSO de Okta como administrador.
  2. Crea un usuario estándar. Si ya tienes un usuario estándar existente al que quieres designar como administrador de solo lectura, continúa con el siguiente paso.
  3. Selecciona Seguridad > Administradores.
  4. Haz clic en Agregar administrador.
  5. En el campo Otorgar rol de administrador a, ingresa el nombre de usuario.
  6. En la sección Roles de administrador, selecciona la casilla de verificación Administrador de solo lectura.
  7. Sal de la cuenta de administrador.

Obtén una clave de API

  1. Accede a la Consola del administrador de SSO de Okta con el administrador de solo lectura que creaste antes.
  2. Selecciona Seguridad > API.
  3. Haz clic en Create Token.
  4. Ingresa el nombre del token y haz clic en Crear token. Aparecerá el valor del token.
  5. Copia la clave de API, que es obligatoria cuando configuras el feed de Google Security Operations.

    La clave de API no se puede recuperar más adelante y se almacena en formato encriptado después de cerrar la ventana. Si se producen cambios en el usuario o en los privilegios del usuario que creó el token, este no será válido. Si se revoca o vence el token, se detendrá la recopilación de registros hasta que se configure uno nuevo.

  6. Haz clic en Entendido.

Configura el ASA de Okta

Para recuperar los eventos de auditoría de Acceso avanzado al servidor (ASA) de Okta a través de la API de registro del sistema de Okta, integra los eventos de auditoría de ASA de Okta con el registro del sistema de Okta. Para habilitar esta integración, comunícate con el equipo de asistencia de Okta. Para obtener más información, consulta el Centro de ayuda de Okta.

Configura un feed en Google Security Operations para transferir registros de Okta

  1. Ve a Configuración de SIEM > Feeds.
  2. Haz clic en Agregar nueva.
  3. Ingresa un nombre único para el Nombre del campo.
  4. Selecciona API de terceros como el Tipo de fuente.
  5. Selecciona CrowdStrike Detection Monitoring como el Tipo de registro.
  6. Haz clic en Siguiente.
  7. Configura los siguientes parámetros de entrada obligatorios:
    • Encabezado HTTP de autenticación: Especifica las credenciales que autentican un usuario-agente con un servidor y le otorgan acceso a un recurso protegido.
    • Nombre de host de la API: Especifica el nombre de dominio o la dirección IP del host que entrega la API.
  8. Haz clic en Siguiente y, luego, en Enviar.

Para obtener más información sobre los feeds de Google Security Operations, consulta la documentación de los feeds de Google Security Operations. Para obtener información sobre los requisitos de cada tipo de feed, consulta Configuración de feeds por tipo.

Si tienes problemas cuando creas feeds, comunícate con el equipo de asistencia de Operaciones de seguridad de Google.

Referencia de la asignación de campos

Este analizador controla los registros del sistema de Okta en formato JSON y extrae campos de los registros de Stackdriver y de los registros sin procesar de Okta. Normaliza los datos en el formato de la AUA, enfocándose en los eventos de administración de identidades y accesos, incluidos los accesos, las salidas, los cambios de permisos y las amenazas de seguridad, a la vez que controla varios tipos de autenticación y enriquece los datos con contexto geográfico y la información del usuario-agente. El analizador también extrae detalles relacionados con la seguridad, como los motivos de riesgo, los indicadores de amenazas y la información de actividad sospechosa.

Tabla de asignación de UDM

Campo de registro Asignación de UDM Lógica
actor.alternateId principal.user.email_addresses/principal.user.userid Si el campo alternateId es una dirección de correo electrónico válida, la parte del nombre de usuario se asigna a principal.user.userid y la dirección de correo electrónico completa se agrega a la lista principal.user.email_addresses. Si no es un correo electrónico válido, todo el valor se asigna a principal.user.userid.
actor.displayName principal.user.user_display_name Asignación directa
actor.id principal.user.product_object_id Asignación directa
actor.type principal.user.attribute.roles.name Asignación directa
authenticationContext.authenticationProvider security_result.detection_fields.value, donde key es "authenticationProvider" Asignación directa como campo de detección
authenticationContext.credentialProvider security_result.detection_fields.value, donde key es "credentialProvider" Asignación directa como campo de detección
authenticationContext.credentialType extensions.auth.mechanism Se usa para derivar el mecanismo de autenticación. “OTP” o “SMS” se convierte en “OTP”, “PASSWORD” se convierte en “USERNAME_PASSWORD”, “IWA” o eventType “user.authentication.auth_via_AD_agent” se convierte en “LOCAL”.
authenticationContext.externalSessionId network.parent_session_id Asignación directa
client.device principal.asset.type / additional.fields.value.string_value, donde key es "device" Si el valor es "Móvil", se asigna a "MOBILE". Si es "Computer", se asigna a "WORKSTATION". Si es "Desconocido", se asigna a "ROLE_UNSPECIFIED". También se agregó como campo adicional.
client.geographicalContext.city principal.location.city Asignación directa
client.geographicalContext.country principal.location.country_or_region Asignación directa
client.geographicalContext.geolocation.lat principal.location.region_latitude Asignación directa
client.geographicalContext.geolocation.lon principal.location.region_longitude Asignación directa
client.geographicalContext.postalCode additional.fields.value.string_value, donde key es "Código postal" Asignación directa como campo adicional
client.geographicalContext.state principal.location.state Asignación directa
client.ipAddress principal.ip/principal.asset.ip Asignación directa Si no está presente, el analizador intenta extraerlo de otros campos, como request.ipChain.0.ip o debugContext.debugData.clientAddress.
client.userAgent.browser target.resource.attribute.labels.value, donde key es "Navegador" Asignación directa como etiqueta
client.userAgent.os principal.platform Si el valor contiene "Linux", se asigna a "LINUX". Si es "windows", se asigna a "WINDOWS". Si es "mac" o "ios", se asigna a "MAC".
client.userAgent.rawUserAgent network.http.user_agent Asignación directa También se analiza y almacena en network.http.parsed_user_agent.
client.zone additional.fields.value.string_value donde key es “zona” Asignación directa como campo adicional
debugContext.debugData.behaviors security_result.description Asignación directa Los comportamientos individuales también se extraen como campos de detección independientes.
debugContext.debugData.changedAttributes security_result.detection_fields.value, donde key es "changedAttributes" Asignación directa como campo de detección
debugContext.debugData.clientAddress principal.ip/principal.asset.ip Se usa como resguardo si client.ipAddress y request.ipChain.0.ip no están presentes.
debugContext.debugData.deviceFingerprint target.asset.asset_id Debe tener el prefijo "device_finger_print:" y, luego, estar asignado.
debugContext.debugData.dtHash security_result.detection_fields.value, donde key es "dtHash" Asignación directa como campo de detección
debugContext.debugData.factor security_result.detection_fields.value, donde key es “factor” Asignación directa como campo de detección
debugContext.debugData.factorIntent security_result.detection_fields.value, donde key es "factorIntent" Asignación directa como campo de detección
debugContext.debugData.logOnlySecurityData.risk.reasons security_result.detection_fields.value, en la que key es "Motivos de riesgo" Asignación directa como campo de detección
debugContext.debugData.privilegeGranted target.user.attribute.roles.name/target.user.attribute.roles.description Cada privilegio se agrega como un rol independiente con el nombre y la descripción establecidos en el valor del privilegio.
debugContext.debugData.pushOnlyResponseType security_result.detection_fields.value, donde key es "pushOnlyResponseType" Asignación directa como campo de detección
debugContext.debugData.pushWithNumberChallengeResponseType security_result.detection_fields.value, donde key es "pushWithNumberChallengeResponseType" Asignación directa como campo de detección
debugContext.debugData.requestId network.session_id Asignación directa
debugContext.debugData.requestUri extensions.auth.auth_details/target.url Asignación directa
debugContext.debugData.suspiciousActivityEventId security_result.detection_fields.value, donde key es "suspiciousActivityEventId" Asignación directa como campo de detección
debugContext.debugData.suspiciousActivityEventType security_result.detection_fields.value, donde key es "suspiciousActivityEventType" Asignación directa como campo de detección
debugContext.debugData.threatDetections security_result.detection_fields.value, donde key es "threatDetections" Asignación directa como campo de detección
debugContext.debugData.threatSuspected security_result.detection_fields.value, en el que key es "threatSuspected" Asignación directa como campo de detección También se usa para determinar security_result.threat_status. Si es verdadero, el estado es "ACTIVE"; de lo contrario, es "FALSE_POSITIVE".
debugContext.debugData.url target.url Asignación directa
displayMessage security_result.summary Asignación directa
eventType metadata.product_event_type Asignación directa También se usa para determinar metadata.event_type (consulta la lógica a continuación).
legacyEventType security_result.detection_fields.value, donde key es "legacyEventType" Asignación directa como campo de detección
outcome.reason security_result.category_details Asignación directa
outcome.result security_result.action "SUCCESS" o "ALLOW" se convierte en "ALLOW", "CHALLENGE" se convierte en "CHALLENGE", "FAILURE", "DENY", "SKIPPED" o "RATE_LIMIT" se convierte en "BLOCK".
published metadata.event_timestamp Se convierte en una marca de tiempo.
request.ipChain.0.geographicalContext.* principal.location.* El contexto geográfico de la primera IP de la cadena se asigna a la ubicación del principal.
request.ipChain.0.ip principal.ip/principal.asset.ip Asignación directa
request.ipChain.1.geographicalContext.* intermediary.location.* El contexto geográfico de la segunda IP de la cadena se asigna a la ubicación intermediaria.
request.ipChain.1.ip intermediary.ip Asignación directa
securityContext.asNumber security_result.detection_fields.value donde key es "asNumber" Asignación directa como campo de detección
securityContext.asOrg security_result.detection_fields.value donde key es "asOrg" Asignación directa como campo de detección
securityContext.domain security_result.detection_fields.value, donde key es "domain" Asignación directa como campo de detección si el valor no es "."
securityContext.isp security_result.detection_fields.value, donde key es "isp" Asignación directa como campo de detección
securityContext.isProxy security_result.detection_fields.value, donde key es "IP anonimizada" Asignación directa como campo de detección
target.0.alternateId target.user.email_addresses/target.user.userid Lógica similar a actor.alternateId.
target.0.detailEntry.clientAppId target.asset_id Se le agrega el prefijo "Client_app_id:" y, luego, se asigna.
target.0.displayName target.user.user_display_name / target.application / target.resource.name Se asignó en función de target.0.type.
target.0.id target.user.product_object_id/target.resource.product_object_id Se asignó en función de target.0.type.
target.0.type target.user.attribute.roles.name/target.resource.resource_subtype Se asignan según el valor. También se usa para determinar la asignación de otros campos target.0.
target.1.alternateId target.user.email_addresses/target.user.userid Lógica similar a actor.alternateId.
target.1.detailEntry.clientAppId target.asset_id Se le agrega el prefijo "Client_app_id:" y, luego, se asigna.
target.1.displayName target.user.user_display_name/target.resource.name Se asignó en función de target.1.type.
target.1.id target.user.product_object_id/target.resource.product_object_id Se asignó en función de target.1.type.
target.1.type target.user.attribute.roles.name/target.resource.resource_subtype Se asignan según el valor. También se usa para determinar la asignación de otros campos target.1.
target.2.alternateId target.2.displayName target.2.id target.2.type transaction.id network.session_id Asignación directa
transaction.type additional.fields.value.string_value en el que key es "type" Asignación directa como campo adicional
uuid metadata.product_log_id Asignación directa
N/A metadata.event_type Se determina según eventType. Consulta el código del analizador para ver la lógica de asignación completa. Algunos mapeos de claves incluyen: "user.authentication.sso", "user.authentication.auth_via_mfa", "user.session.start" se asignan a "USER_LOGIN"; "user.session.end" se asigna a "USER_LOGOUT"; "user.account.reset_password" se asigna a "USER_CHANGE_PASSWORD"; "application.user_membership.update" se asigna a "USER_CHANGE_PERMISSIONS"; "security.threat.detected" se asigna a "USER_UNCATEGORIZED"; "system.import.user.delete" se asigna a "USER_DELETION"; "policy.rule.update" se asigna a "SETTING_MODIFICATION"; "group.user_membership.remove" se asigna a "GROUP_MODIFICATION". Muchos otros valores de eventType se asignan a "USER_UNCATEGORIZED".
N/A metadata.log_type Establece el valor en “OKTA”.
N/A metadata.product_name Establece el valor en "Okta".
N/A metadata.vendor_name Establece el valor en "Okta".
N/A extensions.auth.type Se establece en “SSO”.

Cambios

16 de mayo de 2024

  • Si "is_alert" es verdadero y "is_significant" es verdadero, establece "security_result.alert_state" como "ALERTING".

2024-03-05

  • Se actualizó el campo "security_result.action" para reflejar si se permitió o bloqueó el tráfico.

2024-02-16

  • Corrección de errores:
  • Cuando "target.0.type" es "User" o "AppUser", se asigna "target.0.alternateId" a "target.user.userid".
  • Cuando "target.1.type" es "User" o "AppUser", se asigna "target.1.alternateId" a "target.user.userid".

2023-12-14

  • Se asignó "securityContext.asNumber" a "security_result.detection_fields".
  • Se asignó "legacyEventType" a "security_result.detection_fields".
  • Se agregó "conditional_check" antes de establecer "metadata.event_type".

2023-06-28

  • Se asignó el valor completo de "debugContext.debugData.suspiciousActivityEventType" a "security_result.detection_fields".
  • Se asignó el valor completo de "debugContext.debugData.logOnlySecurityData.behaviors.New Device" a "security_result.detection_fields".

2023-06-09

  • El campo "debugContext.debugData.deviceFingerprint" se asigna a "target.asset.asset_id".
  • Se asignó el valor completo de "debugContext.debugData.risk.reasons" a "security_result.detection_fields".

2023-05-17

  • El campo "authenticationContext.externalSessionId" se asigna a "network.parent_session_id".
  • El campo "debugContext.debugData.pushOnlyResponseType" se asigna a "security_result.detection_fields.key/value".
  • El campo "debugContext.debugData.factor" se asigna a "security_result.detection_fields.key/value".
  • El campo "debugContext.debugData.factorIntent" se asigna a "security_result.detection_fields.key/value".
  • El campo "debugContext.debugData.pushWithNumberChallengeResponseType" se asigna a "security_result.detection_fields.key/value".
  • El campo "debugContext.debugData.dtHash" se asigna a "security_result.detection_fields.key/value".
  • El campo "client.userAgent.rawUserAgent" se asigna a "network.http.user_agent".
  • Se cambió la asignación de "ALLOW_WITH_MODIFICATION" al valor de enumeración "CHALLENGE" en "security_result.action".
  • Para el eventType "system.api_token.create", se cambió metadata.event_type de "USER_UNCATEGORIZED" a "RESOURCE_CREATION".

2023-04-28

  • Corrección de errores:
  • Se modificó la asignación de "security_result.threat_status" a "ACTIVE" cuando "debugContext.debugData.threatSuspected" es "true", de lo contrario, se asignó a "FALSE_POSITIVE".

24-3-2023

  • Se asignaron los campos "logOnlySecurityData" a "security_result.detection_fields".
  • Además, se resolvió el error de análisis agregando "DEFERRED" a la lista de acciones.

2023-04-11

  • Se volvieron a asignar los campos que se asignan a "http.user_agent" a "http.parsed_user_agent".
  • Se asignó "target.displayName" a "target.resource_ancestors.name".
  • Se asignó "targetfield.detailEntry.methodTypeUsed" a "target.resource_ancestors.attribute.labels".
  • Se asignó "targetfield.detailEntry.methodUsedVerifiedProperties" a "target.resource_ancestors.attribute.labels".

2023-02-20

  • Se cambió "metadata.event_type" de "USER_LOGIN" a "STATUS_UPDATE", donde "eventType" es "user.authentication.auth_via_AD_agent".

2022-12-14

  • Se asignó "debugContext.debugData.changedAttributes" a "security_result.detection_fields".
  • Se agregó una verificación de nulo para "detail.actor.alternateId".

2022-11-17

  • El campo "target[n].alternateId" se asigna a "target.resource.attribute.labels".
  • El campo "detail.target.0.alternateId" se asigna a "target.resource.attribute.labels".

2022-11-08

  • Corrección de errores:
  • Se agregó una condición para realizar una verificación de correo electrónico adecuada en el campo "user_email".
  • Se agregó la comprobación del campo "Action1" que no está en "RATE_LIMIT".
  • Se agregó una verificación nula y desconocida para "actor.displayName".

2022-11-04

  • Se agregó compatibilidad con registros que tienen varios eventos.

2022-10-15

  • "signOnModeType" se asignó a "security_result.detection_fields".
  • "authenticationProvider" se asignó a "security_result.detection_fields".
  • "credentialProvider" se asignó a "security_result.detection_fields".
  • "device" se asignó a "additional.fields".
  • "zone" se asignó a "additional.fields".
  • "type" se asignó a "additional.fields".

2022-10-14

  • Corrección de errores:
  • Se agregó la verificación condicional para "principal.user.email_addresses" y "target.user.email_addresses".
  • Se agregó grok para verificar si hay una ip_address válida para el campo "request.ipChain.0.ip" asignado a "principal.ip".
  • Se agregó la condición on_error para el campo "debugContext.debugData.url" asignado a "target.url".

2022-10-03

  • Se asignó "client.userAgent.os" a "principal.platform".
  • Se asignó "client.device" a "principal.asset.type".
  • Se asignó "IP anonimizada" (cadena codificada) a security_result.detection_fields.key, donde el valor de "securityContext.isProxy" corresponde a security_result.detection_fields.value.

2022-09-16

  • "securityContext.asOrg" se asignó a "security_result.category_details".
  • "securityContext.isProxy" se asignó a "security_result.detection_fields".
  • "securityContext.domain" asignado a "security_result.detection_fields".
  • 'securityContext.isp' se asignó a 'security_result.detection_fields'.
  • "debugContext.debugData.risk.level" se asignó a "security_result.severity".
  • 'debugContext.debugData.risk.reasons' se asignó a 'security_result.detection_fields'.

2022-08-12

  • Los registros recién transferidos se analizaron y se asignaron a los siguientes campos:
  • "detail.uuid" se asignó a "metadata.product_log_id".
  • 'detail.eventType' asignado a 'metadata.product_event_type'
  • "detail.actor.id" asignado a "principal.user.product_object_id".
  • if 'detail.actor.alternateId' mapped to 'principal.user.userid' else
  • "detail.actor.alternateId" asignado a "principal.user.email_addresses".
  • "detail.actor.displayName" asignado a "principal.user.user_display_name".
  • "detail.actor.type" asignado a ".principal.user.attribute.roles".
  • 'detail.client.ipChain.0.ip' asignado a 'principal.ip'
  • 'detail.client.ipChain.0.geographicalContext.state' asignado a 'principal.location.state'.
  • 'detail.client.ipChain.0.geographicalContext.city' asignado a 'principal.location.city'.
  • "detail.client.ipChain.0.geographicalContext.country" asignado a "principal.location.country_or_region"
  • "detail.debugContext.debugData.requestUri" asignado a "target.url".
  • 'detail.target.0.type' asignado a 'target.resource.resource_subtype'.
  • 'detail.target.0.id' asignado a 'target.resource.resource.product_object_id'.
  • "detail.target.0.displayName" asignado a "target.resource.resource_subtype".
  • "detail.target.0.detailEntry.policyType" asignado a "target.resource_ancestors.attribute.labels".
  • "detail.outcome.reason" se asignó a "security_result.category_details".
  • "detail.debugContext.debugData.threatSuspected" se asignó a "security_result.detection_fields".
  • "detail.displayMessage" se asignó a "security_result.summary".
  • "detail.outcome.result" se asignó a "security_result.action".
  • "detail.severity" se asignó a "security_result.severity".
  • 'detail.transaction.id' asignado a 'network.session_id'
  • 'detail.debugContext.debugData.requestUri' se asignó a 'extensions.auth.auth_details'.

2022-07-08

  • Se modificó la asignación de "actor.type" de "principal.user.role_name" a "principal.user.attribute.roles".
  • Se modificó la asignación de "target.0.type" de "target.user.role_name" a "target.user.attribute.roles".
  • Se modificó la asignación de "target.1.type" de "target.user.role_name" a "target.user.attribute.roles".

2022-06-15

  • Enhancement-
  • for "target.0.type" == "Token".
  • Se asignó "target.0.detailEntry.clientAppId" a "target.asset_id".
  • Se agregó una verificación condicional para el campo "transaction.id" asignado al campo "network.session_id" de la AUA.

2022-06-03

  • Enhancement-
  • Se asignó debugContext.debugData.privilegeGranted a target.user.attribute.roles.name además.
  • Se asignó debugContext.debugData.requestUri a extensions.auth.auth_details.
  • Se asignaron debugContext.debugData.suspiciousActivityEventId, debugContext.debugData.threatDetections y debugContext.debugData.threatSuspected a security_result.detection_fields.

2022-03-22

  • Enhancement-
  • debugContext.debugData.behaviors asignado a security_result.description.
  • debugContext.debugData.threatSuspected se asigna a security_result.threat_status.
  • debugContext.debugData.risk asignado a security_result.severity.