Collecter les journaux Cisco Identity Intelligence
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
- Accédez à Paramètres SIEM> Flux.
- Cliquez sur Ajouter un flux d'actualités.
- Sur la page suivante, cliquez sur Configurer un seul flux.
- Dans le champ Nom du flux, saisissez un nom pour le flux (par exemple,
Cisco Identity Intelligence Events). - Sélectionnez Webhook comme type de source.
- Sélectionnez Cisco Identity Intelligence comme Type de journal.
- Cliquez sur Suivant.
- Spécifiez les valeurs des paramètres d'entrée suivants :
- Délimiteur de division (facultatif) : saisissez
\npour 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
- Délimiteur de division (facultatif) : saisissez
- Cliquez sur Suivant.
- 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 :
- Sur la page d'informations du flux, cliquez sur Générer une clé secrète.
- Une boîte de dialogue affiche la clé secrète.
- Copiez et enregistrez la clé secrète de manière sécurisée.
Obtenir l'URL du point de terminaison du flux
- Accédez à l'onglet Détails du flux.
- Dans la section Informations sur le point de terminaison, copiez l'URL du point de terminaison du flux.
Le format d'URL est le suivant :
https://{region}-chronicle.googleapis.com/v1/{parent}/logs:importOù
{region}correspond à la région de votre instance Google SecOps (par exemple,us,europeouasia-southeast1) et{parent}correspond au chemin d'accès à la ressource au formatprojects/<PROJECT_ID>/locations/<LOCATION>/instances/<INSTANCE_ID>/logTypes/<LOG_TYPE>.Enregistrez cette URL pour les étapes suivantes.
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
- Accédez à la page Identifiants de la console Google Cloud.
- Sélectionnez votre projet (celui associé à votre instance Chronicle).
- Cliquez sur Créer des identifiants> Clé API.
- Une clé API est créée et s'affiche dans une boîte de dialogue.
- Cliquez sur Modifier la clé API pour restreindre la clé.
Restreindre la clé API
- Sur la page des paramètres de la clé API :
- Nom : saisissez un nom descriptif (par exemple,
Chronicle Webhook API Key).
- Nom : saisissez un nom descriptif (par exemple,
- Sous Restrictions relatives aux API :
- Sélectionnez Restreindre la clé.
- Dans le menu déroulant Sélectionner des API, recherchez et sélectionnez API Google SecOps (ou API Chronicle).
- Cliquez sur Enregistrer.
- Copiez la valeur de la clé API dans le champ Clé API en haut de la page.
- 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
- Connectez-vous à Cisco Identity Intelligence.
- Accédez à Intégrations.
- Cliquez sur Ajouter une intégration.
- Faites défiler la page jusqu'à la section Webhook.
- Cliquez sur Add Webhook Target (Ajouter une cible de webhook).
- 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.
- Nom : saisissez un nom descriptif (par exemple,
- Développez la section Paramètres HTTP d'appel.
- Ajoutez les paramètres suivants avec le type En-tête :
- Clé :
Content-Type, Valeur :application/json - Clé :
Accept, Valeur :application/json
- Clé :
- 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.
Cliquez sur Enregistrer.
Tester la connexion du webhook
- Sur la page Intégrations, recherchez la cible de notification de webhook que vous avez créée.
- Cliquez sur le menu à trois points à droite de la ligne.
- Sélectionnez Tester la connectivité.
- 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.
- Accédez à la page d'informations de la vérification souhaitée dans Cisco Identity Intelligence.
- Développez le menu déroulant en haut à droite de la page.
- Cochez la case correspondant à la cible de notification de webhook que vous avez créée.
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.
Méthode 1 : En-têtes personnalisés (recommandé)
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.