Collecter les journaux Cisco Identity Intelligence

Compatible avec :

Ce document explique comment configurer Cisco Identity Intelligence pour transférer des journaux vers Google Security Operations à l'aide de webhooks.

Cisco Identity Intelligence (anciennement Oort Security) est une plate-forme de détection et de réponse aux menaces liées à l'identité qui surveille en permanence le comportement des utilisateurs, les schémas d'authentification, l'utilisation des appareils et les droits d'accès des fournisseurs d'identité. Il détecte les menaces basées sur l'identité, les erreurs de configuration et les cas de non-respect de la conformité en analysant l'activité des utilisateurs, les échecs des contrôles de sécurité, les scores de confiance et les comportements à risque.

Avant de commencer

Assurez-vous de remplir les conditions préalables suivantes :

  • Une instance Google SecOps
  • Accès privilégié à un locataire Cisco Identity Intelligence
  • Autorisations d'administration pour gérer les intégrations dans Cisco Identity Intelligence
  • Accès à la Google Cloud Console (pour créer une clé API)

Créer un flux de webhook dans Google SecOps

Créer le flux

  1. Accédez à Paramètres SIEM> Flux.
  2. Cliquez sur Ajouter un flux d'actualités.
  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, Cisco Identity Intelligence Events).
  5. Sélectionnez Webhook comme type de source.
  6. Sélectionnez Cisco Identity Intelligence comme Type de journal.
  7. Cliquez sur Suivant.
  8. Spécifiez les valeurs des paramètres d'entrée suivants :
    • Délimiteur de division (facultatif) : saisissez \n pour diviser les événements multilignes.
    • Espace de noms de l'élément : espace de noms de l'élément
    • Libellés d'ingestion : libellé à appliquer aux événements de ce flux
  9. Cliquez sur Suivant.
  10. Vérifiez la configuration de votre nouveau flux sur l'écran Finaliser, puis cliquez sur Envoyer.

Générer et enregistrer une clé secrète

Après avoir créé le flux, vous devez générer une clé secrète pour l'authentification :

  1. Sur la page d'informations du flux, cliquez sur Générer une clé secrète.
  2. Une boîte de dialogue affiche la clé secrète.
  3. Copiez et enregistrez la clé secrète de manière sécurisée.

Obtenir l'URL du point de terminaison du flux

  1. Accédez à l'onglet Détails du flux.
  2. Dans la section Informations sur le point de terminaison, copiez l'URL du point de terminaison du flux.
  3. Le format d'URL est le suivant :

    https://{region}-chronicle.googleapis.com/v1/{parent}/logs:import
    

    Où {region} correspond à la région de votre instance Google SecOps (par exemple, us, europe ou asia-southeast1) et {parent} correspond au chemin d'accès à la ressource au format projects/<PROJECT_ID>/locations/<LOCATION>/instances/<INSTANCE_ID>/logTypes/<LOG_TYPE>.

  4. Enregistrez cette URL pour les étapes suivantes.

  5. Cliquez sur OK.

Créer une clé API Google Cloud

Chronicle nécessite une clé API pour l'authentification. Créez une clé API restreinte dans la Google Cloud Console.

Créer la clé API

  1. Accédez à la page Identifiants de la console Google Cloud.
  2. Sélectionnez votre projet (celui associé à votre instance Chronicle).
  3. Cliquez sur Créer des identifiants> Clé API.
  4. Une clé API est créée et s'affiche dans une boîte de dialogue.
  5. Cliquez sur Modifier la clé API pour restreindre la clé.

Restreindre la clé API

  1. Sur la page des paramètres de la clé API :
    • Nom : saisissez un nom descriptif (par exemple, Chronicle Webhook API Key).
  2. Sous Restrictions relatives aux API :
    1. Sélectionnez Restreindre la clé.
    2. Dans le menu déroulant Sélectionner des API, recherchez et sélectionnez API Google SecOps (ou API Chronicle).
  3. Cliquez sur Enregistrer.
  4. Copiez la valeur de la clé API dans le champ Clé API en haut de la page.
  5. Enregistrez la clé API de manière sécurisée.

Configurer le webhook Cisco Identity Intelligence

Créer l'URL de webhook

  • Combinez l'URL du point de terminaison Chronicle et la clé API :

    <ENDPOINT_URL>?key=<API_KEY>&secret=<SECRET_KEY>
    
    • Exemple :

      https://{region}-chronicle.googleapis.com/v1/{parent}/logs:import?key=AIzaSyD...&secret=abcd1234...
      

Remplacez les éléments suivants :

  • <ENDPOINT_URL> : URL du point de terminaison du flux Chronicle copiée précédemment
  • <API_KEY> : clé API Google Cloud créée précédemment
  • <SECRET_KEY> : clé secrète du webhook Chronicle générée précédemment

