Analiza las dependencias de la red

En esta página, se describe cómo generar y analizar el informe de dependencias de red en el Centro de migración.

Descripción general

El informe de dependencias de red brinda datos agregados diarios sobre la conexiones a servidores y bases de datos. El informe de dependencias de red permite ver todas las conexiones a los recursos en tu infraestructura y la cantidad de conexiones por día.

Para recopilar los datos de las dependencias de red, debes dejar que la cliente de descubrimiento se ejecutará por varios días y habilitará la sincronización de datos con Migration Center. Luego, el cliente de descubrimiento identifica todas las conexiones de red de los recursos analizados. Los recursos de destino de la conexión pueden ser cualquier recurso en el inventario del Centro de migraciones que descubriste con el de descubrimiento o que importaste manualmente recurso desconocido.

El informe de dependencias de red es útil en las siguientes situaciones:

  • Recopilar datos sobre conexiones a servidores y bases de datos. para identificar recursos que pertenecen a la misma aplicación
  • Identificar las conexiones de red de interés dentro de un grupo de recursos, como todos los servidores que usan el puerto estándar de MySQL
  • Cómo identificar los recursos que faltan en tu inventario

Puedes descargar el informe de dependencias de red como un archivo CSV desde de Google Cloud. Luego, puedes realizar tu análisis con BigQuery y las consultas de muestra que proporciona Migration Center, o usar cualquier otra herramienta de terceros.

Limitaciones

  • Para recopilar datos de conexión en tu infraestructura, usa el de descubrimiento.
  • Los datos de conexiones de red se recopilan solo con el método de análisis del SO. El análisis de vSphere no admite la recopilación de datos de red.

Antes de comenzar

  • Antes de crear un informe de dependencias de red, debes conocer con el cliente de descubrimiento.

  • Antes de analizar el informe de dependencias de red con BigQuery, haz lo siguiente:

Cómo generar el informe de dependencias de red

Para generar un informe de dependencias de red, sigue estos pasos:

  1. Ve a la página Catálogo de informes.

    Ir al catálogo de informes

  2. Haz clic en Informe de dependencias de red.

  3. En la lista de grupos, selecciona los grupos para los que deseas generar el informe y, luego, haz clic en Exportar.

  4. En el cuadro de diálogo que aparece, selecciona la cantidad de días que quieres. para exportar los datos, desde un mínimo de 10 hasta 90, y luego haz clic Exportar.

  5. Después de que se genere el archivo, haz clic en Descargar.

Cómo analizar el informe de dependencias de red en BigQuery

En las siguientes secciones, se proporcionan algunas consultas de muestra para analizar situaciones comunes en BigQuery. Antes de poder ejecutar una consulta, debes subir tu archivo CSV a BigQuery.

Para usar BigQuery, se te factura según los precios de BigQuery.

Identificar los recursos con más conexiones

La siguiente consulta es útil para identificar los activos que tienen la mayor la cantidad de conexiones en el grupo.

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

Reemplaza lo siguiente:

  • PROJECT: Es el proyecto de Google Cloud en el que subiste el archivo CSV.
  • DATASET: Es el conjunto de datos de BigQuery.
  • TABLE: Es la tabla de BigQuery.

El siguiente es un resultado de ejemplo de esta consulta:

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

Identificar conexiones según la profundidad de un gráfico

La siguiente consulta es útil para identificar todos los recursos que se conectan con a una determinada con una cantidad específica de conexiones intermedias. Por ejemplo:

  • Con una profundidad de gráfico igual a 1, encontrarás todos los activos directamente conectados al activo principal.
  • Con una profundidad de grafo igual a 2, encontrarás todos los recursos directamente conectados a otros recursos, que a su vez están directamente conectados al recurso 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

Reemplaza lo siguiente:

  • MAIN_ASSET: El nombre del recurso para el que deseas para identificar las conexiones.
  • DEPTH: La profundidad del gráfico.

El siguiente es un resultado de ejemplo de esta consulta:

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

Filtrar conexiones por IP y rangos de puertos

La siguiente consulta te permite identificar recursos que usan direcciones IP y puertos en los rangos que definas.

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

Reemplaza lo siguiente:

  • PORT_START: Es el puerto inicial del rango de puertos. por ejemplo 0.
  • PORT_END: El puerto final del rango de puertos. por ejemplo 1024.
  • IP_START: la dirección IP inicial del rango. por ejemplo "10.26.0.0".
  • IP_END: La dirección IP final del rango. por ejemplo "10.26.255.255".

El siguiente es un resultado de muestra de esta consulta:

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

Identifica los recursos sin analizar en la red

La siguiente consulta te permite identificar los recursos que no se analizaron en tu red. Un recurso sin analizar es una conexión a una dirección IP remota que no está asociada a ningún recurso de tu inventario de Migration Center. Esto te permite identificar los recursos que podrían faltar y que debes analizar para tu evaluación.

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

Reemplaza lo siguiente:

  • IP_START: Es la dirección IP inicial del rango, por ejemplo, "10.26.0.0".
  • IP_END: La dirección IP final del rango. Por ejemplo, "10.26.255.255".