Publicar registros de flujo en Amazon S3 - Amazon Virtual Private Cloud

Publicar registros de flujo en Amazon S3

Los registros de flujo pueden publicar datos de registros de flujo en Amazon S3. Al publicar en Amazon S3, los datos de registro de flujo se publican en un bucket de Amazon S3 existente que especifique. Los registros de logs de flujo de todas las interfaces de red monitoreadas se publican en una serie de objetos de archivos log que se almacenan en el bucket. Si el log de flujo captura datos de una VPC, se publican los registros de logs de flujo de todas las interfaces de red de la VPC seleccionada.

Se aplican costos por incorporación y archivo de datos para los registros a la venta cuando se publican registros de flujo en Amazon S3. Para obtener más información, consulte los precios de Amazon CloudWatch.

Para crear un bucket de Amazon S3 a fin de utilizarlo con registros de flujo, consulte Create a bucket (Crear un bucket) en la Guía de introducción de Amazon Simple Storage Service.

Para obtener más información acerca del registro de varias cuentas, consulte Registro central en la Biblioteca de soluciones de AWS.

Archivos log de flujo

VPC Flow Logs recopila colecciones de datos de registros de flujo, las consolidan en archivos de registro y, a continuación, publican los archivos de registro en el bucket de Amazon S3 en intervalos de cinco minutos. Cada archivo log contiene registros de logs de flujo del tráfico IP registrado en los cinco minutos anteriores.

El tamaño de archivo máximo de un archivo log es de 75 MB. Si el archivo log alcanza el límite de tamaño de archivo en el periodo de cinco minutos, el log de flujo deja de añadirle registros de logs de flujo. A continuación, publica el registro de flujo en el bucket de Amazon S3 y crea un nuevo archivo de registro.

En Amazon S3, el campo Last modified (Última modificación) del archivo de registro de flujo indica la fecha y la hora en que el archivo se cargó en el bucket de Amazon S3. Este valor es posterior a la marca temporal del nombre de archivo y difiere en la cantidad de tiempo invertido en cargar el archivo en el bucket de Amazon S3.

Formato de archivo de registro

Puede especificar uno de los siguientes formatos para los archivos de registro. Cada archivo se comprime en un único archivo Gzip.

  • Texto: Texto sin formato. Este es el formato predeterminado.

  • Parquet: Apache Parquet es un formato de datos columnar. Las consultas sobre datos en formato Parquet son de 10 a 100 veces más rápidas en comparación con las consultas de datos en texto sin formato. Los datos en formato Parquet con compresión Gzip ocupan un 20 por ciento menos de espacio de almacenamiento que el texto sin formato con compresión Gzip.

Opciones de archivo de registro

Puede especificar las siguientes opciones:

  • Prefijos de S3 compatibles con Hive: Habilite los prefijos compatibles con Hive en lugar de importar las particiones a las herramientas compatibles con Hive. Antes de ejecutar las consultas, utilice el comando MSCK REPAIR TABLE.

  • Particiones por horas: Si tiene un gran volumen de registros y, por lo general, orienta las consultas a una hora en específico, puede obtener resultados más rápidos y ahorrar en costos de consulta si particiona los registros por hora.

Estructura del bucket de S3 del archivo de registro

Los archivos de registro se guardan en el bucket de Amazon S3 especificado con una estructura de carpetas basada en el ID del registro de flujo, la Región, la fecha en que se crearon y en las opciones de destino.

De forma predeterminada, los archivos se entregan en la siguiente ubicación.

bucket-and-optional-prefix/AWSLogs/account_id/vpcflowlogs/region/year/month/day/

Si habilita los prefijos de S3 compatibles con Hive, los archivos se entregan en la siguiente ubicación.

bucket-and-optional-prefix/AWSLogs/aws-account-id=account_id/service=vpcflowlogs/aws-region=region/year=year/month=month/day=day/

Si habilita particiones por hora, los archivos se entregan en la siguiente ubicación.

bucket-and-optional-prefix/AWSLogs/account_id/vpcflowlogs/region/year/month/day/hour/

Si habilita particiones compatibles con Hive y particiona el registro de flujo por hora, los archivos se entregan en la siguiente ubicación.

bucket-and-optional-prefix/AWSLogs/aws-account-id=account_id/service=vpcflowlogs/aws-region=region/year=year/month=month/day=day/hour=hour/