Créer une cible de notification de webhook dans Cisco Identity Intelligence

  1. Connectez-vous à Cisco Identity Intelligence.
  2. Accédez à Intégrations.
  3. Cliquez sur Ajouter une intégration.
  4. Faites défiler la page jusqu'à la section Webhook.
  5. Cliquez sur Add Webhook Target (Ajouter une cible de webhook).
  6. Fournissez les informations de configuration suivantes :
    • Nom : saisissez un nom descriptif (par exemple, Chronicle SIEM Integration).
    • URL du webhook : collez l'URL complète du point de terminaison avec la clé API et la clé secrète ci-dessus.
    • Type d'autorisation : sélectionnez Clé API.
    • Nom de la clé API : saisissez un nom de clé (par exemple, x-goog-chronicle-auth).
    • Valeur de la clé API : saisissez la clé API Google Cloud.
  7. Développez la section Paramètres HTTP d'appel.
  8. Ajoutez les paramètres suivants avec le type En-tête :
    • Clé : Content-Type, Valeur : application/json
    • Clé : Accept, Valeur : application/json
  9. Dans la section Utiliser cette cible pour, sélectionnez Échec de la vérification pour recevoir des notifications lorsque les vérifications d'identité détectent des échecs.
  10. Cliquez sur Enregistrer.

Tester la connexion du webhook

  1. Sur la page Intégrations, recherchez la cible de notification de webhook que vous avez créée.
  2. Cliquez sur le menu à trois points à droite de la ligne.
  3. Sélectionnez Tester la connectivité.
  4. Vérifiez que le message de test a bien été envoyé.

Activer le webhook pour les vérifications d'identité

Après avoir créé la cible de notification du webhook, vous devez l'activer pour les vérifications d'identité spécifiques que vous souhaitez surveiller.

  1. Accédez à la page d'informations de la vérification souhaitée dans Cisco Identity Intelligence.
  2. Développez le menu déroulant en haut à droite de la page.
  3. Cochez la case correspondant à la cible de notification de webhook que vous avez créée.
  4. Répétez l'opération pour chaque chèque que vous souhaitez envoyer à l'équipe Google SecOps.

Pour en savoir plus, consultez la documentation sur les Webhooks Cisco Identity Intelligence.

Référence des méthodes d'authentification

Les flux de webhook Chronicle sont compatibles avec plusieurs méthodes d'authentification. Choisissez la méthode compatible avec votre fournisseur.

Si votre fournisseur accepte les en-têtes HTTP personnalisés, utilisez cette méthode pour une meilleure sécurité.

  • Format de la requête :

    POST <ENDPOINT_URL> HTTP/1.1
    Content-Type: application/json
    x-goog-chronicle-auth: <API_KEY>
    x-chronicle-auth: <SECRET_KEY>
    
    {
        "event": "data",
        "timestamp": "2025-01-15T10:30:00Z"
    }
    

