En esta página, se describe cómo generar y analizar el informe de dependencias de red en Migration Center.
Descripción general
El informe de dependencias de red proporciona datos agregados diarios sobre las conexiones a tus servidores y bases de datos. El informe de dependencias de red te permite ver todas las conexiones a los activos de tu infraestructura y la cantidad de conexiones por día.
Para recopilar los datos de dependencias de red, permite que el cliente de descubrimiento se ejecute durante varios días y habilita la sincronización de los 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 de tu inventario de Migration Center que hayas descubierto con el cliente de descubrimiento o que hayas importado de forma manual, o incluso un recurso desconocido.
El informe de dependencias de red es útil en las siguientes situaciones:
- Recopilar datos sobre las conexiones a servidores y bases de datos para identificar los 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 Migration Center. Luego, puedes realizar tu análisis con BigQuery y las consultas de muestra que proporciona Migration Center, o bien usar cualquier otra herramienta de terceros.
Limitaciones
- Para recopilar datos de conexión en tu infraestructura, usa el cliente de descubrimiento.
- Los datos de las conexiones de red solo se recopilan 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 tener la recopilación de rendimiento funcionando con el cliente de descubrimiento.
Antes de analizar el informe de dependencias de red con BigQuery, haz lo siguiente:
- Obtén información para importar datos locales a BigQuery.
- Obtén más información para ejecutar consultas.
Genera el informe de dependencias de red
Para generar un informe de dependencias de red, sigue estos pasos:
En la consola de Google Cloud, ve a la página Crear informes.
Haz clic en Exportaciones de dependencias de red.
En la lista de grupos, selecciona los grupos para los que deseas generar el informe y, luego, haz clic en Exportar.
En el diálogo que aparece, selecciona la cantidad de días para los que deseas exportar los datos, desde un mínimo de 10 hasta un máximo de 90, y, luego, haz clic en Exportar.
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 ejecutar una consulta, debes subir tu archivo CSV a BigQuery.
Para usar BigQuery, se te factura según los precios de BigQuery.
Identifica los recursos con más conexiones
La siguiente consulta es útil para identificar los recursos que tienen la mayor 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
: El Google Cloud proyecto 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 |
Identifica las conexiones según la profundidad del gráfico
La siguiente consulta es útil para identificar todos los recursos que se conectan a uno determinado 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
: Es el nombre del recurso para el que deseas identificar las conexiones.DEPTH
: Es 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, … |
Filtra las conexiones por rangos de IP y puertos
La siguiente consulta te permite identificar los 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
: Es el puerto final del rango de puertos, por ejemplo,1024
.IP_START
: Es la dirección IP inicial del rango, por ejemplo,"10.26.0.0"
.IP_END
: Es la dirección IP final del rango, por ejemplo,"10.26.255.255"
.
El siguiente es un resultado de ejemplo 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
: Es la dirección IP final del rango, por ejemplo,"10.26.255.255"
.