Recopila registros de Okta
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
- Accede a la Consola del administrador de SSO de Okta como administrador.
- 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.
- Selecciona Seguridad > Administradores.
- Haz clic en Agregar administrador.
- En el campo Otorgar rol de administrador a, ingresa el nombre de usuario.
- En la sección Roles de administrador, selecciona la casilla de verificación Administrador de solo lectura.
- Sal de la cuenta de administrador.
Obtén una clave de API
- Accede a la Consola del administrador de SSO de Okta con el administrador de solo lectura que creaste antes.
- Selecciona Seguridad > API.
- Haz clic en Create Token.
- Ingresa el nombre del token y haz clic en Crear token. Aparecerá el valor del token.
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.
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
- Ve a Configuración de SIEM > Feeds.
- Haz clic en Agregar nueva.
- Ingresa un nombre único para el Nombre del campo.
- Selecciona API de terceros como el Tipo de fuente.
- Selecciona CrowdStrike Detection Monitoring como el Tipo de registro.
- Haz clic en Siguiente.
- 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.
- 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.