Analyser les dépendances réseau

Cette page explique comment générer et analyser les dépendances réseau dans Migration Center.

Présentation

Le rapport sur les dépendances réseau fournit des données globales quotidiennes sur les des connexions à vos serveurs et bases de données. Le rapport sur les dépendances réseau vous permet de voir toutes les connexions aux éléments de votre infrastructure, ainsi que le nombre de connexions par jour.

Pour collecter les données sur les dépendances réseau, laissez le client de découverte s'exécuter pendant plusieurs jours et activez la synchronisation des données avec Migration Center. Le client de découverte identifie ensuite toutes les connexions réseau les éléments analysés. Les éléments cibles de la connexion peuvent être n'importe quel élément de votre inventaire Migration Center que vous avez découvert avec le client de découverte ou que vous avez importé manuellement, ou même un élément inconnu.

Le rapport sur les dépendances réseau est utile dans les scénarios suivants :

  • Collecter des données sur les connexions aux serveurs et aux bases de données pour identifier les composants appartenant à la même application
  • Identifier les connexions réseau d'intérêt dans un groupe d'éléments, tels que tous les serveurs utilisant le port standard MySQL
  • Identifier les éléments manquants dans votre inventaire

Vous pouvez télécharger le rapport sur les dépendances réseau au format CSV à partir de Migration Center. Vous pouvez ensuite effectuer votre analyse à l'aide de BigQuery et des exemples de requêtes fournis par Migration Center, ou utiliser un autre outil tiers.

Limites

  • Pour collecter des données de connexion dans votre infrastructure, utilisez le client de découverte.
  • Les données des connexions réseau ne sont collectées qu'avec la méthode d'analyse de l'OS. L'analyse vSphere n'est pas compatible avec la collecte de données réseau.

Avant de commencer

Générer le rapport sur les dépendances réseau

Pour générer un rapport sur les dépendances réseau, procédez comme suit :

  1. Accédez à la page Catalogue de rapports.

    Accéder au catalogue des rapports

  2. Cliquez sur Rapport sur les dépendances du réseau.

  3. Dans la liste des groupes, sélectionnez ceux pour lesquels vous souhaitez générer le rapport, puis cliquez sur Exporter.

  4. Dans la boîte de dialogue qui s'affiche, sélectionnez le nombre de jours pour exporter les données, de 10 à 90, puis cliquez sur Exporter :

  5. Une fois votre fichier généré, cliquez sur Télécharger.

Analyser le rapport sur les dépendances réseau dans BigQuery

Les sections suivantes vous fournissent des exemples de requêtes pour analyser des scénarios courants dans BigQuery. Avant de pouvoir exécuter une requête, vous devez importer votre fichier CSV dans BigQuery.

Pour utiliser BigQuery, vous êtes facturé conformément aux tarifs de BigQuery.

Identifier les éléments avec le plus de connexions

La requête suivante permet d'identifier les éléments ayant le plus grand le nombre de connexions dans le groupe.

SELECT
 LocalVMName, SUM(ConnectionCount) as TotalCount
FROM
 PROJECT.DATASET.TABLE
GROUP BY ALL
ORDER BY TotalCount DESC

Remplacez les éléments suivants :

  • PROJECT: projet Google Cloud dans lequel vous importé le fichier CSV.
  • DATASET : ensemble de données BigQuery.
  • TABLE : table BigQuery.

Voici un exemple de résultat de cette requête:

LocalVMName TotalCount
VM-x5ua3o2w 9970
VM-glg5np3w 9763
VM-q3z4zfp8 9557
VM-2nnsrt37 9372
VM-1oah56hn 9350

Identifier des connexions selon la profondeur du graphique

La requête suivante permet d'identifier tous les éléments associés un réseau donné avec un nombre spécifique de connexions intermédiaires. Exemple :

  • Avec une profondeur de graphique égale à 1, vous trouverez tous les composants directement connectés à l'élément principal.
  • Avec une profondeur de graphique égale à 2, vous trouverez tous les composants directement connectés à d'autres composants, qui sont à leur tour directement connectés à l'élément principal.
DECLARE
 local_vm_name STRING DEFAULT MAIN_ASSET;
DECLARE
 depth INT64 DEFAULT DEPTH;
CREATE TEMP FUNCTION
 recursiveConnections(localVmName STRING,
   connectionsArray ARRAY<STRING>,
   depth INT64)
 RETURNS STRING
 LANGUAGE js AS r"""
 const connections = connectionsArray.map(connection => connection.split('|||'))
   .filter(connectionTuple => connectionTuple[1] !== 'Unscanned Device');
 const connectedAssets = new Set([localVmName]);
 for (let i = 0; i < depth; i++) {
   const currentSet = new Set(connectedAssets);
   for (const connection of connections) {
     /* Look for connections where the asset is the local asset */
     if (currentSet.has(connection[0])) {
       connectedAssets.add(connection[1]);
     }
     /* Look for connections where the asset is the remote asset */
     if (currentSet.has(connection[1])) {
       connectedAssets.add(connection[0]);
     }
   }
 }
 connectedAssets.delete(localVmName);
 return Array.from(connectedAssets).sort().join(', ');
""";
SELECT
 local_vm_name AS LocalVMName,
 recursiveConnections(local_vm_name,
   ARRAY_AGG(CONCAT(LocalVMName, '|||', RemoteVMName)),
   depth) AS Connections
