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

Publicar logs de flujo en Amazon S3

Los registros de flujo pueden publicar datos de registros de flujo en Amazon S3.

Cuando se publica 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. Para obtener más información, consulte Registros de log de flujo.

Para crear un bucket de Amazon S3 para usarlo con los registros de flujo, consulte la sección Crear un bucket en la Guía de introducción a Amazon Simple Storage Service.

Para obtener información sobre el registro de varias cuentas, vea Central Logging in Multi-Account Environments (Registro central en entornos con varias cuentas).

Archivos log de flujo

Los logs de flujo recopilan registros de logs de flujo, los consolidan en archivos log y, a continuación, se publican los archivos de log en el bucket de Amazon S3 a 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 log de flujo en el bucket de Amazon S3 y crea un nuevo archivo de registro.

Los archivos log se guardan en el bucket de Amazon S3 especificado con una estructura de carpetas que viene determinada por el ID del log de flujo, la región y la fecha en que se crearon. La estructura de carpetas del bucket usa el siguiente formato.

bucket_ARN/optional_folder/AWSLogs/aws_account_id/vpcflowlogs/region/year/month/day/log_file_name.log.gz

Asimismo, el nombre del archivo de registro viene determinado por el ID del registro de flujo y la región, así como por la fecha y hora en que se creó. Los nombres de archivo utilizan el formato siguiente.

aws_account_id_vpcflowlogs_region_flow_log_id_timestamp_hash.log.gz
nota

La marca de tiempo utiliza el formato YYYYMMDDTHHmmZ.

Por ejemplo, a continuación se muestra la estructura de carpeta y el nombre de archivo de un archivo de log para un log de flujo creado por la cuenta de AWS 123456789012, para un recurso en la región us-east-1, el June 20, 2018 a las 16:20 UTC. Incluye registros de logs de flujo para 16:15:00 para 16:19:59.

arn:aws:s3:::my-flow-log-bucket/AWSLogs/123456789012/vpcflowlogs/us-east-1/2018/06/20/123456789012_vpcflowlogs_us-east-1_fl-1234abcd_20180620T1620Z_fe123456.log.gz

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 será posterior a la marca de tiempo del nombre del archivo y será distinto al tiempo invertido en cargar el archivo en el bucket de Amazon S3.

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

Una entidad principal de IAM en su 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 logs 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.

{ "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": "AWSLogDeliveryAclCheck", "Effect": "Allow", "Principal": {"Service": "delivery.logs.amazonaws.com"}, "Action": "s3:GetBucketAcl", "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 añadir manualmente la política anterior al bucket y especificar el ID de cuenta de AWS del creador del log de flujo. Para obtener más información, consulte ¿Cómo agrego una política de bucket en S3? en la Guía del usuario de la consola de Amazon Simple Storage Service. Si el bucket recibe logs de flujo de varias cuentas, añada 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 de AWS 123123123123 y 456456456456 publicar logs de flujo en una carpeta denominada flow-logs en un bucket llamado 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": "AWSLogDeliveryAclCheck", "Effect": "Allow", "Principal": {"Service": "delivery.logs.amazonaws.com"}, "Action": "s3:GetBucketAcl", "Resource": "arn:aws:s3:::log-bucket" } ] }
nota

Le recomendamos que conceda los permisos AWSLogDeliveryAclCheck y AWSLogDeliveryWrite a la entidad principal del servicio de entrega de registros, en lugar de a los distintos ARN de la cuenta de AWS.

Política de claves CMK necesarias para usar con buckets de SSE-KMS

Si habilitó el cifrado en el servidor para su bucket de Amazon S3 utilizando claves administradas por AWS KMS (SSE-KMS) con una clave maestra de cliente (CMK) administrada por el cliente, debe agregar lo siguiente a la política de claves de su CMK de modo que los registros de flujo puedan escribir archivos de registro en el bucket.

nota

Agregue estos elementos a la política para su CMK, no la política para su bucket.

{ "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 log 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 log creados por un log 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 Información general de las Access Control Lists (ACL, Listas de control de acceso) en la Guía para desarrolladores de Amazon Simple Storage Service.

Crear un log de flujo que se publica en Amazon S3

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

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 una o varias interfaces de red y elija Actions (Acciones), Create flow log (Crear registro de flujo).

  4. En Filter (Filtro), especifique el tipo de datos de tráfico IP que desea registrar. Elija All (Todo) para registrar el tráfico aceptado y rechazado, Rejected (Rechazado) para registrar únicamente el tráfico rechazado o Accepted (Aceptado) para registrar solo el tráfico aceptado.

  5. 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.

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

  7. En S3 bucket ARN (ARN de bucket de S3), especifique el nombre de recurso de Amazon (ARN) de un bucket de Amazon S3 existente. Puede incluir una subcarpeta en el ARN de bucket. El bucket no puede utilizar AWSLogs como nombre de subcarpeta, ya que se trata de un término reservado.

    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/

    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 logs de flujo.

  8. Para Format (Formato), especifique el formato del registro de logs de flujo.

    • Para utilizar el formato del registro de logs de flujo, seleccione 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.

      sugerencia

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

  9. (Opcional) Elija Add tag (Agregar etiqueta) para aplicar etiquetas al registro de flujo.

  10. Seleccione Create.

Para crear un log de flujo para una VPC o una subred utilizando 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) o Subnets (Subredes).

  3. Seleccione una o varias VPC o subredes y, a continuación, elija Actions (Acciones), Create flow log (Crear registro de flujo).

  4. En Filter (Filtro), especifique el tipo de datos de tráfico IP que desea registrar. Elija All (Todo) para registrar el tráfico aceptado y rechazado, Rejected (Rechazado) para registrar únicamente el tráfico rechazado o Accepted (Aceptado) para registrar solo el tráfico aceptado.

  5. 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.

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

  7. En S3 bucket ARN (ARN de bucket de S3), especifique el nombre de recurso de Amazon (ARN) de un bucket de Amazon S3 existente. Puede incluir una subcarpeta en el ARN de bucket. El bucket no puede utilizar AWSLogs como nombre de subcarpeta, ya que se trata de un término reservado.

    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/

    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 logs de flujo.

  8. Para Format (Formato), especifique el formato del registro de logs de flujo.

    • Para utilizar el formato del registro de logs de flujo, seleccione 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.

  9. (Opcional) Elija Add tag (Agregar etiqueta) para aplicar etiquetas al registro de flujo.

  10. Seleccione Create.

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

Utilice uno de los siguientes comandos.

El ejemplo de AWS CLI siguiente crea un log de flujo que captura todo el tráfico para la VPC vpc-00112233344556677 y envía los logs de flujo a un bucket de Amazon S3 denominado flow-log-bucket. El parámetro --log-format especifica un formato personalizado para los registros de logs 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 registros de logs de flujo en Amazon S3

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

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