Collecter des données ServiceNow CMDB

Compatible avec :

Ce document explique comment collecter des données ServiceNow CMDB en configurant un flux Google Security Operations à l'aide de l'API tierce.

Avant de commencer

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

  • Une instance Google SecOps
  • Accès privilégié à l'instance ServiceNow avec accès à la console d'administration
  • Compte utilisateur ServiceNow avec le rôle cmdb_read (exigence minimale pour l'accès en lecture)
  • API REST activée dans votre instance ServiceNow (activée par défaut)

Configurer la liste d'autorisation d'adresses IP

Avant de créer le flux, vous devez ajouter les plages d'adresses IP Google SecOps à la liste d'autorisation dans les paramètres de pare-feu ou de réseau ServiceNow.

Obtenir les plages d'adresses IP Google SecOps

Ajouter des plages d'adresses IP à ServiceNow

  1. Connectez-vous à votre instance ServiceNow en tant qu'administrateur.
  2. Accédez à Tous> Sécurité système> Contrôle des accès par adresse IP.
  3. Cliquez sur New (Nouveau).
  4. Fournissez les informations de configuration suivantes :
    • Type : sélectionnez Autoriser.
    • Adresse IP : saisissez une plage d'adresses IP Google SecOps au format CIDR (par exemple, 192.0.2.0/24).
    • Nom : saisissez un nom descriptif (par exemple, GGoogle SecOps IP Range 1).
    • Active : cochez la case pour activer la règle.
  5. Cliquez sur Envoyer.
  6. Répétez les étapes 3 à 5 pour chaque plage d'adresses IP Google SecOps supplémentaire.

Configurer l'accès à l'API ServiceNow

Pour permettre à Google SecOps d'extraire les données CMDB, vous devez créer un utilisateur ServiceNow disposant des autorisations appropriées.

  1. Connectez-vous à la console d'administration ServiceNow.
  2. Accédez à Tous > Administration des utilisateurs > Utilisateurs.
  3. Cliquez sur New (Nouveau).
  4. Fournissez les informations de configuration suivantes :
    • ID utilisateur : saisissez un nom d'utilisateur descriptif (par exemple, google_secops_integration).
    • Prénom : saisissez Google.
    • Nom : saisissez SecOps Integration.
    • Adresse e-mail : saisissez une adresse e-mail valide pour les notifications.
    • Mot de passe : cliquez sur Définir un mot de passe et créez un mot de passe sécurisé.
    • Actif : cochez la case.
    • Web service access only (Accès au service Web uniquement) : cochez la case (recommandé pour un accès à l'API uniquement).
  5. Cliquez sur Envoyer.

Attribuer les autorisations requises

  1. Une fois l'utilisateur créé, ouvrez sa fiche.
  2. Accédez à la section Rôles.
  3. Cliquez sur Modifier.
  4. Dans la liste Collection, recherchez et ajoutez le rôle suivant :
    • cmdb_read : fournit un accès en lecture aux tables CMDB.
  5. Cliquez sur Enregistrer.

Enregistrer les identifiants de l'API

Après avoir créé l'utilisateur, enregistrez les identifiants suivants :

  • Nom d'utilisateur : ID utilisateur que vous avez créé (par exemple, google_secops_integration)
  • Mot de passe : mot de passe que vous avez défini pour l'utilisateur
  • Nom d'hôte de l'API : nom de domaine complet de votre instance ServiceNow (par exemple, myinstance.servicenow.com)
    • N'incluez pas https:// ni aucun chemin d'accès.
    • N'incluez pas de barre oblique finale.
  • Nom de la table : table CMDB à interroger (par exemple, cmdb_ci, cmdb_ci_server, cmdb_ci_computer)

Comprendre les tables CMDB ServiceNow

La CMDB ServiceNow est organisée dans une structure hiérarchique de tables. Voici les tables les plus courantes pour l'ingestion de données d'éléments :

Nom de la table Description Cas d'utilisation
cmdb_ci Table des éléments de configuration de base (parent de toutes les tables CI) Tous les éléments de configuration
cmdb_ci_server Éléments de configuration du serveur Serveurs physiques et virtuels
cmdb_ci_computer Éléments de configuration de l'ordinateur Stations de travail, ordinateurs portables, ordinateurs de bureau
cmdb_ci_linux_server Éléments de configuration du serveur Linux Serveurs Linux en particulier
cmdb_ci_win_server Éléments de configuration Windows Server Serveurs Windows
cmdb_ci_vm_instance Instances de machines virtuelles Machines virtuelles
cmdb_ci_network_adapter Adaptateurs réseau Cartes d'interface réseau
cmdb_ci_ip_address Adresses IP Enregistrements d'adresses IP
cmdb_ci_service Services aux entreprises Éléments du catalogue de services
cmdb_ci_appl Applications Éléments de configuration de l'application

Vérifier l'accès à l'API REST

Avant de créer le flux, vérifiez que vos identifiants d'API ServiceNow fonctionnent correctement.

Tester à l'aide de l'explorateur d'API REST (facultatif)

  1. Connectez-vous à votre instance ServiceNow en tant qu'utilisateur de l'intégration.
  2. Accédez à Tous les services Web système> REST> Explorateur d'API REST>.
  3. Sélectionnez Table API dans le menu déroulant de l'espace de noms.
  4. Sélectionnez Récupérer des enregistrements à partir d'une table (GET).
  5. Dans Paramètres du chemin d'accès, saisissez le nom de la table (par exemple, cmdb_ci).
  6. Cliquez sur Envoyer.
  7. Vérifiez que l'état de la réponse est 200 OK et que des enregistrements sont renvoyés.

Tester avec curl (facultatif)

  • Vous pouvez également tester l'API à l'aide de curl :

    curl "https://your-instance.service-now.com/api/now/table/cmdb_ci?sysparm_limit=10" \
    --request GET \
    --header "Accept: application/json" \
    --user 'your-username':'your-password'
    
    • Remplacez :
      • your-instance.service-now.com : nom d'hôte de votre instance ServiceNow
      • your-username : nom d'utilisateur de votre utilisateur d'intégration
      • your-password : mot de passe de votre utilisateur d'intégration

Une réponse réussie renvoie des données JSON avec des éléments de configuration.

Configurer des flux

Pour configurer un flux, procédez comme suit :

  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, ServiceNow CMDB - All CIs ou ServiceNow CMDB - Servers).
  5. Sélectionnez API tierce comme type de source.
  6. Sélectionnez ServiceNow CMDB comme Type de journal.
  7. Cliquez sur Suivant.
  8. Spécifiez les valeurs des paramètres d'entrée suivants :

    • Nom d'utilisateur : saisissez l'ID utilisateur ServiceNow (par exemple, google_secops_integration).
    • Code secret : saisissez le mot de passe de l'utilisateur ServiceNow. Important : Il s'agit d'un champ sensible. Le mot de passe est chiffré et ne peut pas être consulté après l'enregistrement.
    • Nom d'hôte de l'API : saisissez le nom de domaine complet de votre instance ServiceNow.
      • Exemple : myinstance.servicenow.com
      • À ne pas inclure :
        • Protocole (https://)
        • Chemins (/api/now/table/)
        • Barre oblique de fin
    • Instances régionales : si votre instance ServiceNow se trouve dans une région spécifique, utilisez le format de nom d'hôte approprié :
      • Standard : instance.service-now.com
      • Union européenne : instance.service-now.eu
      • Autres régions : contactez votre administrateur ServiceNow
    • Nom de la table : saisissez la table ServiceNow CMDB à interroger.
      • Exemples :
        • cmdb_ci (tous les éléments de configuration)
        • cmdb_ci_server (tous les serveurs)
        • cmdb_ci_computer (stations de travail et ordinateurs)
        • cmdb_ci_linux_server (serveurs Linux uniquement)
        • cmdb_ci_win_server (serveurs Windows uniquement) Remarque : Le nom de la table est sensible à la casse et doit correspondre exactement. Vous ne pouvez interroger qu'une seule table par flux. Pour ingérer plusieurs tables, créez des flux distincts pour chacune d'elles.
    • 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.

Une fois la configuration terminée, le flux commence à récupérer les enregistrements CMDB de l'instance ServiceNow. La synchronisation initiale peut prendre plusieurs minutes en fonction du nombre d'enregistrements dans le tableau.

Ingérer plusieurs tables CMDB

Pour ingérer des données provenant de plusieurs tables CMDB, créez des flux distincts pour chaque table :

  1. Créez le premier flux en suivant les étapes ci-dessus (par exemple, pour cmdb_ci_server).
  2. Cliquez sur Ajouter un flux pour créer d'autres flux.
  3. Utilisez les mêmes identifiants ServiceNow, mais spécifiez des noms de tables différents.

Exemple de configuration :

Nom du flux Nom de la table Objectif
CMDB ServiceNow : serveurs cmdb_ci_server Toutes les CI de serveur
CMDB ServiceNow : ordinateurs cmdb_ci_computer CI de station de travail
CMDB ServiceNow : adaptateurs réseau cmdb_ci_network_adapter CI d'interface réseau
CMDB ServiceNow : applications cmdb_ci_appl CI d'application

Autorisations d'API requises

L'utilisateur de l'intégration doit disposer des autorisations ServiceNow suivantes :

Autorisation/Rôle Niveau d'accès Objectif
cmdb_read Lire Récupérer les données des éléments de configuration de la CMDB

Rôles supplémentaires (facultatif) :

  • itil : obligatoire si vous avez besoin d'un accès en écriture pour créer ou mettre à jour des CI (non obligatoire pour l'ingestion Google SecOps)
  • rest_api_explorer : utile pour tester l'accès à l'API lors de la configuration

Table de mappage UDM

Champ ServiceNow Mappage UDM Logique
name entity.asset.hostname Nom d'hôte principal du composant
ip_address entity.asset.ip Adresse IP principale de l'élément
mac_address entity.asset.mac Adresse MAC du composant
serial_number entity.asset.hardware.serial_number Numéro de série du matériel
asset_tag entity.asset.asset_id Identifiant ou étiquette de l'appareil
sys_class_name entity.asset.asset_type Classe de CI (serveur, ordinateur, etc.)
os entity.asset.platform_software.platform Système d'exploitation
sys_created_on entity.asset.first_seen_time Code temporel de création de l'élément
sys_updated_on entity.asset.last_seen_time Code temporel de la dernière mise à jour
location entity.asset.location.name Emplacement physique
company entity.asset.attribute.labels.value Entreprise/organisation propriétaire

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