Collecter les journaux Okta

Compatible avec :

Ce document explique comment ingérer des journaux Okta dans Google Security Operations à l'aide de l'API Okta. L'analyseur extrait les journaux système, en traitant les événements uniques et les événements par lot dans un tableau JSON. Il normalise les données au format UDM, mappe les champs Okta à leurs équivalents UDM, enrichit les données avec les user-agents analysés, les informations géographiques et les détails d'authentification, et génère des événements de résultats de sécurité en fonction des résultats et des informations sur les risques.

Avant de commencer

  • Instance Google SecOps
  • Accès privilégié à Okta

Configurer Okta

Pour configurer l'authentification unique Okta, effectuez les tâches suivantes :

Créer un utilisateur administrateur Okta avec des droits en lecture seule

  1. Connectez-vous à la console d'administration Okta.
  2. Créez un utilisateur standard.

    • Accédez à Annuaire > Personnes.
    • Cliquez sur Ajouter une personne et renseignez les champs obligatoires.
  3. Sélectionnez Sécurité > Administrateurs.

  4. Cliquez sur Ajouter un administrateur.

  5. Dans le champ Attribution d'administrateur par un administrateur, recherchez l'utilisateur standard.

  6. Dans la section Rôles, sélectionnez Administrateur en lecture seule dans la liste.

  7. Déconnectez-vous du compte administrateur.

Obtenir une clé API

  1. Connectez-vous à la console d'administration Okta avec l'utilisateur administrateur en lecture seule.
  2. Accédez à Sécurité > API > Jetons.
  3. Cliquez sur Créer un jeton.
  4. Attribuez un nom explicite au jeton.
  5. Indiquez la zone d'adresses IP où l'API sera utilisée (vous pouvez sélectionner n'importe quelle adresse IP si vous n'êtes pas sûr).
  6. Cliquez sur Créer un jeton.
  7. Copiez la clé API.
  8. Cliquez sur OK.

Configurer des flux

Il existe deux points d'entrée différents pour configurer les flux dans la plate-forme Google SecOps :

  • Paramètres SIEM> Flux
  • Plate-forme de contenu > Packs de contenu

Configurer des flux à partir de Paramètres SIEM > Flux

Pour configurer plusieurs flux pour différents types de journaux dans cette famille de produits, consultez Configurer des flux par produit.

Pour configurer un seul flux :

  1. Accédez à Paramètres SIEM> Flux.
  2. Cliquez sur Add New Feed (Ajouter un flux).
  3. Sur la page suivante, cliquez sur Configurer un seul flux.
  4. Dans le champ Nom du flux, saisissez un nom pour le flux (par exemple, Journaux Okta).
  5. Sélectionnez API tierce comme type de source.
  6. Sélectionnez Okta comme type de journal.
  7. Cliquez sur Suivant.
  8. Spécifiez les valeurs des paramètres d'entrée suivants :
    • En-tête HTTP d'authentification : saisissez la clé API Okta au format suivant : Authorization:<API_KEY>.
    • Nom d'hôte de l'API : spécifiez le nom de domaine de votre hôte Okta (par exemple, <your-domain>.okta.com).
    • Espace de noms de l'élément : espace de noms de l'élément.
    • Libellés d'ingestion : libellé appliqué aux événements de ce flux.
  9. Cliquez sur Suivant.
  10. Vérifiez la configuration du flux sur l'écran Finaliser, puis cliquez sur Envoyer.

Configurer des flux depuis le Hub de contenu

Indiquez les valeurs des champs suivants :

  • En-têtes HTTP d'authentification : utilisés pour l'authentification auprès de l'API SentinelOne Alerts/Threats & static-indicator au format key:value.
  • Nom d'hôte de l'API : nom de domaine complet de l'API SentinelOne.

