Recopila registros de flujo de VPC de AWS

Compatible con:

En este documento, se explica cómo transferir registros de flujo de VPC de AWS a Google Security Operations con tres métodos diferentes: Amazon S3 (formato de texto), registros de Amazon CloudWatch con Kinesis Data Firehose y formato CSV en Amazon S3. Los registros de flujo de VPC de AWS son una función que te permite capturar información sobre el tráfico de IP que entra y sale de las interfaces de red en tu VPC. Esta integración te permite enviar estos registros a Google SecOps para su análisis y supervisión.

Formatos admitidos de los registros de flujo de VPC de AWS

Las Operaciones de seguridad de Google admiten la transferencia de registros de flujo de VPC de AWS en dos formatos de texto principales:

  • Formato JSON: El tipo de registro AWS_VPC_FLOW analiza los registros en formato JSON. En este formato, cada entrada de registro incluye una clave y su valor correspondiente, lo que hace que los datos sean autodescriptivos.
  • Formato CSV: Google SecOps también proporciona un analizador para los registros de flujo de VPC de AWS en formato CSV. En este formato, las claves de campo se enumeran solo una vez en la fila de encabezado, y las filas posteriores contienen solo valores separados por comas.

Dado que el formato CSV no incluye claves de campo en cada entrada de registro, el analizador AWS_VPC_FLOW_CSV se basa en un orden estricto y predefinido de valores. Para que se analicen correctamente, tus archivos CSV deben cumplir con el siguiente orden de campos:

   Version,Account_id,Interface_id,Srcaddr,Dstaddr,Srcport,Dstport,Protocol,Packets,Bytes,Start,End,Action,Log_status,Vpc_id,Subnet_id,Instance_id,Tcp_flags,Type,Pkt_srcaddr,Pkt_dstaddr,Region,Az_id,Sublocation_type,Sublocation_id,Pkt_src_aws_service,Pkt_dst_aws_service,Flow_direction,Traffic_path,Ecs_cluster_arn,Ecs_cluster_name,Ecs_container_instance_arn,Ecs_container_instance_id,Ecs_container_id,Ecs_second_container_id,Ecs_service_name,Ecs_task_definition_arn,Ecs_task_arn,Ecs_task_id

A continuación, se muestra un ejemplo de una línea de registro CSV:

   7,369096419186,eni-0520bb5efed19d33a,10.119.32.34,10.119.223.3,51256,16020,6,14,3881,1723542839,1723542871,ACCEPT,OK,vpc-0769a6844ce873a6a,subnet-0cf9b2cb32f49f258,i-088d6080f45f5744f,0,IPv4,10.119.32.34,10.119.223.3,ap-northeast-1,apne1-az4,-,-,-,-,ingress,,-,-,-,-,-,-,-,-,-,-

En el caso de los campos en los que no hay un valor disponible, se debe pasar un valor vacío (por ejemplo, , ,) para mantener el orden posicional correcto dentro de la fila del CSV.

Antes de comenzar

Asegúrate de cumplir con los siguientes requisitos previos:

  • Instancia de Google SecOps.
  • Acceso privilegiado a AWS

Opción 1: Configura la exportación de registros de flujo de VPC de AWS con AWS S3 (formato de texto)

En la siguiente sección, se describe cómo configurar los permisos de Amazon S3 y de Identity and Access Management para habilitar la exportación de registros de flujo de VPC para el análisis de Google SecOps.