Nombre de archivo de registro

El nombre de archivo de un archivo de registro se basa en el ID del registro de flujo, la Región y en la fecha y hora de creación. Los nombres de archivo utilizan el formato siguiente.

aws_account_id_vpcflowlogs_region_flow_log_id_YYYYMMDDTHHmmZ_hash.log.gz

A continuación, se muestra un ejemplo de un archivo de registros para un registro de flujo que la cuenta 123456789012 de AWS ha creado para un recurso en la Región us-east-1, el June 20, 2018 a las 16:20 UTC. El archivo contiene las colecciones de datos del registro de flujo con una hora de finalización entre las 16:20:00 y las 16:24:59.

123456789012_vpcflowlogs_us-east-1_fl-1234abcd_20180620T1620Z_fe123456.log.gz

Política de IAM para entidades principales de IAM que publican registros de flujo en Amazon S3

Una entidad principal de IAM en la cuenta, como un usuario de IAM, debe tener permisos suficientes para publicar registros de flujo en el bucket de Amazon S3. Esto incluye permisos para trabajar con acciones de logs: específicas para crear y publicar los registros de flujo. La política de IAM debe incluir los permisos siguientes.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:CreateLogDelivery", "logs:DeleteLogDelivery" ], "Resource": "*" } ] }

Permisos del bucket de Amazon S3 para registros de flujo

De forma predeterminada, los buckets de Amazon S3 y los objetos que contienen son privados. Solo el propietario del bucket puede tener acceso al bucket y a los objetos almacenados en él. Sin embargo, el propietario del bucket puede conceder acceso a otros recursos y usuarios escribiendo una política de acceso.

La siguiente política de bucket da permiso al registro de flujo para publicar registros en él. Si el bucket ya tiene una política con los siguientes permisos, la política se mantiene tal cual. Recomendamos que conceda estos permisos al principal del servicio de entrega de registros en lugar de a ARN individuales de la cuenta de AWS.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AWSLogDeliveryWrite", "Effect": "Allow", "Principal": {"Service": "delivery.logs.amazonaws.com"}, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::bucket_name/optional_folder/AWSLogs/account_id/*", "Condition": {"StringEquals": {"s3:x-amz-acl": "bucket-owner-full-control"}} }, { "Sid": "AWSLogDeliveryCheck", "Effect": "Allow", "Principal": {"Service": "delivery.logs.amazonaws.com"}, "Action": ["s3:GetBucketAcl", "s3:ListBucket"], "Resource": "arn:aws:s3:::bucket_name" } ] }

Si el usuario que crea el registro de flujo posee el bucket, tiene permisos de PutBucketPolicy para el bucket y el bucket no tiene una política con permisos suficientes de entrega de registros, asociamos automáticamente la política anterior al bucket. Esta política sobrescribe cualquier política existente asociada al bucket.

