Recopila registros del contexto del usuario de Okta

Compatible con:

En este documento, se explica cómo recopilar registros de contexto del usuario de Okta configurando un feed de Google Security Operations con la API de terceros.

Antes de comenzar

Asegúrate de cumplir con los siguientes requisitos previos:

  • Una instancia de Google SecOps
  • Acceso con privilegios al arrendatario de Okta o a la Consola del administrador
  • Privilegios de creación de tokens de API en Okta

Configura la lista de IP permitidas

Antes de crear el feed, debes incluir los rangos de IP de Google SecOps en la lista de entidades permitidas de la configuración de red o firewall de Okta.

Obtén los rangos de IP de Google SecOps

Agrega rangos de IP al contexto del usuario de Okta

  1. Accede a la Consola del administrador de Okta.
  2. Ve a Seguridad > Redes.
  3. En Restricciones de dirección IP, haz clic en Editar.
  4. Agrega cada rango de IP de Google SecOps en notación CIDR a las direcciones IP de confianza.
  5. Haz clic en Guardar.

Configura el acceso a la API de User Context de Okta

Para permitir que Google SecOps extraiga datos de contexto del usuario, debes crear un token de API con permisos de lectura.

Crea un token de API

  1. Accede a la Consola del administrador de Okta.
  2. Ve a Seguridad > API.
  3. Selecciona la pestaña Tokens.
  4. Haz clic en Create Token.
  5. Proporciona los siguientes detalles de configuración:
    • Nombre: Ingresa un nombre descriptivo (por ejemplo, Google SecOps Integration).
    • Descripción (opcional): Ingresa una descripción.
  6. Haz clic en Create Token.

Registra las credenciales de la API

Después de crear el token de API, recibirás la siguiente credencial:

  • Token de API: Es el valor de tu token de API (por ejemplo, 00QCGr-1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1).

Permisos de API necesarios

El token de API requiere los siguientes permisos en Okta:

Permiso o rol Nivel de acceso Objetivo
Administrador de solo lectura Leer Accede a los datos del perfil del usuario
Administrador avanzado Leer Acceso completo a todos los datos del usuario

Configura feeds

Para configurar un feed, sigue estos pasos:

  1. Ve a Configuración de SIEM > Feeds.
  2. Haz clic en Agregar feed nuevo.
  3. En la siguiente página, haz clic en Configurar un solo feed.
  4. En el campo Nombre del feed, ingresa un nombre para el feed (por ejemplo, Okta User Context).
  5. Selecciona API de terceros como el Tipo de origen.
  6. Selecciona Contexto del usuario de Okta como el Tipo de registro.
  7. Haz clic en Siguiente.
  8. Especifica valores para los siguientes parámetros de entrada:

    • Encabezado HTTP de autenticación: Ingresa las credenciales de autenticación en el siguiente formato:

      Authorization:SSWS your-api-token
      
      • Por ejemplo: Authorization:SSWS 00QCGr-1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1
    • Nombre de host de la API: Es el nombre de dominio completamente calificado de tu instancia de Okta (p.ej., example.okta.com, no cualquier dominio personalizado que se pueda configurar).

      • Por ejemplo: company.okta.com
    • Campo de referencia del ID del administrador: Es el ID que se requiere cuando usas un ID que no es de Okta para hacer referencia a los administradores (opcional).

    • Espacio de nombres del recurso: Es el espacio de nombres del recurso.

    • Etiquetas de transmisión: Es la etiqueta que se aplicará a los eventos de este feed.

  9. Haz clic en Siguiente.

  10. Revisa la nueva configuración del feed en la pantalla Finalizar y, luego, haz clic en Enviar.

Después de la configuración, el feed comienza a recuperar registros de la instancia de Okta User Context en orden cronológico.

Extremos regionales

Okta usa diferentes extremos de API según la región de tu organización:

Región URL base o nombre de host
EE.UU. (predeterminado) {org-name}.okta.com
UE (EMEA) {org-name}.okta-emea.com
APAC {org-name}.okta.com.au
Versión preliminar (pruebas) {org-name}.oktapreview.com

Usa el nombre de host que corresponde a la región de tu instancia de Okta.

Límites de frecuencia de la API

La API de Okta tiene los siguientes límites de frecuencia:

  • Límite de frecuencia predeterminado: 600 solicitudes por minuto para la mayoría de los extremos
  • API de System Log: 60 solicitudes por minuto
  • Extremos de usuario: 600 solicitudes por minuto

Google SecOps controla automáticamente la límite de frecuencia con retirada exponencial. Si tienes problemas, comunícate con el equipo de asistencia de Okta para aumentar los límites de la API.

Tabla de asignación de UDM

