Recopila registros de flujo de VPC de Cloud
En este documento, se explica cómo exportar los registros de flujo de VPC de Cloud a Google Security Operations con Google Cloud. El analizador transforma los registros de su formato JSON integrado en la UDM de Operaciones de seguridad de Google. Extrae campos relevantes, como la IP de origen y destino, el puerto, el protocolo y los bytes enviados, y luego los asigna a los campos de la UDM correspondientes, teniendo en cuenta la dirección de la red y los casos especiales para una representación precisa en Google SecOps.
Antes de comenzar
- Asegúrate de tener una instancia de Google SecOps.
- Asegúrate de que el flujo de VPC esté configurado y activo en tu Google Cloud entorno.
- Asegúrate de tener acceso con privilegios a Google Cloud.
Crea un bucket de Google Cloud Storage.
- Accede a la consola de Google Cloud.
Ve a la página Buckets de Cloud Storage.
Haz clic en Crear.
En la página Crear un bucket, ingresa la información de tu bucket. Después de cada uno de los siguientes pasos, haz clic en Continuar para avanzar al siguiente:
En la sección Primeros pasos, haz lo siguiente:
- Ingresa un nombre único que cumpla con los requisitos de nombre de bucket, por ejemplo, vpcflow-logs.
Para habilitar el espacio de nombres jerárquico, haz clic en la flecha de expansión para expandir la sección Optimizar las cargas de trabajo orientadas a archivos y con uso intensivo de datos y, luego, selecciona Habilitar el espacio de nombres jerárquico en este bucket.
Para agregar una etiqueta de bucket, haz clic en la flecha de expansión para expandir la sección Etiquetas.
Haz clic en Agregar etiqueta y especifica una clave y un valor para tu etiqueta.
En la sección Eligir dónde almacenar tus datos, haz lo siguiente:
- Selecciona un tipo de ubicación
Usa el menú de tipo de ubicación para seleccionar una Ubicación en la que se almacenarán de forma permanente los datos de objetos de tu bucket.
Para configurar la replicación entre buckets, expande la sección Configurar la replicación entre buckets.
En la sección Elige una clase de almacenamiento para tus datos, selecciona una clase de almacenamiento predeterminada para el bucket o selecciona Autoclass para la administración automática de clases de almacenamiento de los datos de tu bucket.
En la sección Elige cómo controlar el acceso a los objetos, selecciona no para aplicar la prevención del acceso público y elige un modelo de control de acceso para los objetos de tu bucket.
En la sección Elige cómo proteger los datos de objetos, haz lo siguiente:
- Selecciona cualquiera de las opciones de Protección de datos que quieras configurar para tu bucket.
- Para elegir cómo se encriptarán los datos de tus objetos, haz clic en la flecha desplegable etiquetada como Encriptación de datos y selecciona un método de encriptación de datos.
Haz clic en Crear.
Configura la exportación de registros en Google Cloud Flujo de VPC
- Accede a la cuenta de Google Cloud con tu cuenta con privilegios.
- En la página Bienvenido, haz clic en Redes de VPC.
- Haz clic en Predeterminada y debería aparecer una página de subred.
- Selecciona todos los registros.
- Haz clic en Registros de flujo > Configurar.
- Selecciona Intervalo de agregación (Aggregation Interval); por ejemplo, 30 SEC.
- Proporciona la Tasa de muestreo; por ejemplo, 50%.
- Haga clic en Guardar.
- Busca Registro en la barra de búsqueda y presiona Intro.
- En el Explorador de registros, filtra los registros eligiendo VPC_flows en Nombre del registro y haz clic en Aplicar.
- Haz clic en Más acciones.
- Haz clic en Crear receptor.
- Proporciona la siguiente configuración:
- Detalles del receptor: Ingresa un nombre y una descripción.
- Haz clic en Siguiente.
- Destino del receptor: Selecciona Bucket de Cloud Storage.
- Bucket de Cloud Storage: Selecciona el bucket que creaste antes o crea uno nuevo.
- Haz clic en Siguiente.
- Elige los registros que deseas incluir en el receptor: Se propaga un registro predeterminado cuando seleccionas una opción en el bucket de Cloud Storage.
- Haz clic en Siguiente.
- Opcional: Elige registros para filtrar fuera del receptor: Selecciona los registros que no deseas enviar al receptor.
- Haz clic en Crear receptor.
Configura un feed en Google SecOps para transferir Google Cloud registros de flujo de VPC
- Ve a Configuración de SIEM > Feeds.
- Haz clic en Agregar nueva.
- En el campo Nombre del feed, ingresa un nombre para el feed, por ejemplo, Google Cloud Registros de flujo de VPC.
- Selecciona Google Cloud Storage como el Tipo de fuente.
- Selecciona Flujo de VPC de GCP como el Tipo de registro.
- Haz clic en Obtener cuenta de servicio como la cuenta de servicio de Chronicle.
- Haz clic en Siguiente.
Especifica valores para los siguientes parámetros de entrada:
- URI del bucket de almacenamiento: Google Cloud URL del bucket de almacenamiento en formato
gs://my-bucket/<value>
. - URI Is A: Selecciona Directorio que incluye subdirectorios.
Opciones de eliminación de fuentes: Selecciona la opción de eliminación según tus preferencias.
Espacio de nombres de recursos: Es el espacio de nombres de recursos.
Etiquetas de transferencia: Es la etiqueta que se aplica a los eventos de este feed.
- URI del bucket de almacenamiento: Google Cloud URL del bucket de almacenamiento en formato
Haz clic en Siguiente.
Revisa la configuración de tu nuevo feed en la pantalla Finalizar y, luego, haz clic en Enviar.
Tabla de asignación de UDM
Campo de registro | Asignación de UDM | Lógica |
---|---|---|
connection.dest_ip | target.asset.ip target.ip |
Asignación directa cuando network.direction es OUTBOUND. Se asigna desde principal.ip cuando network.direction es INBOUND. |
connection.dest_port | target.port | Se convierte en número entero si es mayor que -1. |
connection.protocol | network.ip_protocol | Se convierte en una cadena y, luego, se asigna a un número entero. Según el valor entero, se asigna al nombre del protocolo IP (p.ej., TCP, UDP, ICMP). |
connection.src_ip | principal.ip | Asignación directa |
connection.src_port | principal.port | Se convirtió en número entero. |
dest_instance.region | target.location.name | Asignación directa |
dest_instance.vm_name | target.asset.hostname | Asignación directa |
dest_location.city | target.location.city | Asignación directa |
dest_location.country | target.location.country_or_region | Asignación directa |
dest_location.region | target.location.state | Asignación directa |
dest_vpc.project_id | target.namespace | Se usa con dest_vpc.vpc_name para formar el target.namespace. |
dest_vpc.vpc_name | target.namespace | Se usa con dest_vpc.project_id para formar target.namespace. |
insertId | metadata.product_log_id | Asignación directa |
jsonPayload.bytes_sent | network.sent_bytes | Se cambió el nombre a network.sent_bytes y se convirtió a uinteger. |
jsonPayload.packets_sent | network.sent_packets | Se convirtió en número entero. |
labels.tunnel_id | additional.fields | Se combinaron en additional.fields con la clave Tunnel Id y el tipo string_value . |
logName | security_result.category_details | Asignación directa |
resource.labels.project_id | target.resource.name | Se usa para crear target.resource.name con el formato //cloudresourcemanager.googleapis.com/projects/{resource.labels.project_id} . |
resource.labels.region | target.location.country_or_region | Asignación directa |
resource.labels.subnetwork_id | target.user.attribute.labels | Se fusionó en target.user.attribute.labels con la clave subnetwork_id . |
resource.type | metadata.product_event_type | Asignación directa |
gravedad, | security_result.severity | Se asigna a LOW si el valor es DEBUG . |
src_gke_details.cluster.cluster_location | principal.resource.attribute.labels | Se fusionó en principal.resource.attribute.labels con la clave cluster_location . |
src_gke_details.cluster.cluster_name | principal.resource.attribute.labels | Se fusionó en principal.resource.attribute.labels con la clave cluster_name . |
src_gke_details.pod.pod_name | principal.resource.attribute.labels | Se fusionó en principal.resource.attribute.labels con la clave pod_name . |
src_gke_details.pod.pod_namespace | principal.resource.attribute.labels | Se fusionó en principal.resource.attribute.labels con la clave pod_namespace . |
src_instance.region | principal.location.name | Asignación directa |
src_instance.vm_name | principal.asset.hostname | Asignación directa |
src_location.city | principal.location.city | Asignación directa |
src_location.country | principal.location.country_or_region | Asignación directa |
src_location.region | principal.location.state | Asignación directa |
src_vpc.project_id | principal.namespace | Se usa con src_vpc.vpc_name para formar el principal.namespace. |
src_vpc.vpc_name | principal.namespace | Se usa con src_vpc.project_id para formar el principal.namespace. |
textPayload | additional.fields | Se fusionaron en additional.fields con la clave Textpayload y el tipo string_value . |
timestamp | metadata.event_timestamp | Se usa para completar event_timestamp si jsonPayload.end_time está vacío. |
metadata.description | En función del campo "reporter", se genera una descripción del flujo de red, incluido el generador de informes (SRC o DEST) y la dirección (INBOUND o OUTBOUND). | |
metadata.event_type | Establece NETWORK_CONNECTION para los registros de flujo de VPC y USER_RESOURCE_ACCESS para otros tipos de registros. |
|
metadata.log_type | Se define en GCP_VPC_FLOW . |
|
metadata.product_name | Se define en GCP VPC Flow Logs . |
|
metadata.product_version | Se define en 1.0 . |
|
metadata.vendor_name | Se define en Google Cloud . |
|
network.direction | Se determina según target.port. Si el puerto es conocido o reservado, se considera INBOUND; de lo contrario, se considera OUTBOUND. | |
security_result.severity | Se configura de forma predeterminada en LOW . |
|
target.resource.attribute.cloud.environment | Se define en GOOGLE_CLOUD_PLATFORM . |
|
target.resource.resource_type | Se define en CLOUD_PROJECT . |
Cambios
2024-10-24
Mejora:
- Se intercambió la asignación de
principal.ip
yprincipal.port
portarget.ip
ytarget.port
, respectivamente.
2024-03-15
Mejora:
- Se asignaron
jsonPayload.src_gke_details.pod.pod_namespace
,jsonPayload.src_gke_details.pod.pod_name
,jsonPayload.src_gke_details.cluster.cluster_name
yjsonPayload.src_gke_details.cluster.cluster_location
aprincipal.resource.attribute.labels
. - Se asignaron
jsonPayload.dest_gke_details.pod.pod_namespace
,jsonPayload.dest_gke_details.pod.pod_name
,jsonPayload.dest_gke_details.cluster.cluster_name
yjsonPayload.dest_gke_details.cluster.cluster_location
atarget.resource.attribute.labels
.
2023-05-23
Mejora:
- Se asignó "metadata.event_type" a "USER_RESOURCE_ACCESS" cuando el campo "logName" no contiene "vpc_flows".
- Se asignó "timestamp" a "events.timestamp".
- Se asignaron "textPayload" y "labels.tunnel_id" a "additional.fields".
- Se asignó "resource.labels.region" a "target.location.country_or_region".
- Se agregaron verificaciones nulas para varios campos donde sea necesario.
2023-04-10
Mejora:
- Establece
target.resource.attribute.cloud.environment
enGOOGLE_CLOUD_PLATFORM
. - Establece
target.resource.name
en el valor del nombre completo del recurso.
2022-07-22
Mejora:
- Se asignó
resource.labels.location
aprincipal.location.name
. - Se asignó
resource.labels.subnetwork_id
atarget.user.attribute.labels
. - Se asignó
logName
asecurity_result.category_details
.
¿Necesitas más ayuda? Obtén respuestas de miembros de la comunidad y profesionales de Google SecOps.