Configura el bucket de AWS S3 y el IAM para Google SecOps

  1. Crea un bucket de Amazon S3 siguiendo esta guía del usuario: Cómo crear un bucket.
  2. Guarda el Nombre y la Región del bucket para futuras referencias (por ejemplo, aws-vpc-flowlogs).
  3. Crea un usuario siguiendo esta guía del usuario: Cómo crear un usuario de IAM.
  4. Selecciona el usuario creado.
  5. Selecciona la pestaña Credenciales de seguridad.
  6. Haz clic en Crear clave de acceso en la sección Claves de acceso.
  7. Selecciona Servicio de terceros como Caso de uso.
  8. Haz clic en Siguiente.
  9. Opcional: Agrega una etiqueta de descripción.
  10. Haz clic en Crear clave de acceso.
  11. Haz clic en Descargar archivo CSV para guardar la clave de acceso y la clave de acceso secreta para consultarlas en el futuro.
  12. Haz clic en Listo.
  13. Selecciona la pestaña Permisos.
  14. Haz clic en Agregar permisos en la sección Políticas de permisos.
  15. Selecciona Agregar permisos.
  16. Selecciona Adjuntar políticas directamente.
  17. Busca la política AmazonS3FullAccess.
  18. Selecciona la política.
  19. Haz clic en Siguiente.
  20. Haz clic en Agregar permisos.

Crea registros de flujo de VPC (destino: Amazon S3, formato de texto)

  1. Abre AWS Console > VPC > Tus VPC, subredes o interfaces de red y selecciona el alcance que deseas registrar.
  2. Haz clic en Acciones > Crear registro de flujo.
  3. Proporciona los siguientes detalles de configuración:
    • Filtro: Elige Todo (o Aceptar / Rechazar) según tu política.
    • Intervalo de agregación máximo: Selecciona 1 minuto (recomendado) o 10 minutos.
    • Destino: Enviar a un bucket de Amazon S3
    • ARN del bucket de S3: Ingresa el nombre del bucket que creaste en la sección anterior en el siguiente formato: arn:aws:s3:::<your-bucket>.
    • Formato de registro: Selecciona Formato predeterminado de AWS.
    • Formato de archivo de registro: Selecciona Texto (sin formato).
    • Opcional: Inhabilita los prefijos compatibles con Hive y las particiones por hora, a menos que los necesites.
  4. Haz clic en Crear registro de flujo.

