Analyser les dépendances réseau

Cette page explique comment générer et analyser le rapport sur 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 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 des 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 à partir des éléments analysés. Les éléments cibles dans 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 importé manuellement, ou même un élément inconnu.

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

  • collecte des données sur les connexions aux serveurs et bases de données pour identifier les éléments
  • Identifier les connexions réseau présentant un intérêt au sein d'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 depuis Migration Center. Vous pouvez ensuite effectuer votre analyse à l'aide de BigQuery et des exemples de requêtes fournis par Migration Center, ou à l'aide de tout 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 ne prend pas en charge la collecte de données réseau.

Avant de commencer

  • Avant de créer un rapport sur les dépendances réseau, vous devez faire fonctionner la collecte des performances avec le client de découverte.

  • Avant d'analyser le rapport sur les dépendances réseau avec BigQuery, procédez comme suit:

Générer le rapport sur les dépendances du 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 de 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 lesquels vous souhaitez exporter les données (entre 10 et 90), puis cliquez sur Export (Exporter).

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

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

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

L'utilisation de BigQuery vous est facturée selon les 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 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 avez 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 est utile pour identifier tous les éléments qui se connectent à une ressource donnée avec un nombre spécifique de connexions intermédiaires. Exemple :

  • Avec une profondeur de graphique égale à 1, tous les éléments sont directement connectés à l'élément principal.
  • Avec une profondeur de graphique égale à 2, tous les éléments sont directement connectés à d'autres éléments, qui sont eux-mêmes 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'élément pour lequel vous souhaitez 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 adresse IP et par plages de ports

La requête suivante vous permet d'identifier les éléments qui utilisent des adresses IP et des ports dans les 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, par exemple 0.
  • PORT_END: port final de la plage de ports, par 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-0lf60désactivé 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 associée à aucun élément de votre inventaire Migration Center. Cela vous permet d'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, par exemple "10.26.255.255".