FROM
 PROJECT.DATASET.TABLE

Remplacez les éléments suivants :

  • MAIN_ASSET: nom de l'asset pour lequel vous souhaitez pour identifier les connexions.
  • DEPTH : profondeur du graphique.

Voici un exemple de résultat de cette requête:

LocalVMName Connexions
VM-lv8s148f VM-2z8wp3ey,
VM-66rq2x2y,
VM-94uwyy8h,
VM-ccgmqqmb,
VM-ctqddf0u
VM-og4n77lb,
...

Filtrer les connexions par plages d'adresses IP et de ports

La requête suivante vous permet d'identifier les éléments qui utilisent des adresses IP et des ports dans des plages que vous définissez.

CREATE TEMP FUNCTION
 ipBetween(value STRING,
   low STRING,
   high STRING) AS ( NET.IPV4_TO_INT64(NET.IP_FROM_STRING(value)) BETWEEN NET.IPV4_TO_INT64(NET.IP_FROM_STRING(low))
   AND NET.IPV4_TO_INT64(NET.IP_FROM_STRING(high)) );
SELECT
 *
FROM
 PROJECT.DATASET.TABLE
WHERE
 ((LocalPort BETWEEN PORT_START
     AND PORT_END)
   OR (RemotePort BETWEEN PORT_START
     AND PORT_END))
 AND (ipBetween(LocalIP,
     IP_START,
     IP_END)
   OR ipBetween(RemoteIP,
     IP_START,
     IP_END))

Remplacez les éléments suivants :

  • PORT_START: port initial de la plage de ports. Exemple : 0.
  • PORT_END: port final de la plage de ports. Exemple : 1024.
  • IP_START : adresse IP initiale de la plage, par exemple "10.26.0.0".
  • IP_END : adresse IP finale de la plage, par exemple "10.26.255.255".

Voici un exemple de résultat de cette requête :

Jour LocalVMName LocalAssetID LocalGroups LocalIP LocalPort Protocole LocalProcessName RemoteVMName RemoteAssetID RemoteGroups RemoteIP RemotePort ConnectionCount
2024-04-18 VM-0lf60off projects/982941055174/locations/us-central1/assets/0lf60off Groupe 1 10.0.45.138 272 tcp bash VM-0spdofr9 projects/982941055174/locations/us-central1/assets/0spdofr9 144.35.88.1 272 499
2024-04-18 VM-goa5uxhi projects/982941055174/locations/us-central1/assets/goa5uxhi Groupe 3 10.187.175.82 781 tcp bash VM-27i5d2uj projects/982941055174/locations/us-central1/assets/27i5d2uj 22.99.72.109 781 980
2024-04-19 VM-7vwy31hg projects/982941055174/locations/us-central1/assets/7vwy31hg Groupe 1 10.58.166.132 21 tcp bash VM-2gq0fl37 projects/982941055174/locations/us-central1/assets/2gq0fl37 147.19.84.135 21 514

Identifier les éléments non analysés sur le réseau

La requête suivante vous permet d'identifier les éléments non analysés sur votre réseau. Un élément non analysé est une connexion à une adresse IP distante qui n'est pas associé à n'importe quel élément de votre inventaire Migration Center. Vous pouvez ainsi identifier les éléments potentiellement manquants que vous devez analyser pour votre évaluation.

CREATE TEMP FUNCTION
 ipBetween(value STRING,
   low STRING,
   high STRING) AS ( NET.IPV4_TO_INT64(NET.IP_FROM_STRING(value)) BETWEEN NET.IPV4_TO_INT64(NET.IP_FROM_STRING(low))
   AND NET.IPV4_TO_INT64(NET.IP_FROM_STRING(high)) );
SELECT
 STRING_AGG(LocalIP, ', ') AS LocalIPs,
 RemoteIP
FROM
 PROJECT.DATASET.TABLE
WHERE
 RemoteVMName = 'Unscanned Device'
 AND ipBetween(LocalIP,
   IP_START,
   IP_END)
 AND ipBetween(RemoteIP,
   IP_START,
   IP_END)
GROUP BY
 RemoteIP

Remplacez les éléments suivants :

  • IP_START : adresse IP initiale de la plage, par exemple "10.26.0.0".
  • IP_END: adresse IP finale de la plage Exemple : "10.26.255.255".