Campo de registro Asignación de UDM Lógica
activated event.idm.entity.entity.labels Si activated existe, su valor se agrega como un par clave-valor con la clave "activated".
created event.idm.entity.entity.labels Si created existe, su valor se agrega como un par clave-valor con la clave "created".
profile.costCenter event.idm.entity.entity.labels Si existe profile.costCenter, su valor se agrega como un par clave-valor con la clave "costCenter".
profile.Function event.idm.entity.entity.labels Si existe profile.Function, su valor se agrega como un par clave-valor con la clave "Function".
statusChanged event.idm.entity.entity.labels Si statusChanged existe, su valor se agrega como un par clave-valor con la clave "statusChanged".
type.id event.idm.entity.entity.labels Si type.id existe, su valor se agrega como un par clave-valor con la clave "type_id".
profile.location event.idm.entity.entity.location.name Valor tomado de profile.location.
profile.AD_ObjectGUID event.idm.entity.entity.user.attribute.labels Si existe profile.AD_ObjectGUID, su valor se agrega como un par clave-valor con la clave "AD_ObjectGUID".
profile.ADpwdLastSet event.idm.entity.entity.user.attribute.labels Si existe profile.ADpwdLastSet, su valor se agrega como un par clave-valor con la clave "ADpwdLastSet".
profile.AFF_Code event.idm.entity.entity.user.attribute.labels Si existe profile.AFF_Code, su valor se agrega como un par clave-valor con la clave "AFF_Code".
profile.Desk_Location_WD event.idm.entity.entity.user.attribute.labels Si profile.Desk_Location_WD existe, su valor se agrega como un par clave-valor con la clave "Desk_Location_WD".
profile.Mailing_Address_WD event.idm.entity.entity.user.attribute.labels Si profile.Mailing_Address_WD existe, su valor se agrega como un par clave-valor con la clave "Mailing_Address_WD".
profile.Manager_UPN event.idm.entity.entity.user.attribute.labels Si profile.Manager_UPN existe, su valor se agrega como un par clave-valor con la clave "Manager_UPN".
profile.PRIVATE_CONF_Profile event.idm.entity.entity.user.attribute.labels Si profile.PRIVATE_CONF_Profile existe, su valor se agrega como un par clave-valor con la clave "PRIVATE_CONF_Profile".
profile.Region_WD event.idm.entity.entity.user.attribute.labels Si profile.Region_WD existe, su valor se agrega como un par clave-valor con la clave "Region_WD".
profile.Subsidiary_Company event.idm.entity.entity.user.attribute.labels Si profile.Subsidiary_Company existe, su valor se agrega como un par clave-valor con la clave "Subsidiary_Company".
profile.Telephone_Work event.idm.entity.entity.user.attribute.labels Si profile.Telephone_Work existe, su valor se agrega como un par clave-valor con la clave "Telephone_Work".
profile.Temp_WD_Primary_Email event.idm.entity.entity.user.attribute.labels Si profile.Temp_WD_Primary_Email existe, su valor se agrega como un par clave-valor con la clave "Temp_WD_Primary_Email".
profile.VMware_WS1_Username event.idm.entity.entity.user.attribute.labels Si profile.VMware_WS1_Username existe, su valor se agrega como un par clave-valor con la clave "VMware_WS1_Username".
profile.Work_Street_Address_WD event.idm.entity.entity.user.attribute.labels Si existe profile.Work_Street_Address_WD, su valor se agrega como un par clave-valor con la clave "Work_Street_Address_WD".
profile.Workato_WD_Primary_Email event.idm.entity.entity.user.attribute.labels Si profile.Workato_WD_Primary_Email existe, su valor se agrega como un par clave-valor con la clave "Workato_WD_Primary_Email".
profile.Workday_ID event.idm.entity.entity.user.attribute.labels Si profile.Workday_ID existe, su valor se agrega como un par clave-valor con la clave "Workday_ID".
profile.Worker_Type_WD event.idm.entity.entity.user.attribute.labels Si profile.Worker_Type_WD existe, su valor se agrega como un par clave-valor con la clave "Worker_Type_WD".
profile.businessUnit event.idm.entity.entity.user.attribute.labels Si existe profile.businessUnit, su valor se agrega como un par clave-valor con la clave "businessUnit".
profile.companyName event.idm.entity.entity.user.attribute.labels Si profile.companyName existe, su valor se agrega como un par clave-valor con la clave "companyName".
profile.contingentSupplierName event.idm.entity.entity.user.attribute.labels Si existe profile.contingentSupplierName, su valor se agrega como un par clave-valor con la clave "contingentSupplierName".
profile.conversationId event.idm.entity.entity.user.attribute.labels Si existe profile.conversationId, su valor se agrega como un par clave-valor con la clave "conversationId".
profile.distinguishedName event.idm.entity.entity.user.attribute.labels Si existe profile.distinguishedName, su valor se agrega como un par clave-valor con la clave "distinguishedName".
profile.division event.idm.entity.entity.user.attribute.labels Si existe profile.division, su valor se agrega como un par clave-valor con la clave "division".
profile.emailPrefix event.idm.entity.entity.user.attribute.labels Si profile.emailPrefix existe, su valor se agrega como un par clave-valor con la clave "emailPrefix".
profile.employeeType event.idm.entity.entity.user.attribute.labels Si existe profile.employeeType, su valor se agrega como un par clave-valor con la clave "employeeType".
profile.homePostalAddress event.idm.entity.entity.user.attribute.labels Si profile.homePostalAddress existe, su valor se agrega como un par clave-valor con la clave "homePostalAddress".
profile.isManager event.idm.entity.entity.user.attribute.labels Si existe profile.isManager, su valor se agrega como un par clave-valor con la clave "isManager".
lastLogin event.idm.entity.entity.user.attribute.labels Si lastLogin existe, su valor se agrega como un par clave-valor con la clave "lastLogin".
profile.leaveOfAbsence event.idm.entity.entity.user.attribute.labels Si existe profile.leaveOfAbsence, su valor se agrega como un par clave-valor con la clave "leaveOfAbsence".
profile.managerDn event.idm.entity.entity.user.attribute.labels Si existe profile.managerDn, su valor se agrega como un par clave-valor con la clave "managerDn".
profile.payGroup event.idm.entity.entity.user.attribute.labels Si profile.payGroup existe, su valor se agrega como un par clave-valor con la clave "payGroup".
profile.wdemployeeID event.idm.entity.entity.user.attribute.labels Si profile.wdemployeeID existe, su valor se agrega como un par clave-valor con la clave "wdemployeeID".
profile.zipCode event.idm.entity.entity.user.attribute.labels Si existe profile.zipCode, su valor se agrega como un par clave-valor con la clave "zipCode".
profile.userType event.idm.entity.entity.user.attribute.roles Si existe profile.userType, su valor se agrega a un array de roles.
profile.organization, profile.company event.idm.entity.entity.user.company_name Valor tomado de profile.organization o profile.company si el primero no está presente.
profile.department event.idm.entity.entity.user.department Valor tomado de profile.department.
profile.email, profile.secondEmail, profile.login event.idm.entity.entity.user.email_addresses Los valores de profile.email, profile.secondEmail y profile.login (si es un correo electrónico y no un duplicado) se combinan en este campo.
profile.employeeNumber event.idm.entity.entity.user.employee_id Valor tomado de profile.employeeNumber.
profile.firstName, profile.Preferred_First_Name event.idm.entity.entity.user.first_name Valor tomado de profile.firstName o profile.Preferred_First_Name si el primero no está presente.
profile.EmployeeWorkGroup event.idm.entity.entity.user.group_identifiers Valor tomado de profile.EmployeeWorkGroup.
profile.HireDate, profile.hiredate event.idm.entity.entity.user.hire_date El valor se analiza a partir de profile.HireDate o profile.hiredate si el primero no está presente.
profile.lastName, profile.preferred_Last_Name event.idm.entity.entity.user.last_name Valor tomado de profile.lastName si existe profile.lastName o profile.preferred_Last_Name.
lastLogin event.idm.entity.entity.user.last_login_time El valor se analiza a partir de lastLogin.
passwordChanged event.idm.entity.entity.user.last_password_change_time El valor se analiza a partir de passwordChanged.
profile.manager, profile.managerEmail, profile.managerId event.idm.entity.entity.user.managers Se completa con un objeto que contiene user_display_name de profile.manager, email_addresses de profile.managerEmail y employee_id de profile.managerId.
profile.city, profile.firstBaseCity event.idm.entity.entity.user.office_address.city Valor tomado de profile.city o profile.firstBaseCity si el primero no está presente.
profile.countryCode, profile.country event.idm.entity.entity.user.office_address.country_or_region Valor tomado de profile.countryCode o profile.country si el primero no está presente.
profile.streetAddress event.idm.entity.entity.user.personal_address.name Valor tomado de profile.streetAddress.
profile.state event.idm.entity.entity.user.personal_address.state Valor tomado de profile.state.
profile.primaryPhone, profile.mobilePhone, profile.mobile event.idm.entity.entity.user.phone_numbers Los valores de profile.primaryPhone, profile.mobilePhone y profile.mobile se combinan en este campo.
profile.terminationDate, profile.terminationdate event.idm.entity.entity.user.termination_date El valor se analiza a partir de profile.terminationDate o profile.terminationdate si el primero no está presente.
profile.title event.idm.entity.entity.user.title Valor tomado de profile.title.
status event.idm.entity.entity.user.user_authentication_status Se asigna desde status: ACTIVE/RECOVERY/LOCKED_OUT/PASSWORD_EXPIRED -> ACTIVE; SUSPENDED -> SUSPENDED; DEPROVISIONED -> DELETED; de lo contrario, UNKNOWN_AUTHENTICATION_STATUS.
profile.displayName event.idm.entity.entity.user.user_display_name Valor tomado de profile.displayName.
profile.samAccountName, profile.samaccountname, profile.login, profile.ldapUid event.idm.entity.entity.user.userid Se completa con la siguiente precedencia: profile.samAccountName, profile.samaccountname, profile.login (si no es un correo electrónico), profile.ldapUid (si profile.login no es un correo electrónico).
event.idm.entity.metadata.entity_type Se define en USER.
id event.idm.entity.metadata.product_entity_id Valor tomado de id.
event.idm.entity.metadata.product_name Se define en Identity Cloud.
event.idm.entity.metadata.vendor_name Se define en Okta.

¿Necesitas más ayuda? Obtén respuestas de miembros de la comunidad y profesionales de Google SecOps.