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
Avant de créer un rapport sur les dépendances réseau, vous devez disposer avec le client de découverte.
Avant d'analyser le rapport sur les dépendances réseau avec BigQuery, effectuer les opérations suivantes:
- Découvrez comment importer des données locales dans BigQuery.
- Découvrez comment exécuter des requêtes.
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 :
Accédez à la page Catalogue de rapports.
Cliquez sur Rapport sur les dépendances du réseau.
Dans la liste des groupes, sélectionnez ceux pour lesquels vous souhaitez générer le rapport, puis cliquez sur Exporter.
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 :
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"
.