Configura un feed en Google SecOps para transferir registros de flujo de VPC de AWS (texto de S3)

  1. Ve a SIEM Settings > Feeds.
  2. Haz clic en + Agregar feed nuevo.
  3. En el campo Nombre del feed, ingresa un nombre para el feed (por ejemplo, AWS VPC Flow Logs - S3 (Text)).
  4. Selecciona Amazon S3 V2 como el Tipo de fuente.
  5. Selecciona AWS VPC Flow como el Tipo de registro.
  6. Haz clic en Siguiente.
  7. Especifica valores para los siguientes parámetros de entrada:
    • URI de S3: Ingresa la dirección del bucket de S3 (por ejemplo, s3://<your-bucket>/AWSLogs/<account-id>/vpcflowlogs/<region>/).
    • Opciones de borrado de la fuente: Selecciona la opción de borrado según tu preferencia.
    • Antigüedad máxima del archivo: 180 días de forma predeterminada
    • ID de clave de acceso: Clave de acceso del usuario con acceso al bucket de S3.
    • Clave de acceso secreta: Clave secreta del usuario con acceso al bucket de S3.
    • Espacio de nombres del recurso: Es el espacio de nombres del recurso.
    • Etiquetas de transferencia: Es la etiqueta que se aplica a los eventos de este feed.
  8. Haz clic en Siguiente.
  9. Revisa la nueva configuración del feed en la pantalla Finalizar y, luego, haz clic en Enviar.

Opción 2: Configura la exportación de registros de flujo de VPC de AWS con Amazon CloudWatch Logs y Kinesis Data Firehose

Después de configurar los registros de flujo para que se dirijan a CloudWatch, esta opción proporciona una capa adicional de exportación de datos, ya que transmite esos datos de registro a un destino de tu elección con Kinesis Data Firehose.

Crea registros de flujo de VPC (destino: Amazon CloudWatch Logs)

  1. Abre la consola de AWS > VPC > Tus VPC, subredes o interfaces de red.
  2. Haz clic en Acciones > Crear registro de flujo.
  3. Proporciona los siguientes detalles de configuración:
    • Filtro: Elige Todo (o Aceptar/Rechazar) según tu política.
    • Intervalo de agregación máximo: Selecciona 1 minuto (recomendado) o 10 minutos.
    • Destino: Selecciona Enviar a CloudWatch Logs.
    • Grupo de registros de destino: Selecciona o crea un grupo de registros (por ejemplo, /aws/vpc/flowlogs).
    • Rol de IAM: Selecciona un rol que pueda escribir en CloudWatch Logs.
    • Formato de registro: Selecciona Predeterminado de AWS (versión 2) o Personalizado (incluye campos adicionales).
  4. Haz clic en Crear registro de flujo.

Crea un feed en Google SecOps para obtener la URL del extremo y la clave secreta

  1. Ve a SIEM Settings > Feeds.
  2. Haz clic en + Agregar feed nuevo.
  3. En el campo Nombre del feed, ingresa un nombre para el feed (por ejemplo, AWS VPC Flow Logs - CloudWatch via Firehose).
  4. Selecciona Amazon Data Firehose como el Tipo de fuente.
  5. Selecciona AWS VPC Flow como el Tipo de registro.
  6. Haz clic en Siguiente.
  7. Especifica valores para los siguientes parámetros de entrada:
    • Delimitador de división: n opcional.
    • Espacio de nombres del recurso: Es el espacio de nombres del recurso (por ejemplo, aws.vpc.flowlogs.cwl).
    • Etiquetas de transferencia: Es la etiqueta que se aplicará a los eventos de este feed (por ejemplo, source=vpc_flow_firehose).
  8. Haz clic en Siguiente.
  9. Revisa la configuración del feed y haz clic en Enviar.
  10. Haz clic en Generar clave secreta para generar una clave secreta que autentique este feed.
  11. Copia y guarda la clave secreta, ya que no podrás volver a verla.
  12. Ve a la pestaña Detalles.
  13. Copia la URL del extremo del feed desde el campo Endpoint Information.
  14. Haz clic en Listo.

Crea una clave de API para el feed de Amazon Data Firehose

  1. Ve a la página Credenciales de la consola de Google Cloud.
  2. Haz clic en Crear credenciales y, luego, selecciona Clave de API.
  3. Copia y guarda la clave en una ubicación segura.
  4. Restringe el acceso de la clave de API a la API de Google SecOps.

Configura los permisos de IAM para CloudWatch Logs en Firehose

  1. En la consola de AWS, ve a IAM > Políticas > Crear política > JSON.
  2. Pega el siguiente JSON de política y reemplaza <region> y <account-id> por tu región de AWS y tu ID de cuenta:

    {
    "Version": "2012-10-17",
    "Statement": [
       {
          "Effect": "Allow",
          "Action": [
          "firehose:PutRecord",
          "firehose:PutRecordBatch"
          ],
          "Resource": "arn:aws:firehose:<region>:<account-id>:deliverystream/cwlogs-to-secops"
       }
    ]
    }
    
  3. Asigna el nombre CWLtoFirehoseWrite a la política y haz clic en Crear política.

  4. Ve a IAM > Roles > Crear rol.

  5. Selecciona Política de confianza personalizada y pega lo siguiente:

    {
    "Version": "2012-10-17",
    "Statement": [
       {
          "Effect": "Allow",
          "Principal": {
          "Service": "logs.<region>.amazonaws.com"
          },
          "Action": "sts:AssumeRole"
       }
    ]
    }
    
  6. Adjunta la política CWLtoFirehoseWrite al rol.

  7. Asigna el nombre CWLtoFirehoseRole al rol y haz clic en Crear rol.

Configura Amazon Kinesis Data Firehose en Google SecOps

  1. En la consola de AWS, ve a Kinesis > Data Firehose > Create delivery stream.
  2. Proporciona los siguientes detalles de configuración:
    • Fuente: Selecciona Carga directa o fuentes externas.
    • Destino: Elige Extremo HTTP.
    • Nombre: cwlogs-to-secops
    • URL del extremo HTTP: Ingresa la URL del extremo HTTPS del feed de Google SecOps con la clave de API agregada: <ENDPOINT_URL>?key=<API_KEY>
    • Método HTTP: Selecciona POST.
  3. En Clave de acceso, haz lo siguiente:
    • Ingresa la clave secreta generada en el feed de Google SecOps (esta se convierte en el encabezado X-Amz-Firehose-Access-Key).
    • Sugerencias de almacenamiento en búfer: Establece Tamaño del búfer = 1 MiB y Intervalo del búfer = 60 segundos.
    • Compresión: Selecciona Inhabilitada.
    • Copia de seguridad en S3: Selecciona Inhabilitada.
    • Deja la configuración de reintentos y registros como predeterminada.
  4. Haz clic en Crear flujo de entrega.

Suscribe el grupo de registros de CloudWatch al flujo de Firehose

  1. Ve a CloudWatch > Registros > Grupos de registros.
  2. Selecciona el grupo de registros de destino (por ejemplo, /aws/vpc/flowlogs).
  3. Abre la pestaña Filtros de suscripción y haz clic en Crear.
  4. Elige Create Amazon Kinesis Data Firehose subscription filter.
  5. Proporciona los siguientes detalles de configuración:
    • Destino: Selecciona el flujo de entrega cwlogs-to-secops.
    • Otorga permiso: Elige el rol CWLtoFirehoseRole.
    • Nombre del filtro: Ingresa all-events.
    • Patrón de filtro: Déjalo vacío para enviar todos los eventos.
  6. Haz clic en Iniciar transmisión.

Opción 3: Configura los registros de flujo de VPC de AWS en formato CSV con Amazon S3

Transforma los registros al formato CSV (opcional)

  1. Asegúrate de que las filas de tu CSV sigan un orden de columnas estricto y coherente que coincida con los campos que seleccionaste en tu formato personalizado de los registros de flujo de VPC (por ejemplo, el conjunto de campos canónicos de la versión 2 o tu conjunto de la versión 5 o 7). No incluyas una fila de encabezado en los archivos de producción, a menos que tu opción de analizador espere una.
  2. Escribe archivos CSV en un prefijo estable, por ejemplo, s3://<your-bucket>/vpcflowlogs-csv/<region>/year=<year>/month=<month>/day=<day>/.

Configura un feed en Google SecOps para transferir registros de flujo de VPC de AWS (CSV)

  1. Ve a SIEM Settings > Feeds.
  2. Haz clic en + Agregar feed nuevo.
  3. En el campo Nombre del feed, ingresa un nombre para el feed (por ejemplo, AWS VPC Flow Logs - S3 (CSV)).
  4. Selecciona Amazon S3 V2 como el Tipo de fuente.
  5. Selecciona AWS VPC Flow (CSV) como el Tipo de registro.
  6. Haz clic en Siguiente.
  7. Especifica valores para los siguientes parámetros de entrada:
    • URI de S3: Ingresa la dirección del bucket de S3 (por ejemplo, s3://<your-bucket>/vpcflowlogs-csv/<region>/).
    • Opciones de borrado de la fuente: Selecciona la opción de borrado según tu preferencia.
    • Antigüedad máxima del archivo: 180 días de forma predeterminada
    • ID de clave de acceso: Clave de acceso del usuario con acceso al bucket de S3.
    • Clave de acceso secreta: Clave secreta del usuario con acceso al bucket de S3.
    • Espacio de nombres del recurso: Es el espacio de nombres del recurso.
    • Etiquetas de transferencia: Es la etiqueta que se aplica a los eventos de este feed.
  8. Haz clic en Siguiente.
  9. Revisa la nueva configuración del 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
accountId read_only_udm.metadata.product_log_id Es el valor extraído del campo de registro sin procesar accountId.
acción read_only_udm.security_result.action_details Es el valor extraído del campo de registro sin procesar action.
acción read_only_udm.security_result.action Se asigna a ALLOW si action es ACCEPT y a BLOCK si action es REJECT.
az_id read_only_udm.principal.cloud.availability_zone Es el valor extraído del campo de registro sin procesar az_id.
bytes read_only_udm.network.received_bytes Es el valor extraído del campo de registro sin procesar bytes.
dstaddr read_only_udm.target.ip Es el valor extraído del campo de registro sin procesar dstaddr.
dstport read_only_udm.target.port Es el valor extraído del campo de registro sin procesar dstport.
end_time read_only_udm.about.resource.attribute.labels.value Es el valor extraído del campo de registro sin procesar end_time.
end_time read_only_udm.metadata.ingested_timestamp Es el valor extraído del campo de registro sin procesar end_time.
flow_direction read_only_udm.network.direction Se asigna a INBOUND si flow_direction es ingress y a OUTBOUND si flow_direction es egress.
InstanceID read_only_udm.principal.cloud.project.id Es el valor extraído del campo de registro sin procesar InstanceID.
interfaceId read_only_udm.about.resource.attribute.labels.value Es el valor extraído del campo de registro sin procesar interfaceId.
logStatus read_only_udm.about.resource.attribute.labels.value Es el valor extraído del campo de registro sin procesar logStatus.
paquetes read_only_udm.about.resource.attribute.labels.value Es el valor extraído del campo de registro sin procesar packets.
pkt_dst_aws_service read_only_udm.about.resource.attribute.labels.value Es el valor extraído del campo de registro sin procesar pkt_dst_aws_service.
pkt_dstaddr read_only_udm.intermediary.ip Es el valor extraído del campo de registro sin procesar pkt_dstaddr.
pkt_srcaddr read_only_udm.intermediary.ip Es el valor extraído del campo de registro sin procesar pkt_srcaddr.
pkt_src_aws_service read_only_udm.about.resource.attribute.labels.value Es el valor extraído del campo de registro sin procesar pkt_src_aws_service.
protocol read_only_udm.network.ip_protocol Se asigna a TCP si protocol es 6, a UDP si protocol es 17 y, de lo contrario, a UNKNOWN_IP_PROTOCOL.
Región read_only_udm.principal.location.country_or_region Es el valor extraído del campo de registro sin procesar Region.
srcaddr read_only_udm.principal.ip Es el valor extraído del campo de registro sin procesar srcaddr.
srcport read_only_udm.principal.port Es el valor extraído del campo de registro sin procesar srcport.
start_time read_only_udm.about.resource.attribute.labels.value Es el valor extraído del campo de registro sin procesar start_time.
start_time read_only_udm.metadata.event_timestamp Es el valor extraído del campo de registro sin procesar start_time.
SubnetID read_only_udm.about.resource.attribute.labels.value Es el valor extraído del campo de registro sin procesar SubnetID.
tcp_flags read_only_udm.about.resource.attribute.labels.value Es el valor extraído del campo de registro sin procesar tcp_flags.
traffic_path read_only_udm.about.resource.attribute.labels.value Es el valor extraído del campo de registro sin procesar traffic_path.
version read_only_udm.metadata.product_version Es el valor extraído del campo de registro sin procesar version.
vpcID read_only_udm.principal.cloud.vpc.id Es el valor extraído del campo de registro sin procesar vpcID.
read_only_udm.metadata.vendor_name Se codificó como AMAZON.
read_only_udm.metadata.product_name Se codificó como AWS VPC Flow.
read_only_udm.metadata.log_type Se codificó como AWS_VPC_FLOW.
read_only_udm.metadata.event_type Se asigna a NETWORK_CONNECTION si dstaddr no está vacío; de lo contrario, se asigna a GENERIC_EVENT.

¿Necesitas más ayuda? Obtén respuestas de miembros de la comunidad y profesionales de Google SecOps.