Options avancées

  • Nom du flux : valeur préremplie qui identifie le flux.
  • Type de source : méthode utilisée pour collecter les journaux dans Google SecOps.
  • Espace de noms de l'élément : espace de noms associé au flux.
  • Libellés d'ingestion : libellés appliqués à tous les événements de ce flux.

Table de mappage UDM

Champ de journal Mappage UDM Logique
actor.alternateId principal.user.email_addresses Extrait de actor.alternateId s'il s'agit d'une adresse e-mail. Si ce n'est pas une adresse e-mail, elle est utilisée comme principal.user.userid.
actor.displayName principal.user.user_display_name Mappé directement.
actor.id principal.user.product_object_id Mappé directement.
actor.type principal.user.attribute.roles.name Mappé directement.
authenticationContext.authenticationProvider security_result.detection_fields.value Mappé directement, avec la clé authenticationProvider.
authenticationContext.credentialProvider security_result.detection_fields.value Mappé directement, avec la clé credentialProvider.
authenticationContext.credentialType extensions.auth.mechanism Utilisé pour dériver le mécanisme d'authentification (OTP, USERNAME_PASSWORD, LOCAL).
authenticationContext.externalSessionId network.parent_session_id Mappé directement.
client.device principal.asset.type/additional.fields.value.string_value Mappé sur principal.asset.type (WORKSTATION, MOBILE, ROLE_UNSPECIFIED) en fonction de la valeur. Également mappé en tant que valeur de chaîne avec la clé device dans additional.fields.
client.geographicalContext.city principal.location.city Mappé directement.
client.geographicalContext.country principal.location.country_or_region Mappé directement.
client.geographicalContext.geolocation.lat principal.location.region_latitude Mappé directement.
client.geographicalContext.geolocation.lon principal.location.region_longitude Mappé directement.
client.geographicalContext.postalCode additional.fields.value.string_value Mappé directement en tant que valeur de chaîne avec la clé Postal code dans additional.fields.
client.geographicalContext.state principal.location.state Mappé directement.
client.ipAddress principal.ip, principal.asset.ip Mappé directement.
client.userAgent.browser target.resource.attribute.labels.value Mappé directement, avec la clé Browser.
client.userAgent.os principal.platform Mappé à la plate-forme (LINUX, WINDOWS, MAC) en fonction de la valeur.
client.userAgent.rawUserAgent network.http.user_agent, network.http.parsed_user_agent Mappé et analysé directement.
client.zone additional.fields.value.string_value Mappé directement en tant que valeur de chaîne avec la clé zone dans additional.fields.
debugContext.debugData.behaviors security_result.description, security_result.detection_fields Mappé directement sur la description. Les comportements individuels sont extraits et ajoutés en tant que champs de détection.
debugContext.debugData.changedAttributes security_result.detection_fields.value Mappé directement, avec la clé changedAttributes.
debugContext.debugData.clientAddress principal.ip, principal.asset.ip Mappé directement si request.ipChain et client.ipAddress sont manquants.
debugContext.debugData.deviceFingerprint target.asset.asset_id Mappé directement, avec le préfixe device_finger_print:.
debugContext.debugData.dtHash security_result.detection_fields.value Mappé directement, avec la clé dtHash.
debugContext.debugData.factor security_result.detection_fields.value Mappé directement, avec la clé factor.
debugContext.debugData.factorIntent security_result.detection_fields.value Mappé directement, avec la clé factorIntent.
debugContext.debugData.logOnlySecurityData.risk.reasons security_result.detection_fields.value Mappé directement, avec la clé Risk Reasons.
debugContext.debugData.privilegeGranted target.user.attribute.roles Ils sont divisés en droits individuels et ajoutés en tant que rôles avec un nom et une description.
debugContext.debugData.pushOnlyResponseType security_result.detection_fields.value Mappé directement, avec la clé pushOnlyResponseType.
debugContext.debugData.pushWithNumberChallengeResponseType security_result.detection_fields.value Mappé directement, avec la clé pushWithNumberChallengeResponseType.
debugContext.debugData.requestUri extensions.auth.auth_details Mappé directement.
debugContext.debugData.suspiciousActivityEventId security_result.detection_fields.value Mappé directement, avec la clé suspiciousActivityEventId.
debugContext.debugData.suspiciousActivityEventType security_result.detection_fields.value Mappé directement, avec la clé suspiciousActivityEventType.
debugContext.debugData.threatDetections security_result.detection_fields.value Mappé directement, avec la clé threatDetections.
debugContext.debugData.threatSuspected security_result.detection_fields.value, security_result.threat_status Mappé en tant que champ de détection avec la clé threatSuspected. Permet de déterminer l'état de la menace (ACTIVE ou FALSE_POSITIVE).
debugContext.debugData.url target.url Mappé directement.
displayMessage security_result.summary Mappé directement.
eventType metadata.product_event_type, metadata.event_type Mappé directement sur product_event_type. Utilisé pour dériver 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 Mappé directement, avec la clé legacyEventType.
outcome.reason security_result.category_details Mappé directement.
outcome.result security_result.action Mappé à une action (ALLOW, CHALLENGE, BLOCK) en fonction de la valeur.
published metadata.event_timestamp Analysé en code temporel.
request.ipChain.n.geographicalContext intermediary.location Contexte géographique des adresses IP intermédiaires dans la chaîne de requête.
request.ipChain.n.ip intermediary.ip Adresses IP des intermédiaires de la chaîne de requête.
securityContext.asNumber security_result.detection_fields.value Mappé directement, avec la clé asNumber.
securityContext.asOrg security_result.detection_fields.value Mappé directement, avec la clé asOrg.
securityContext.domain security_result.detection_fields.value Mappé directement, avec la clé domain.
securityContext.isp security_result.detection_fields.value Mappé directement, avec la clé isp.
securityContext.isProxy security_result.detection_fields.value Mappé directement, avec la clé anonymized IP.
target.n.alternateId target.user.email_addresses/target.user.userid S'il s'agit d'une adresse e-mail, elle est mappée sur target.user.email_addresses. Si ce n'est pas une adresse e-mail, elle est utilisée comme target.user.userid.
target.n.detailEntry.clientAppId target.asset_id Mappé directement, avec le préfixe Client_app_id:.
target.n.detailEntry.methodTypeUsed target.resource_ancestors.attribute.labels.value Mappé directement, avec la clé methodTypeUsed lorsque le type cible est AuthenticatorEnrollment.
target.n.detailEntry.methodUsedVerifiedProperties target.resource_ancestors.attribute.labels.value Mappé directement, avec la clé methodUsedVerifiedProperties lorsque le type cible est AuthenticatorEnrollment.
target.n.detailEntry.policyType target.resource_ancestors.attribute.labels.value Mappé directement, avec la clé Policy Type.
target.n.detailEntry.signOnModeType security_result.detection_fields.value Mappé directement, avec la clé signOnModeType.
target.n.displayName target.user.user_display_name / target.application / target.resource.name Mappage basé sur le type de cible.
target.n.id target.user.product_object_id / target.resource.product_object_id / target.resource_ancestors.product_object_id Mappage basé sur le type de cible.
target.n.type target.user.attribute.roles.name / target.resource.resource_subtype / target.resource_ancestors.resource_subtype Mappage basé sur le type de cible.
transaction.id network.session_id Mappé directement.
transaction.type additional.fields.value.string_value Mappé directement en tant que valeur de chaîne avec la clé type dans additional.fields.
uuid metadata.product_log_id Mappé directement.
N/A metadata.vendor_name Variable définie sur Okta.
N/A metadata.product_name Variable définie sur Okta.
N/A extensions.auth.type Variable définie sur SSO.

Vous avez encore besoin d'aide ? Obtenez des réponses de membres de la communauté et de professionnels Google SecOps.