Usa registros de flujo de VPC

Los registros de flujo de VPC registran una muestra de flujos de red que enviaron y recibieron las instancias de VM, incluidas las instancias que se usaron como nodos de GKE. Estos registros se pueden usar para supervisar redes, detectar intrusiones, realizar análisis de seguridad en tiempo real y optimizar gastos.

En esta página, se da por sentado que estás familiarizado con los conceptos descritos en la descripción general de los registros de flujo de VPC.

Habilita los registros de flujo de VPC

Cuando habilitas los registros de flujo de VPC, se habilitan en todas las VM de una subred. Sin embargo, puedes reducir la cantidad de información que se escribe en el registro. Consulta Agregación y muestreo de registros para obtener detalles sobre los parámetros que puedes controlar.

Habilita los registros de flujo de VPC cuando creas una subred

Console

  1. Ve a la página Redes de VPC en Google Cloud Console.
    Ir a la página Redes de VPC
  2. Haz clic en la red en la que quieres agregar una subred.
  3. Haz clic en Agregar subred.
  4. En Registros de flujo, selecciona Activado.
  5. Si deseas ajustar el muestreo y la agregación de registros, haz clic en Configurar registros y ajusta cualquiera de las siguientes opciones:
    • Intervalo de agregación
    • Si deseas o no Incluir metadatos en las entradas de registro finales
      De forma predeterminada, Incluir metadatos solo incluye determinados campos. Consulta Personaliza los campos de metadatos para obtener más información. Para personalizar los campos de metadatos, debes usar la interfaz de línea de comandos de gcloud o la API.
    • La tasa de muestreo. 100% significa que se conservan todas las entradas.
  6. Propaga los demás campos según corresponda.
  7. Haz clic en Agregar.

gcloud

