Recopila registros de Okta
En este documento, se explica cómo transferir registros de Okta a Google Security Operations con la API de Okta. El analizador extrae registros del sistema y controla tanto eventos únicos como eventos por lotes dentro de un array JSON. Normaliza los datos en el formato del UDM, asigna los campos de Okta a sus equivalentes en el UDM, enriquece los datos con los detalles de autenticación, la información geográfica y los agentes de usuario analizados, y genera eventos de resultados de seguridad según los resultados y la información de riesgo.
Antes de comenzar
- Instancia de Google SecOps
- Acceso con privilegios a Okta
Cómo configurar Okta
Para configurar el SSO de Okta, completa las siguientes tareas:
Crea un usuario administrativo de Okta con privilegios de solo lectura
- Accede a la consola del administrador de Okta.
Crea un usuario estándar.
- Ve a Directorio > Personas.
- Haz clic en Agregar a una persona y completa los campos obligatorios.
Selecciona Seguridad > Administradores.
Haz clic en Agregar administrador.
En el campo Asignación de administrador por parte del administrador, busca el usuario estándar.
En la sección roles, selecciona Administrador de solo lectura en la lista.
Sal de la cuenta de administrador.
Obtén una clave de API
- Accede a la Consola del administrador de Okta con el usuario administrador de solo lectura.
- Ve a Seguridad > API > Tokens.
- Haz clic en Create Token.
- Proporciona un nombre significativo para el token.
- Proporciona la zona de IP en la que se usará la API (puedes seleccionar cualquier IP si no lo sabes).
- Haz clic en Create Token.
- Copie la clave de API.
- Haz clic en Entendido.
Configura feeds
Existen dos puntos de entrada diferentes para configurar feeds en la plataforma de Google SecOps:
- Configuración de SIEM > Feeds
- Centro de contenido > Paquetes de contenido
Configura feeds desde Configuración del SIEM > Feeds
Para configurar varios feeds para diferentes tipos de registros dentro de esta familia de productos, consulta Cómo configurar feeds por producto.
Para configurar un solo feed, sigue estos pasos:
- Ve a SIEM Settings > Feeds.
- Haz clic en Agregar feed nuevo.
- En la siguiente página, haz clic en Configurar un solo feed.
- En el campo Nombre del feed, ingresa un nombre para el feed, por ejemplo, Registros de Okta.
- Selecciona API de terceros como el Tipo de origen.
- Selecciona Okta como el Tipo de registro.
- Haz clic en Siguiente.
- Especifica valores para los siguientes parámetros de entrada:
- Encabezado HTTP de autenticación: Ingresa la clave de API de Okta con el siguiente formato:
Authorization:<API_KEY>
. - Nombre de host de la API: Especifica el nombre de dominio de tu host de Okta (por ejemplo,
<your-domain>.okta.com
). - Espacio de nombres del recurso: Es el espacio de nombres del recurso.
- Etiquetas de transferencia: Es la etiqueta que se aplica a los eventos de este feed.
- Encabezado HTTP de autenticación: Ingresa la clave de API de Okta con el siguiente formato:
- Haz clic en Siguiente.
- Revisa la configuración del feed en la pantalla Finalizar y, luego, haz clic en Enviar.
Configura feeds desde el Centro de contenido
Especifica valores para los siguientes campos:
- Encabezados HTTP de autenticación: Se usan para autenticar la API de SentinelOne Alerts/Threats & static-indicator en formato
key:value
. - Nombre de host de la API: Es el nombre de dominio completamente calificado de la API de SentinelOne.
Opciones avanzadas
- Nombre del feed: Es un valor completado previamente que identifica el feed.
- Tipo de fuente: Es el método que se usa para recopilar registros en Google SecOps.
- Espacio de nombres del recurso: Espacio de nombres asociado al feed.
- Etiquetas de transferencia: Son las etiquetas que se aplican a todos los eventos de este feed.
Tabla de asignación de UDM
Campo de registro | Asignación de UDM | Lógica |
---|---|---|
actor.alternateId |
principal.user.email_addresses |
Se extrae de actor.alternateId si es una dirección de correo electrónico. Si no es una dirección de correo electrónico, se usa como principal.user.userid . |
actor.displayName |
principal.user.user_display_name |
Se asigna directamente. |
actor.id |
principal.user.product_object_id |
Se asigna directamente. |
actor.type |
principal.user.attribute.roles.name |
Se asigna directamente. |
authenticationContext.authenticationProvider |
security_result.detection_fields.value |
Se asigna directamente, con la clave authenticationProvider . |
authenticationContext.credentialProvider |
security_result.detection_fields.value |
Se asigna directamente, con la clave credentialProvider . |
authenticationContext.credentialType |
extensions.auth.mechanism |
Se usa para derivar el mecanismo de autenticación (OTP, USERNAME_PASSWORD, LOCAL). |
authenticationContext.externalSessionId |
network.parent_session_id |
Se asigna directamente. |
client.device |
principal.asset.type /additional.fields.value.string_value |
Se asigna a principal.asset.type (WORKSTATION, MOBILE, ROLE_UNSPECIFIED) según el valor. También se asigna como un valor de cadena con la clave device en additional.fields . |
client.geographicalContext.city |
principal.location.city |
Se asigna directamente. |
client.geographicalContext.country |
principal.location.country_or_region |
Se asigna directamente. |
client.geographicalContext.geolocation.lat |
principal.location.region_latitude |
Se asigna directamente. |
client.geographicalContext.geolocation.lon |
principal.location.region_longitude |
Se asigna directamente. |
client.geographicalContext.postalCode |
additional.fields.value.string_value |
Se asigna directamente como un valor de cadena con la clave Postal code en additional.fields . |
client.geographicalContext.state |
principal.location.state |
Se asigna directamente. |
client.ipAddress |
principal.ip , principal.asset.ip |
Se asigna directamente. |
client.userAgent.browser |
target.resource.attribute.labels.value |
Se asigna directamente, con la clave Browser . |
client.userAgent.os |
principal.platform |
Se asigna a la plataforma (LINUX, WINDOWS, MAC) según el valor. |
client.userAgent.rawUserAgent |
network.http.user_agent , network.http.parsed_user_agent |
Se asigna y analiza directamente. |
client.zone |
additional.fields.value.string_value |
Se asigna directamente como un valor de cadena con la clave zone en additional.fields . |
debugContext.debugData.behaviors |
security_result.description , security_result.detection_fields |
Se asigna directamente a la descripción. Los comportamientos individuales se extraen y se agregan como campos de detección. |
debugContext.debugData.changedAttributes |
security_result.detection_fields.value |
Se asigna directamente, con la clave changedAttributes . |
debugContext.debugData.clientAddress |
principal.ip , principal.asset.ip |
Se asigna directamente si faltan request.ipChain y client.ipAddress . |
debugContext.debugData.deviceFingerprint |
target.asset.asset_id |
Se asigna directamente y tiene el prefijo device_finger_print: . |
debugContext.debugData.dtHash |
security_result.detection_fields.value |
Se asigna directamente, con la clave dtHash . |
debugContext.debugData.factor |
security_result.detection_fields.value |
Se asigna directamente, con la clave factor . |
debugContext.debugData.factorIntent |
security_result.detection_fields.value |
Se asigna directamente, con la clave factorIntent . |
debugContext.debugData.logOnlySecurityData.risk.reasons |
security_result.detection_fields.value |
Se asigna directamente, con la clave Risk Reasons . |
debugContext.debugData.privilegeGranted |
target.user.attribute.roles |
Se dividieron en privilegios individuales y se agregaron como roles con nombre y descripción. |
debugContext.debugData.pushOnlyResponseType |
security_result.detection_fields.value |
Se asigna directamente, con la clave pushOnlyResponseType . |
debugContext.debugData.pushWithNumberChallengeResponseType |
security_result.detection_fields.value |
Se asigna directamente, con la clave pushWithNumberChallengeResponseType . |
debugContext.debugData.requestUri |
extensions.auth.auth_details |
Se asigna directamente. |
debugContext.debugData.suspiciousActivityEventId |
security_result.detection_fields.value |
Se asigna directamente, con la clave suspiciousActivityEventId . |
debugContext.debugData.suspiciousActivityEventType |
security_result.detection_fields.value |
Se asigna directamente, con la clave suspiciousActivityEventType . |
debugContext.debugData.threatDetections |
security_result.detection_fields.value |
Se asigna directamente, con la clave threatDetections . |
debugContext.debugData.threatSuspected |
security_result.detection_fields.value , security_result.threat_status |
Se asigna como un campo de detección con la clave threatSuspected . Se usa para derivar el estado de amenaza (ACTIVE o FALSE_POSITIVE). |
debugContext.debugData.url |
target.url |
Se asigna directamente. |
displayMessage |
security_result.summary |
Se asigna directamente. |
eventType |
metadata.product_event_type , metadata.event_type |
Se asigna directamente a product_event_type . Se usa para derivar event_type (USER_LOGIN, USER_LOGOUT, USER_CHANGE_PASSWORD, USER_CHANGE_PERMISSIONS, USER_DELETION, GROUP_MODIFICATION, SETTING_MODIFICATION, SCHEDULED_TASK_ENABLE, RESOURCE_CREATION, USER_UNCATEGORIZED). |
legacyEventType |
security_result.detection_fields.value |
Se asigna directamente, con la clave legacyEventType . |
outcome.reason |
security_result.category_details |
Se asigna directamente. |
outcome.result |
security_result.action |
Se asigna a la acción (ALLOW, CHALLENGE, BLOCK) según el valor. |
published |
metadata.event_timestamp |
Se analizó como marca de tiempo. |
request.ipChain.n.geographicalContext |
intermediary.location |
Es el contexto geográfico de las IPs intermediarias en la cadena de solicitudes. |
request.ipChain.n.ip |
intermediary.ip |
Son las direcciones IP de los intermediarios en la cadena de solicitudes. |
securityContext.asNumber |
security_result.detection_fields.value |
Se asigna directamente, con la clave asNumber . |
securityContext.asOrg |
security_result.detection_fields.value |
Se asigna directamente, con la clave asOrg . |
securityContext.domain |
security_result.detection_fields.value |
Se asigna directamente, con la clave domain . |
securityContext.isp |
security_result.detection_fields.value |
Se asigna directamente, con la clave isp . |
securityContext.isProxy |
security_result.detection_fields.value |
Se asigna directamente, con la clave anonymized IP . |
target.n.alternateId |
target.user.email_addresses /target.user.userid |
Si es una dirección de correo electrónico, se asigna a target.user.email_addresses . Si no es una dirección de correo electrónico, se usa como target.user.userid . |
target.n.detailEntry.clientAppId |
target.asset_id |
Se asigna directamente y tiene el prefijo Client_app_id: . |
target.n.detailEntry.methodTypeUsed |
target.resource_ancestors.attribute.labels.value |
Se asigna directamente, con la clave methodTypeUsed cuando el tipo de destino es AuthenticatorEnrollment. |
target.n.detailEntry.methodUsedVerifiedProperties |
target.resource_ancestors.attribute.labels.value |
Se asigna directamente, con la clave methodUsedVerifiedProperties cuando el tipo de destino es AuthenticatorEnrollment. |
target.n.detailEntry.policyType |
target.resource_ancestors.attribute.labels.value |
Se asigna directamente, con la clave Policy Type . |
target.n.detailEntry.signOnModeType |
security_result.detection_fields.value |
Se asigna directamente, con la clave signOnModeType . |
target.n.displayName |
target.user.user_display_name / target.application / target.resource.name |
Se asigna según el tipo de objetivo. |
target.n.id |
target.user.product_object_id / target.resource.product_object_id / target.resource_ancestors.product_object_id |
Se asigna según el tipo de objetivo. |
target.n.type |
target.user.attribute.roles.name / target.resource.resource_subtype / target.resource_ancestors.resource_subtype |
Se asigna según el tipo de objetivo. |
transaction.id |
network.session_id |
Se asigna directamente. |
transaction.type |
additional.fields.value.string_value |
Se asigna directamente como un valor de cadena con la clave type en additional.fields . |
uuid |
metadata.product_log_id |
Se asigna directamente. |
N/A | metadata.vendor_name |
Se define en Okta . |
N/A | metadata.product_name |
Se define en Okta . |
N/A | extensions.auth.type |
Se define en SSO . |
¿Necesitas más ayuda? Obtén respuestas de miembros de la comunidad y profesionales de Google SecOps.