Analizza le dipendenze di rete

Questa pagina descrive come generare e analizzare il report sulle dipendenze di rete nel Centro di migrazione.

Panoramica

Il report Dipendenze di rete fornisce dati aggregati giornalieri sulle connessioni ai server e ai database. Il report sulle dipendenze di rete ti consente di visualizzare tutte le connessioni alle risorse nella tua infrastruttura e il numero di connessioni al giorno.

Per raccogliere i dati sulle dipendenze di rete, lascia in esecuzione il client di rilevamento per diversi giorni e abilita la sincronizzazione dei dati con il Migration Center. Il client di rilevamento identifica quindi tutte le connessioni di rete dalle risorse sottoposte a scansione. Gli asset di destinazione nella connessione possono essere qualsiasi asset nell'inventario di Migration Center che hai rilevato con il client predittivo o che hai importato manualmente o anche un asset sconosciuto.

Il report sulle dipendenze di rete è utile nei seguenti scenari:

  • Raccolta di dati sulle connessioni a server e database per identificare gli asset che appartengono alla stessa applicazione
  • Identificazione delle connessioni di rete di interesse all'interno di un gruppo di asset, ad esempio tutti i server che utilizzano la porta standard MySQL
  • Identificare gli asset mancanti nell'inventario

Puoi scaricare il report sulle dipendenze di rete come file CSV dal Centro di migrazione. Puoi quindi eseguire l'analisi utilizzando BigQuery e le query di esempio fornite da Migration Center, o utilizzare qualsiasi altro strumento di terze parti.

Limitazioni

  • Per raccogliere i dati di connessione nella tua infrastruttura, utilizza il client di rilevamento.
  • I dati sulle connessioni di rete vengono raccolti solo con il metodo di scansione del sistema operativo. La scansione di vSphere non supporta la raccolta dei dati di rete.

Prima di iniziare

  • Prima di creare un report sulle dipendenze di rete, devi disporre della raccolta dei dati sul rendimento che funzioni con il client discovery.

  • Prima di analizzare il report sulle dipendenze di rete con BigQuery, esegui le seguenti operazioni:

Generare il report sulle dipendenze di rete

Per generare un report sulle dipendenze di rete:

  1. Nella console Google Cloud, vai alla pagina Crea report.

    Vai a Crea report

  2. Fai clic su Esportazioni dipendenze di rete.

  3. Nell'elenco dei gruppi, seleziona i gruppi per i quali vuoi generare il report, poi fai clic su Esporta.

  4. Nella finestra di dialogo visualizzata, seleziona il numero di giorni per i quali vuoi esportare i dati, da un minimo di 10 a un massimo di 90, quindi fai clic su Esporta.

  5. Una volta generato il file, fai clic su Scarica.

Analizzare il report sulle dipendenze di rete in BigQuery

Le sezioni seguenti forniscono alcune query di esempio per analizzare scenari comuni in BigQuery. Prima di poter eseguire una query, devi caricare il file CSV in BigQuery.

Per utilizzare BigQuery, ti vengono addebitati i costi in base ai prezzi di BigQuery.

Identifica gli asset con il maggior numero di connessioni

La seguente query è utile per identificare gli asset con il maggior numero di connessioni nel gruppo.

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

Sostituisci quanto segue:

  • PROJECT: il Google Cloud progetto in cui hai caricato il file CSV.
  • DATASET: il set di dati BigQuery.
  • TABLE: la tabella BigQuery.

Di seguito è riportato un output di esempio di questa query:

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

Identificare le connessioni in base alla profondità del grafico

La seguente query è utile per identificare tutti gli asset collegati a un determinato asset con un numero specifico di connessioni intermedie. Ad esempio:

  • Con una profondità del grafico pari a 1, troverai tutte le risorse collegate direttamente alla risorsa principale.
  • Con una profondità del grafo pari a 2, troverai tutte le risorse collegate direttamente ad altre risorse, che a loro volta sono collegate direttamente alla risorsa principale.
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

Sostituisci quanto segue:

  • MAIN_ASSET: il nome della risorsa per cui vuoi identificare le connessioni.
  • DEPTH: la profondità del grafico.

Di seguito è riportato un output di esempio di questa query:

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

Filtra le connessioni per intervalli di IP e porte

La seguente query consente di identificare gli asset che utilizzano indirizzi IP e porte gli intervalli che definisci.

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))

Sostituisci quanto segue:

  • PORT_START: la porta iniziale dell'intervallo di porte, ad esempio 0.
  • PORT_END: la porta finale dell'intervallo di porte, ad esempio 1024.
  • IP_START: l'indirizzo IP iniziale dell'intervallo, ad esempio "10.26.0.0".
  • IP_END: l'indirizzo IP finale dell'intervallo, ad esempio "10.26.255.255".

Di seguito è riportato un output di esempio di questa query:

Giorno LocalVMName LocalAssetID LocalGroups LocalIP LocalPort Protocollo LocalProcessName RemoteVMName RemoteAssetID RemoteGroups RemoteIP RemotePort ConnectionCount
2024-04-18 VM-0lf60off projects/982941055174/locations/us-central1/assets/0lf60off Gruppo 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 Gruppo 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 Gruppo 1 10.58.166.132 21 tcp bash VM-2gq0fl37 projects/982941055174/locations/us-central1/assets/2gq0fl37 147.19.84.135 21 514

Identificare gli asset non sottoposti a scansione nella rete

La seguente query consente di identificare gli asset non sottoposti a scansione nella tua rete. Un asset non analizzato è una connessione a un indirizzo IP remoto non associato a nessun asset nell'inventario di Migration Center. In questo modo puoi identificare gli asset potenzialmente mancanti che devi esaminare per la valutazione.

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

Sostituisci quanto segue:

  • IP_START: l'indirizzo IP iniziale dell'intervallo, ad esempio "10.26.0.0".
  • IP_END: l'indirizzo IP finale dell'intervallo, ad esempio "10.26.255.255".