gcloud compute networks subnets create subnet-name \
    --enable-flow-logs \
    [--logging-aggregation-interval=aggregation-interval \
    [--logging-flow-sampling=0.0...1.0] \
    [--logging-filter-expr=expression] \
    [--logging-metadata=(include-all | exclude-all | custom)] \
    [--logging-metadata-fields=fields] \
    [other flags as needed]

En el ejemplo anterior, se ilustra lo siguiente:

  • --logging-aggregation-interval=aggregation-interval establece el intervalo de agregación para los registros de flujo en esa subred. El intervalo se puede establecer en cualquiera de las siguientes opciones: 5 s (predeterminado), 30 s, 1 min, 5 min, 10 min o 15 min.
  • --logging-flow-sampling es la tasa de muestreo de flujo. El muestreo de flujo se puede establecer desde 0.0 (sin muestreo) hasta 1.0 (todos los registros). El valor predeterminado es 0.5.
  • --logging-filter-expr=expression limita la recopilación de registros solo a los registros que coinciden con la expresión. Para obtener más detalles, consulta Filtrado de registros.
  • --logging-metadata=(include-all | exclude-all | custom) activa y desactiva las anotaciones de metadatos del registro o las establece como custom. Si se establece como custom, especifica también --logging-metadata-fields. El valor predeterminado es include-all. Nota: No todos los campos se incluyen en include-all. Consulta Personaliza los campos de metadatos para obtener más información.
  • --logging-metadata-fields es la lista separada por comas de los campos de metadatos que deseas incluir en los registros. Ejemplo: --logging-metadata-fields=src_instance,dst_instance. Solo se puede establecer si --logging-metadata=custom.

API

Habilita los registros de flujo de VPC cuando crees una nueva subred.

POST https://www.googleapis.com/compute/v1/projects/project-id/regions/region/subnetworks
{
  "logConfig": {
    "aggregationInterval": "aggregation-interval",
    "flowSampling": sampling-rate,
    "filterExpr": expression,
    "metadata": metadata-setting,
    "metadataFields": metadata-fields,
    "enable": true
  },
  "ipCidrRange": "ip-range",
  "network": "network-url",
  "name": "subnet-name"
}

Reemplaza los marcadores de posición por valores válidos:

  • project-id es el ID del proyecto en el que se creará la subred.
  • region es la región donde se creará la subred.
  • aggregation-interval establece el intervalo de agregación para los registros de flujo en la subred. El intervalo se puede establecer en cualquiera de las siguientes opciones: INTERVAL_5_SEC, INTERVAL_30_SEC, INTERVAL_1_MIN, INTERVAL_5_MIN, INTERVAL_10_MIN o INTERVAL_15_MIN.
  • sampling-rate es la tasa de muestreo de flujo. El muestreo de flujo se puede establecer desde 0.0 (sin muestreo) hasta 1.0 (todos los registros). El valor predeterminado es .0.5.
  • expression es la expresión de filtro que usas para filtrar qué registros se escriben. Para obtener más detalles, consulta Filtrado de registros.
  • metadata-setting especifica si se registran todos los metadatos (INCLUDE_ALL_METADATA), no se registran metadatos (EXCLUDE_ALL_METADATA) o solo se registran metadatos específicos (CUSTOM_METADATA). Si este campo se establece en CUSTOM_METADATA, también debes propagar el campo metadataFields. No todos los campos se incluyen en INCLUDE_ALL_METADATA. Consulta Personaliza los campos de metadatos para obtener más información.
  • metadata-fields son los campos de metadatos que deseas capturar cuando configuras metadata: CUSTOM_METADATA. Esta es una lista de campos de metadatos separados por comas, como src_instance, src_vpc.project_id.
  • ip-range es el rango de direcciones IP internas principal de la subred.
  • network-url es la URL de la red de VPC en la que se creará la subred.
  • subnet-name es un nombre para la subred.

Para obtener más información, consulta el método subnetworks.insert.

Habilita los registros de flujo de VPC en una subred existente

Console

  1. Ve a la página Redes de VPC en Google Cloud Console.
    Ir a la página Redes de VPC
  2. Haz clic en la subred que quieres actualizar.
  3. Haz clic en Editar.
  4. En Registros de flujo, selecciona Activado.
  5. Si deseas ajustar el muestreo y la agregación de registros, haz clic en Configurar registros y ajusta cualquiera de las siguientes opciones:
    • Intervalo de agregación
    • Si deseas o no Incluir metadatos en las entradas de registro finales
      De forma predeterminada, Incluir metadatos solo incluye determinados campos. Consulta Personaliza los campos de metadatos para obtener más información. Para personalizar los campos de metadatos, debes usar la interfaz de línea de comandos de gcloud o la API.
    • La tasa de muestreo. 100% significa que se conservan todas las entradas.
  6. Haz clic en Guardar.

gcloud

gcloud compute networks subnets update subnet-name \
    --enable-flow-logs \
    [--logging-aggregation-interval=aggregation-interval] \
    [--logging-flow-sampling=0.0...1.0] \
    [--logging-filter-expr=expression] \
    [--logging-metadata=(include-all | exclude-all | custom)] \
    [--logging-metadata-fields=fields]

En el ejemplo anterior, se ilustra lo siguiente:

  • --logging-aggregation-interval=aggregation-interval establece el intervalo de agregación para los registros de flujo en esa subred. El intervalo se puede establecer en cualquiera de las siguientes opciones: 5 s (predeterminado), 30 s, 1 min, 5 min, 10 min o 15 min.
  • --logging-flow-sampling es la tasa de muestreo de flujo. El muestreo de flujo se puede establecer desde 0.0 (sin muestreo) hasta 1.0 (todos los registros). El valor predeterminado es .0.5.
  • --logging-filter-expr=expression limita la recopilación de registros solo a los registros que coinciden con la expresión. Para obtener más detalles, consulta Filtrado de registros.
  • --logging-metadata=(include-all | exclude-all | custom) activa y desactiva las anotaciones de metadatos del registro o las establece como custom. Si se establece como custom, especifica también --logging-metadata-fields. La opción predeterminada es la de activación. Nota: include-all no incluye anotaciones de GKE. Para ver las anotaciones de GKE, selecciona custom y especifica esas anotaciones.
  • --logging-metadata-fields es la lista separada por comas de los campos de metadatos que deseas incluir en los registros. Ejemplo: --logging-metadata-fields=src_instance,dst_instance. Solo se puede establecer si --logging-metadata=custom.

API

Habilita los registros de flujo VPC para una subred existente.

PATCH https://www.googleapis.com/compute/v1/projects/project-id/regions/region/subnetworks/subnet-name
{
  "logConfig": {
    "enable": true
    ...other logging fields.
  },
  "fingerprint": "SUBNETWORK_FINGERPRINT"
}

Reemplaza los marcadores de posición por valores válidos:

Para obtener más información, consulta el método subnetworks.patch.

Consulta el volumen de registro estimado para las subredes existentes

Google Cloud Console proporciona una estimación del volumen de registro para las subredes existentes, que luego puedes usar a fin de estimar el costo de habilitar los registros de flujo. La estimación se basa en los flujos capturados en intervalos de 5 segundos para la subred en los últimos 7 días. Además, el tamaño de cada registro depende de si habilitas las anotaciones de metadatos.

  1. Ve a la página Redes de VPC en Google Cloud Console.
    Ir a la página Redes de VPC
  2. Haz clic en la subred cuyos costos deseas calcular.
  3. Haz clic en Editar.
  4. En Registros de flujo, selecciona Activado.
  5. Haz clic en Configurar registros.
  6. Consulta Registros estimados generados por día para ver la estimación.
  7. Haz clic en Cancelar para que no se guarde ninguno de tus cambios.

Visualiza qué subredes tienen habilitados los registros de flujo de VPC

Puedes verificar qué subredes en una red tienen habilitados los registros de flujo de VPC.

Console

  1. Ve a la página Redes de VPC en Google Cloud Console.
    Ir a la página Redes de VPC
  2. Consulta la columna Registros de flujo para ver si el registro está activado o desactivado.

gcloud

gcloud compute networks subnets list \
    --project project-id \
    --filter="network=network-url" \
    --format="csv(name,logConfig.enable)"

En el ejemplo anterior, se ilustra lo siguiente:

  • project-id es el ID del proyecto que consultas.
  • network-url es el FQDN de la red que contiene las subredes.

Actualiza los parámetros de registro de flujo de VPC

Puedes modificar los parámetros de muestreo de registros. Consulta Muestreo y agregación de registros para obtener más información sobre los parámetros que puedes controlar.

Console

  1. Ve a la página Redes de VPC en Google Cloud Console.
    Ir a la página Redes de VPC
  2. Haz clic en la subred que quieres actualizar.
  3. Haz clic en Editar.
  4. Haz clic en Configurar registros para ajustar el muestreo y la agregación de registros:
    • Intervalo de agregación
    • Si deseas o no Incluir metadatos en las entradas de registro finales
      De forma predeterminada, Incluir metadatos solo incluye determinados campos. Consulta Personaliza los campos de metadatos para obtener más información. Para personalizar los campos de metadatos, debes usar la interfaz de línea de comandos de gcloud o la API.
    • La tasa de muestreo. 100% significa que se conservan todas las entradas.
  5. Haz clic en Guardar.

gcloud

gcloud compute networks subnets update subnet-name \
    [--logging-aggregation-interval=aggregation-interval] \
    [--logging-flow-sampling=0.0...1.0] \
    [--logging-filter-expr=expression] \
    [--logging-metadata=(include-all | exclude-all | custom)] \
    [--logging-metadata-fields=fields]

En el ejemplo anterior, se ilustra lo siguiente:

  • --logging-aggregation-interval=aggregation-interval establece el intervalo de agregación para los registros de flujo en esa subred. El intervalo se puede establecer en cualquiera de las siguientes opciones: 5 s (predeterminado), 30 s, 1 min, 5 min, 10 min o 15 min.
  • --logging-flow-sampling es la tasa de muestreo de flujo. El muestreo de flujo se puede establecer desde 0.0 (sin muestreo) hasta 1.0 (todos los registros). El valor predeterminado es .0.5.
  • --logging-filter-expr=expression limita la recopilación de registros solo a los registros que coinciden con la expresión. Para obtener más detalles, consulta Filtrado de registros.
  • --logging-metadata=(include-all | exclude-all | custom) activa y desactiva las anotaciones de metadatos del registro o las establece como custom. Si se establece como custom, especifica también --logging-metadata-fields. La opción predeterminada es la de activación. Nota: include-all no incluye anotaciones de GKE. Para ver las anotaciones de GKE, selecciona custom y especifica esas anotaciones.
  • --logging-metadata-fields es la lista separada por comas de los campos de metadatos que deseas incluir en los registros. Ejemplo: --logging-metadata-fields=src_instance,dst_instance. Solo se puede establecer si --logging-metadata=custom.

API

Modifica los campos de muestreo de registros para actualizar los comportamientos de los registros de flujo de VPC.

PATCH https://www.googleapis.com/compute/v1/projects/project-id/regions/region/subnetworks/subnet-name
{
  "logConfig": {
    ...fields to modify
  },
  "fingerprint": "SUBNETWORK_FINGERPRINT"
}

Reemplaza los marcadores de posición por valores válidos:

  • project-id es el ID del proyecto en el que se encuentra la subred.
  • region es la región en la que se encuentra la subred.
  • subnet-name es el nombre de la subred existente.
  • SUBNET_FINGERPRINT es el ID de huella digital de la subred existente, que se proporciona cuando describes una subred.
  • Para ver los campos que puedes modificar, consulta Habilita el registro de flujo de VPC cuando creas una subred.

Para obtener más información, consulta el método subnetworks.patch.

Inhabilita los registros de flujo de VPC en una subred

Console

  1. Ve a la página Redes de VPC en Google Cloud Console.
    Ir a la página Redes de VPC
  2. Haz clic en la subred que quieres actualizar.
  3. Haz clic en Editar.
  4. En Registros de flujo, selecciona Desactivado.
  5. Haz clic en Guardar.

gcloud

gcloud compute networks subnets update subnet-name \
    --no-enable-flow-logs

API

Inhabilita los registros de flujo de VPC en una subred para dejar de recopilar registros.

PATCH https://www.googleapis.com/compute/v1/projects/project-id/regions/region/subnetworks/subnet-name
{
  "logConfig": {
    "enable": false
  },
  "fingerprint": "SUBNETWORK_FINGERPRINT"
}

Reemplaza los marcadores de posición por valores válidos:

  • project-id es el ID del proyecto en el que se encuentra la subred.
  • region es la región en la que se encuentra la subred.
  • subnet-name es el nombre de la subred existente.
  • SUBNET_FINGERPRINT es el ID de huella digital de la subred existente, que se proporciona cuando describes una subred.

Para obtener más información, consulta el método subnetworks.patch.

Accede a los registros a través de Logging

Configura IAM

Sigue la guía de control de acceso para Logging.

Visualiza los registros desde la página del visor de registros.

Necesitarás el ID de tu proyecto para estos comandos.

Accede a todos los registros de flujo

  1. Ve a la página Registros en Google Cloud Console.
    Ir a la página Registros
  2. Selecciona Subred en el primer menú desplegable.
  3. Selecciona compute.googleapis.com/vpc_flows en el segundo menú desplegable.
  4. Haz clic en Aceptar.

O, como alternativa:

  1. Ve a la página Registros en Google Cloud Console.
    Ir a la página Registros
  2. En el lado derecho del campo Filtrar por etiqueta o búsqueda de texto, haz clic en la flecha hacia abajo y selecciona Convertir en filtro avanzado.
  3. Pega lo siguiente en el campo. Reemplaza project-id por el ID del proyecto.
    resource.type="gce_subnetwork"
    logName="projects/project-id/logs/compute.googleapis.com%2Fvpc_flows"
    
  4. Haz clic en Enviar filtro.

Accede a los registros de una subred específica

  1. Ve a la página Registros en Google Cloud Console.
    Ir a la página Registros
  2. En el primer menú desplegable, desplaza el cursor hacia Subred y, luego, muévelo hacia la derecha para abrir el menú de selección de subredes individual.
  3. En el segundo menú desplegable, selecciona compute.googleapis.com/vpc_flows.
  4. Haz clic en Aceptar.

O, como alternativa:

  1. Ve a la página Registros en Google Cloud Console.
    Ir a la página Registros
  2. En el lado derecho del campo Filtrar por etiqueta o búsqueda de texto, haz clic en la flecha hacia abajo y selecciona Convertir en filtro avanzado.
  3. Pega lo siguiente en el campo. Reemplaza project-id por el ID de tu proyecto y subnet-name por tu subred.
    resource.type="gce_subnetwork"
    logName="projects/project-id/logs/compute.googleapis.com%2Fvpc_flows"
    resource.labels.subnetwork_name="subnet-name"
    
  4. Haz clic en Enviar filtro.

Accede a los registros de una VM específica

  1. Ve a la página Registros en Google Cloud Console.
    Ir a la página Registros
  2. En el lado derecho del campo Filtrar por etiqueta o búsqueda de texto, haz clic en la flecha hacia abajo y selecciona Convertir en filtro avanzado.
  3. Pega lo siguiente en el campo. Reemplaza project-id por el ID de tu proyecto y VM_NAME por tu VM.
    resource.type="gce_subnetwork"
    logName="projects/project-id/logs/compute.googleapis.com%2Fvpc_flows"
    jsonPayload.src_instance.vm_name="VM_NAME"
    
  4. Haz clic en Enviar filtro.

Accede a los registros de tráfico a un rango de subred específico

  1. Ve a la página Registros en Google Cloud Console.
    Ir a la página Registros
  2. En el lado derecho del campo Filtrar por etiqueta o búsqueda de texto, haz clic en la flecha hacia abajo y selecciona Convertir en filtro avanzado.
  3. Pega lo siguiente en el campo. Reemplaza project-id por el ID del proyecto y subnet-range por un rango de CIDR (192.168.1.0/24).
    resource.type="gce_subnetwork"
    logName="projects/project-id/logs/compute.googleapis.com%2Fvpc_flows"
    ip_in_net(jsonPayload.connection.dest_ip, subnet-range)
    
  4. Haz clic en Enviar filtro.

Accede a los registros de un clúster de GKE específico

  1. Ve a la página Registros en Google Cloud Console.
    Ir a la página Registros
  2. En el lado derecho del campo Filtrar por etiqueta o búsqueda de texto, haz clic en la flecha hacia abajo y selecciona Convertir en filtro avanzado.
  3. Pega lo siguiente en el campo. Reemplaza project-id por el ID de tu proyecto y subnet-name por tu subred.
    resource.type="gce_subnetwork"
    logName="projects/{#project_id}/logs/vpc_flows"
    jsonPayload.src_gke_details.cluster.cluster_name="{#cluster_name}" OR jsonPayload.dest_gke_details.cluster.cluster_name="{#cluster_name}"
    
  4. Haz clic en Enviar filtro.

Accede a los registros de puertos y protocolos específicos

En el caso de un puerto de destino individual, haz lo siguiente:

  1. Ve a la página Registros en Google Cloud Console.
    Ir a la página Registros
  2. En el lado derecho del campo Filtrar por etiqueta o búsqueda de texto, haz clic en la flecha hacia abajo y selecciona Convertir en filtro avanzado.
  3. Pega lo siguiente en el campo. Reemplaza project-id por el ID del proyecto, PORT por el puerto de destino y PROTOCOL por el protocolo.
    resource.type="gce_subnetwork"
    logName="projects/project-id/logs/compute.googleapis.com%2Fvpc_flows"
    jsonPayload.connection.dest_port=PORT
    jsonPayload.connection.protocol=PROTOCOL
    
  4. Haz clic en Enviar filtro.

En el caso de más de un puerto de destino, haz lo siguiente:

  1. Ve a la página Registros en Google Cloud Console.
    Ir a la página Registros
  2. En el lado derecho del campo Filtrar por etiqueta o búsqueda de texto, haz clic en la flecha hacia abajo y selecciona Convertir en filtro avanzado.
  3. Pega lo siguiente en el campo. Reemplaza project-id por el ID del proyecto, PORT1 y PORT2 por los puertos de destino, y PROTOCOL por el protocolo.
    resource.type="gce_subnetwork"
    logName="projects/project-id/logs/compute.googleapis.com%2Fvpc_flows"
    jsonPayload.connection.dest_port=(PORT1 OR PORT2)
    jsonPayload.connection.protocol=PROTOCOL
    
  4. Haz clic en Enviar filtro.

Exporta registros a BigQuery, Pub/Sub y orientaciones personalizadas

Puedes exportar los registros de flujo de Logging a un destino de tu elección, como se describe en la documentación de Logging. Consulta la sección anterior para ver ejemplos de filtros.

Soluciona problemas

Ningún vpc_flows aparece en Logging en el recurso gce_subnetwork

  • Confirma que el registro esté habilitado para la subred determinada.
  • Los flujos de VPC solo se admiten en redes de VPC. Si tienes una red heredada, no verás ningún registro.
  • En redes de VPC compartida, los registros solo aparecen en el proyecto host y no en el proyecto de servicio. Asegúrate de buscar los registros en el proyecto host.
  • Los filtros de exclusión de registros bloquean los registros especificados. Asegúrate de que ninguna regla de exclusión descarte los registros de flujo de VPC.
    1. Ve a Uso del recurso.
    2. Haz clic en la pestaña Exclusiones.
    3. Asegúrate de que no haya ninguna regla de exclusión que pueda descartar los registros de flujo de VPC.

Los valores de RTT o de bytes no aparecen en algunos registros

  • Es posible que falten mediciones de RTT si no se realizó una muestra de una cantidad suficiente de paquetes que capture el RTT. Esto es más frecuente en conexiones con poco volumen.
  • No hay valores RTT disponibles para flujos UDP.
  • Algunos paquetes se envían sin carga útil. Si solo se realizaron muestras sobre paquetes de solo encabezado, el valor en bytes será 0.

Faltan algunos flujos

  • Solo se admiten protocolos de UDP y TCP. Los registros de flujo de VPC no admiten ningún otro protocolo.
  • Los registros se muestrean. Algunos paquetes en flujos de volumen muy bajo pueden pasarse por alto.

Faltan anotaciones de GKE en algunos registros

Consulta las anotaciones de GKE para comprender los detalles de las anotaciones de GKE.

  • Asegúrate de que Google Kubernetes Engine Monitoring esté habilitado en el clúster. En algunos casos, es posible que falten algunas de las anotaciones si GKE Monitoring no está habilitado. Para verificar si GKE Monitoring está habilitado en el clúster, sigue estas instrucciones.
  • Si GKE Monitoring está habilitado en el clúster y aún ves anotaciones de GKE faltantes, puedes verificar si el agente que envía actualizaciones de metadatos a Monitoring está enviando actualizaciones de forma correcta en el panel de la API de Monitoring para tu proyecto en Cloud Console. En algunos casos, puede haber errores debido a que se superó la cuota de la API. Ve al panel de cuotas de la API y comprueba si hay errores de cuota excedida. Si hay errores de cuota excedida, sigue las instrucciones en Administra tu cuota para solicitar un aumento de cuota.

Faltan registros para algunos flujos de GKE

Asegúrate de que la Visibilidad dentro de los nodos esté habilitada en el clúster. De lo contrario, los flujos entre los Pods del mismo nodo no se registran.

Los registros de flujo parecen estar inhabilitados aunque los hayas habilitado

  • Cuando configuras una subred de solo proxy para balanceadores de cargas internos de HTTP(S) y usas el comando gcloud compute networks subnets a fin de habilitar los registros de flujo de VPC, parece que el comando se ejecuta con éxito, pero los registros de flujo en realidad no están habilitados. La marca --enable-flow-logs no se aplica cuando también incluyes la marca --purpose=INTERNAL_HTTPS_LOAD_BALANCER.

    Si usas Cloud Console o la API a fin de habilitar los registros de flujo, verás el mensaje de error: “Valor no válido para el campo ‘resource.enableFlowLogs’: ‘true’. Campo no válido configurado en la subred con el propósito INTERNAL_HTTPS_LOAD_BALANCEER”.

    Debido a que las subredes de solo proxy no tienen VM, no admiten los registros de flujo de VPC. Este es el comportamiento esperado.

Precios

Se aplicará el precio estándar para Logging, BigQuery o Pub/Sub. El precio de los registros de flujo de VPC se describe en Precios de telemetría de red.

Próximos pasos