Si el usuario que va a crear el log de flujo no es el propietario del bucket o no tiene los permisos GetBucketPolicy y PutBucketPolicy para el bucket, se produce un error al crear el log de flujo. En este caso, el propietario del bucket debe agregar manualmente la política anterior al bucket y especificar el ID de la cuenta de AWS del creador del registro de flujo. Para obtener más información, consulte How Do I Add an S3 Bucket Policy? (¿Cómo agrego una política de bucket de S3?) en la Guía del usuario de Amazon Simple Storage Service. Si el bucket recibe registros de flujo de varias cuentas, agregue un entrada del elemento Resource a la instrucción AWSLogDeliveryWrite de la política para cada cuenta. Por ejemplo, la siguiente política de bucket permite a las cuentas 123123123123 y 456456456456 de AWS publicar registros de flujo en una carpeta denominada flow-logs de un bucket, cuyo nombre es log-bucket.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AWSLogDeliveryWrite", "Effect": "Allow", "Principal": {"Service": "delivery.logs.amazonaws.com"}, "Action": "s3:PutObject", "Resource": [ "arn:aws:s3:::log-bucket/flow-logs/AWSLogs/123123123123/*", "arn:aws:s3:::log-bucket/flow-logs/AWSLogs/456456456456/*" ], "Condition": {"StringEquals": {"s3:x-amz-acl": "bucket-owner-full-control"}} }, { "Sid": "AWSLogDeliveryCheck", "Effect": "Allow", "Principal": {"Service": "delivery.logs.amazonaws.com"}, "Action": ["s3:GetBucketAcl", "s3:ListBucket"], "Resource": "arn:aws:s3:::log-bucket" } ] }

Política de clave requerida para el uso con SSE-KMS

Para proteger los datos del bucket de Amazon S3, habilite el cifrado del lado del servidor con las claves administradas de Amazon S3 (SSE-S3) o con el cifrado del lado del servidor con claves de KMS (SSE-KMS). Para obtener más información, consulte Protección de datos mediante cifrado del lado del servidor en la Guía del usuario de Amazon S3.

Con SSE-KMS, puede utilizar una clave administrada por AWS o una clave administrada por el cliente. Con una clave administrada por AWS, no puede utilizar la entrega en cuentas cruzadas. Los registros de flujo se entregan desde la cuenta de entrega de registros, por lo que debe conceder acceso para la entrega entre cuentas. Para conceder acceso de cuentas cruzadas al bucket de S3, utilice una clave administrado por el cliente y especifique el nombre de recurso de Amazon (ARN) de la clave administrada por el cliente cuando habilite el cifrado del bucket. Para obtener más información, consulte Especificación del cifrado del lado del servidor con AWS KMS en la Guía del usuario de Amazon S3.

Cuando utilice SSE-KMS con una clave administrado por el cliente, debe agregar lo siguiente a la política de clave destinada a su clave (no la política de bucket para el bucket de S3), de modo que VPC Flow Logs pueda realizar registros en el bucket de S3.

{ "Sid": "Allow VPC Flow Logs to use the key", "Effect": "Allow", "Principal": { "Service": [ "delivery.logs.amazonaws.com" ] }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "*" }

Permisos de archivos de registro de Amazon S3

Además de las políticas de bucket necesarias, Amazon S3 utiliza listas de control de acceso (ACL) para administrar el acceso a los archivos de registro creados por un registro de flujo. De forma predeterminada, el propietario del bucket tiene los permisos FULL_CONTROL en cada archivo log. El propietario de la entrega de logs, si es diferente del propietario del bucket, no tiene permisos. La cuenta de entrega de logs tiene los permisos READ y WRITE. Para obtener más información, consulte Access Control List (ACL) Overview (Información general de la Lista de control de acceso [ACL]) en la Guía del usuario de Amazon Simple Storage Service.

Crear un registro de flujo que se publique en Amazon S3

Después de haber creado y configurado el bucket de Amazon S3, puede crear registros de flujo para las interfaces de red, las subredes y las VPC.

Para crear un log de flujo para una interfaz de red utilizando la consola

  1. Abra la consola de Amazon EC2 en https://console.aws.amazon.com/ec2/.

  2. En el panel de navegación, elija Network Interfaces.

  3. Seleccione las casillas de verificación para una o más interfaces de red.

  4. Seleccione Actions (Acciones) y, a continuación, Create flow log (Crear registro de flujo).

  5. Establezca la configuración del registro de flujo. Para obtener más información, consulte To configure flow log settings (Configuración de los ajustes del registro de flujo).

Para crear un registro de flujo para una subred mediante la consola

  1. Abra la consola de Amazon VPC en https://console.aws.amazon.com/vpc/.

  2. En el panel de navegación, elija Subnets.

  3. Seleccione las casillas de verificación de una o más subredes.

  4. Elija Actions (Acciones) y, a continuación, Create flow log (Crear registro de flujo).

  5. Establezca la configuración del registro de flujo. Para obtener más información, consulte To configure flow log settings (Configuración del registro de flujo).

Para crear un registro de flujo para una VPC mediante la consola

  1. Abra la consola de Amazon VPC en https://console.aws.amazon.com/vpc/.

  2. En el panel de navegación, elija Your VPCs (Sus VPC).

  3. Seleccione las casillas de verificación de una o más VPC.

  4. Seleccione Actions (Acciones) y, a continuación, Create flow log (Crear registro de flujo).

  5. Establezca la configuración del registro de flujo. Para obtener más información, consulte To configure flow log settings (Configuración del registro de flujo).

Configuración del registro de flujo mediante la consola

  1. En Filter (Filtro), especifique el tipo de datos de tráfico IP que desea registrar.

    • Accepted (Aceptado): Solo tráfico aceptado.

    • Rejected (Rechazado): Solo tráfico rechazado.

    • All (Todo): Tráfico aceptado y rechazado

  2. En Maximum aggregation interval (Intervalo máximo de agregación), elija el período de tiempo máximo durante el que se va a capturar el flujo y se va a agregar a un registro de flujo.

  3. En Destination (Destino), elija Send to an Amazon S3 bucket (Enviar a un bucket de S3).

  4. En S3 bucket ARN (ARN de bucket de S3), especifique el nombre de recurso de Amazon (ARN) de un bucket de Amazon S3 existente. Si lo desea, puede incluir una subcarpeta. Por ejemplo, para especificar una subcarpeta llamada my-logs de un bucket denominado my-bucket, utilice el siguiente ARN:

    arn:aws::s3:::my-bucket/my-logs/

    El bucket no puede utilizar AWSLogs como nombre de subcarpeta, ya que se trata de un término reservado.

    Si posee el bucket, crearemos automáticamente una política de recursos y la asociaremos al bucket. Para obtener más información, consulte Permisos del bucket de Amazon S3 para registros de flujo.

  5. Para Log record format (Formato de registro), seleccione el formato para el registro de flujo.

    • Para utilizar el formato predeterminado de la entrada de registros de flujo, elija AWS default format (Formato predeterminado de AWS).

    • Para crear un formato personalizado, seleccione Formato personalizado. En Log format (Formato de log), elija los campos que desea incluir en el registro de logs de flujo.

    • Para crear un registro de flujo personalizado que incluya los campos predeterminados, elija AWS default format (Formato predeterminado de AWS), copie los campos en Format preview (Vista previa de formato) y, a continuación, elija Custom format (Formato personalizado) y pegue los campos en el cuadro de texto.

  6. Para Log file format (Formato de archivo de registro), especifique el formato del archivo de registro.

    • Text (Texto): Texto sin formato. Este es el formato predeterminado.

    • Parquet: Apache Parquet es un formato de datos columnar. Las consultas sobre los datos en formato Parquet son de 10 a 100 veces más rápidas en comparación con las consultas de datos en texto sin formato. Los datos en formato Parquet con compresión Gzip ocupan un 20 por ciento menos de espacio de almacenamiento que el texto sin formato con compresión Gzip.

  7. (Opcional) Para utilizar prefijos de S3 compatibles con Hive, elija Hive-compatible S3 prefix (Prefijo de S3 compatible con Hive) y, a continuación, Enable (Habilitar).

  8. (Opcional) Para particionar los registros de flujo por hora, elija Every 1 hour (60 mins) (Cada 1 hora [60 minutos]).

  9. (Opcional) Para agregar una etiqueta al registro de flujo, elija Add new tag (Añadir nueva etiqueta) y especifique la clave y el valor de etiqueta.

  10. Elija Create flow log (Crear registro de flujo).

Para crear un registro de flujo que publica en Amazon S3 mediante una herramienta de línea de comandos

Utilice uno de los siguientes comandos.

En el siguiente ejemplo de AWS CLI, se crea un registro de flujo que captura todo el tráfico de la VPC vpc-00112233344556677 y envía los registros de flujo a un bucket de Amazon S3 denominado flow-log-bucket. El parámetro --log-format especifica un formato personalizado para las entradas de registros de flujo.

aws ec2 create-flow-logs --resource-type VPC --resource-ids vpc-00112233344556677 --traffic-type ALL --log-destination-type s3 --log-destination arn:aws:s3:::flow-log-bucket/my-custom-flow-logs/ --log-format '${version} ${vpc-id} ${subnet-id} ${instance-id} ${srcaddr} ${dstaddr} ${srcport} ${dstport} ${protocol} ${tcp-flags} ${type} ${pkt-srcaddr} ${pkt-dstaddr}'

Procesar entradas de registro de flujo en Amazon S3

Los archivos log están comprimidos. Si abre los archivos de registro con la consola de Amazon S3, se descomprimen y se muestran las entradas de registro de flujo. Si descarga los archivos, debe descomprimirlos para ver los registros de logs de flujo.

También puede consultar las entradas de registro de flujo en los archivos de registro mediante Amazon Athena. Amazon Athena es un servicio de consultas interactivo que facilita el análisis de datos en Amazon S3 con SQL estándar. Para obtener más información, consulte Consulta de registros de flujo de Amazon VPC en la Guía del usuario de Amazon Athena.