Avantages :

  • La clé API et le code secret ne sont pas visibles dans l'URL
  • Plus sécurisé (les en-têtes ne sont pas enregistrés dans les journaux d'accès du serveur Web)
  • Méthode privilégiée lorsque le fournisseur la prend en charge

Méthode 2 : Paramètres de requête

Si votre fournisseur n'accepte pas les en-têtes personnalisés, ajoutez les identifiants à l'URL.

  • Format de l'URL :

    <ENDPOINT_URL>?key=<API_KEY>&secret=<SECRET_KEY>
    
  • Exemple :

    https://{region}-chronicle.googleapis.com/v1/{parent}/logs:import?key=AIzaSyD...&secret=abcd1234...
    
  • Format de la requête :

    POST <ENDPOINT_URL>?key=<API_KEY>&secret=<SECRET_KEY> HTTP/1.1
    Content-Type: application/json
    
    {
        "event": "data",
        "timestamp": "2025-01-15T10:30:00Z"
    }
    

Inconvénients :

  • Identifiants visibles dans l'URL
  • Peut être consigné dans les journaux d'accès du serveur Web
  • Moins sécurisé que les en-têtes

Méthode 3 : Hybride (URL + en-tête)

Certaines configurations utilisent une clé API dans l'URL et une clé secrète dans l'en-tête.

  • Format de la demande :

    POST <ENDPOINT_URL>?key=<API_KEY> HTTP/1.1
    Content-Type: application/json
    x-chronicle-auth: <SECRET_KEY>
    
    {
        "event": "data",
        "timestamp": "2025-01-15T10:30:00Z"
    }
    

Noms des en-têtes d'authentification

Chronicle accepte les noms d'en-tête suivants pour l'authentification :

Pour la clé API :

  • x-goog-chronicle-auth (recommandé)
  • X-Goog-Chronicle-Auth (non sensible à la casse)

Pour la clé secrète :

  • x-chronicle-auth (recommandé)
  • X-Chronicle-Auth (non sensible à la casse)

Limites et bonnes pratiques concernant les webhooks

Limites de requêtes

Limite Valeur
Taille maximale des requêtes 4 Mo
Nombre maximal de RPS (requêtes par seconde) 15 000
Délai avant expiration de la requête 30 seconds
Comportement de nouvelle tentative Automatique avec intervalle exponentiel entre les tentatives

Table de mappage UDM

Champ du journal Mappage UDM Logique
compte account_label.value Valeur copiée directement
compte account_label.key Définie sur "account"
account_label security_result.detection_fields Fusionné dans detection_fields
additional_detaildescription.key additional_detaildescription.key Définir sur "description détaillée"
detaildescription additional_detaildescription.value.list_value.values Fusionné à partir de detaildescription
additional_detaildescription event.idm.read_only_udm.additional.fields Fusionné dans additional.fields
additional_recommendedaction.key additional_recommendedaction.key Définie sur "Action recommandée"
recommendedAction additional_recommendedaction.value.list_value.values Fusionné à partir de recommendedAction
additional_recommendedaction event.idm.read_only_udm.additional.fields Fusionné dans additional.fields
données1 usersFailing_label Valeur copiée directement
data.login login_label Valeur copiée directement
detail-type security_result.summary Valeur copiée directement
detail.id security_result.rule_id Valeur copiée directement
detail.title security_result.rule_name Valeur copiée directement
detail.severity security_result.severity Valeur de detail.severity si elle est dans [CRITICAL,ERROR,HIGH,INFORMATIONAL,LOW,MEDIUM], sinon MEDIUM si elle est modérée
detaildescription value_array.string_value Valeur copiée directement
detailsdata.key add_label.value, add_label.key Valeur de detailsdata.value, clé "loginDetails %{index} details %{detailindex} %{detailsdata.key}" si ce n'est pas failedSigninDetails ou ips
detailsdata.value add_label.value, add_label.key
detailsdata.key security_result.detection_fields Fusion de add_label si les conditions sont remplies
detailsdata.value security_result.detection_fields
field_.value security_result.detection_fields Fusionné pour divers champs imbriqués dans json_array (msg, ipInfo, asn, coordinates, first_event, second_event, locations) avec des clés telles que "%{index} %{detailindex} %{index1} %{key}", etc., à l'exclusion de ipAddress, ip, etc.
field_.key security_result.detection_fields
id metadata.product_log_id Valeur copiée directement
login_label principal.user.email_addresses Fusionné si correspond à l'expression régulière d'adresse e-mail
msg.ipAddress principal.ip Fusionné si non vide
msg.first_event.ip_address principal.ip Fusionné si non vide
msg.second_event.ip_address principal.ip Fusionné si non vide
msg_travels_first_event_ip_address principal.ip Fusionné s'il n'est pas vide
msg_travels_second_event_ip_address principal.ip
recommendedAction value_array.string_value Valeur copiée directement
security_result event.idm.read_only_udm.security_result Fusionné dans security_result
source source_label.value Valeur copiée directement
source source_label.key Définissez cette option sur "source".
source_label event.idm.read_only_udm.src.labels Fusionné dans src.labels
heure @timestamp Analysé à l'aide du filtre de date avec ISO8601, RFC 3339, yyyy-MM-ddTHH:mm:ss.SSSSSSZ
usersFailing_label principal.user.email_addresses Fusionné si correspond à l'expression régulière d'adresse e-mail
version metadata.product_version Valeur copiée directement
has_principal event.idm.read_only_udm.metadata.event_type Définissez sur "STATUS_UPDATE" si has_principal est défini sur "true", sinon sur "USER_UNCATEGORIZED" si has_user est défini sur "true", sinon sur "GENERIC_EVENT".
has_user event.idm.read_only_udm.metadata.event_type
metadata.product_name metadata.product_name Défini sur "OORT"
metadata.vendor_name metadata.vendor_name Définie sur "OORT"
detail.published event.idm.read_only_udm.metadata.collected_timestamp Mappé à partir du journal des modifications
detail.login event.idm.read_only_udm.principal.user.userid Mappé à partir du journal des modifications
detail.userTrustLevel event.idm.read_only_udm.principal.user.attribute.labels Mappé à partir du journal des modifications
detail.login event.idm.read_only_udm.principal.user.user_display_name Mappé à partir du journal des modifications
detail.checkTopics event.idm.read_only_udm.security_result.category_details Mappé à partir du journal des modifications
region event.idm.read_only_udm.additional.fields Mappé à partir du journal des modifications
detail.checkId event.idm.read_only_udm.security_result.detection_fields Mappé à partir du journal des modifications
detail.checkScope event.idm.read_only_udm.security_result.detection_fields Mappé à partir du journal des modifications
detail.frameworks event.idm.read_only_udm.security_result.detection_fields Mappé à partir du journal des modifications
detail.explainabilityEventIds event.idm.read_only_udm.security_result.detection_fields Mappé à partir du journal des modifications
data.value event.idm.read_only_udm.security_result.detection_fields Mappé à partir du journal des modifications

Journal des modifications

Afficher le journal des modifications de cet analyseur

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