Publicar registros de flujo en CloudWatch Logs - Amazon Virtual Private Cloud

Publicar registros de flujo en CloudWatch Logs

Los registros de flujo pueden publicar datos de registro de flujo directamente en Amazon CloudWatch.

Al publicar en CloudWatch Logs, los datos de registro de flujo se publican en un grupo de registros y cada interfaz de red tiene una secuencia de registro única en el grupo de registros. Los flujos de logs contienen registros de logs de flujo. Puede crear varios logs de flujo que publiquen datos en el mismo grupo de logs. Si la misma interfaz de red está presente en uno o varios logs de flujo en el mismo grupo de logs, tendrá un flujo de logs combinado. Si ha especificado que un log de flujo debe capturar el tráfico rechazado y otro log de flujo debe capturar el tráfico aceptado, el flujo de logs combinado capturará todo el tráfico.

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

En CloudWatch Logs, el campo timestamp (marca temporal) corresponde a la hora de inicio capturada en la entrada de registro de flujo. El campo ingestionTime indica la fecha y hora en que CloudWatch Logs recibió la entrada de registro de flujo. Esta marca de tiempo es posterior a la hora de finalización capturada en el registro de flujo.

Para obtener más información acerca de CloudWatch Logs, consulte Registros enviados a CloudWatch Logs en la Guía del usuario de Amazon CloudWatch Logs.

Roles de IAM para publicar registros de flujo en CloudWatch Logs

El rol de IAM asociado con el registro de flujo debe tener permisos suficientes para publicar registros de flujo en el grupo de registros especificado en CloudWatch Logs. El rol de IAM debe pertenecer a la cuenta de AWS.

La política de IAM asociada al rol de IAM debe incluir al menos los siguientes permisos.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents", "logs:DescribeLogGroups", "logs:DescribeLogStreams" ], "Resource": "*" } ] }

Asegúrese también de que el rol tiene una relación de confianza que permite al servicio de logs de flujo asumir ese rol.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "vpc-flow-logs.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

Le recomendamos que utilice las claves de condición aws:SourceAccount y aws:SourceArn para protegerse contra el problema del suplente confuso. Por ejemplo, podría agregar el siguiente bloque de condición a la política de confianza anterior. La cuenta fuente es la propietaria del registro de flujo y el ARN fuente es el ARN del registro de flujo. Si no conoce el ID del registro de flujo, puede reemplazar esa parte del ARN por un comodín (*) y, a continuación, actualizar la política después de crear el registro de flujo.

"Condition": { "StringEquals": { "aws:SourceAccount": "account_id" }, "ArnLike": { "aws:SourceArn": "arn:aws:ec2:region:account_id:vpc-flow-log/flow-log-id" } }

Creación o actualización de un rol de IAM para registros de flujo

Puede actualizar una función existente o utilizar el procedimiento siguiente para crear una nueva función y utilizarla con los logs de flujo.

Para crear un rol de IAM para registros de flujo

  1. Abra la consola de IAM en https://console.aws.amazon.com/iam/.

  2. En el panel de navegación, elija Roles, Create role.

  3. En Select type of trusted entity (Seleccionar tipo de entidad de confianza), elija AWS service (Servicio de AWS). En Use case (Caso de uso), elija EC2. Elija Next: Permissions.

  4. En la página Attach permissions policies (Asociar políticas de permisos), elija Next: Review (Siguiente: Revisar). Elija Next: Review.

  5. Ingrese un nombre para el rol y, opcionalmente, especifique una descripción. Elija Create role (Crear rol).

  6. Seleccione el nombre de su función. En Permissions (Permisos), elija Add inline policy (Añadir política insertada), JSON.

  7. Copie la primera política de Roles de IAM para publicar registros de flujo en CloudWatch Logs y péguela en la ventana. Elija Review policy (Revisar política).

  8. Escriba un nombre para la política y elija Create policy (Crear política).

  9. Seleccione el nombre de su función. En Trust relationships (Relaciones de confianza), seleccione Edit trust relationship (Editar relación de confianza). En el documento de la política existente, cambie el servicio de ec2.amazonaws.com a vpc-flow-logs.amazonaws.com. Elija Update Trust Policy.

  10. En la página Summary (Resumen), tome nota del ARN de la función. Necesita este ARN para crear su propio log de flujo.

Permisos para que los usuarios de IAM pasen un rol

Los usuarios también deben tener permisos para utilizar la acción iam:PassRole para el rol de IAM que está asociado con registro de flujo.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": ["iam:PassRole"], "Resource": "arn:aws:iam::account-id:role/flow-log-role-name" } ] }

Crear un registro de flujo que se publique en CloudWatch Logs

Puede crear registros de flujo para sus VPC, subredes o interfaces de red. Si realiza estos pasos como usuario de IAM, asegúrese de que tiene permisos para usar la acción iam:PassRole. Para obtener más información, consulte Permisos para que los usuarios de IAM pasen un rol .

Requisito previo

Cree el grupo de registros de destino. Abra la página de grupos de registro en la consola de CloudWatch y elija Create log group (Crear grupo de registro). Escriba un nombre para el grupo de registros y elija Create (Crear).

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

  4. Para Filter (Filtro), especifique el tipo de tráfico que desea registrar. Elija All (Todos) para registrar el tráfico aceptado y rechazado, Reject (Rechazar) a fin de registrar sólo el tráfico rechazado o Accept (Aceptar) con el objetivo de registrar sólo 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 CloudWatch Logs (Enviar a CloudWatch Logs).

  7. Para Destination log group (Grupo de registros de destino), elija el nombre del grupo de registros de destino que ha creado.

  8. En IAM role (Rol de IAM), especifique el nombre del rol que tiene permisos para publicar registros en CloudWatch Logs.

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

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

    • Para utilizar un formato personalizado, elija Custom format (Formato personalizado) y, a continuación, seleccione campos de Log format (Formato de registro).

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

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

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 la casilla de verificación para una o más VPC o subredes y, a continuación, elija Actions (Acciones), Create flow log (Crear registro de flujo).

  4. Para Filter (Filtro), especifique el tipo de tráfico que desea registrar. Elija All (Todos) para registrar el tráfico aceptado y rechazado, Reject (Rechazar) a fin de registrar sólo el tráfico rechazado o Accept (Aceptar) con el objetivo de registrar sólo 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 CloudWatch Logs (Enviar a CloudWatch Logs).

  7. Para Destination log group (Grupo de registros de destino), elija el nombre del grupo de registros de destino que ha creado.

  8. En IAM role (Rol de IAM), especifique el nombre del rol que tiene permisos para publicar registros en CloudWatch Logs.

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

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

    • Para utilizar un formato personalizado, elija Custom format (Formato personalizado) y, a continuación, seleccione campos de Log format (Formato de registro).

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

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

Para crear un registro de flujo mediante la línea de comandos

Utilice uno de los siguientes comandos.

El siguiente ejemplo de la AWS CLI crea un log de flujo que captura todo el tráfico aceptado para la subred subnet-1a2b3c4d. Los registros de flujo se envían a un grupo de registro en CloudWatch Logs denominado my-flow-logs, en la cuenta 123456789101, mediante el rol de IAM publishFlowLogs.

aws ec2 create-flow-logs --resource-type Subnet --resource-ids subnet-1a2b3c4d --traffic-type ACCEPT --log-group-name my-flow-logs --deliver-logs-permission-arn arn:aws:iam::123456789101:role/publishFlowLogs

Procesar entradas de registro de flujo en CloudWatch Logs

Puede trabajar con las entradas de registro de flujo al igual que con los demás eventos de registro recopilados por CloudWatch Logs. Para obtener más información acerca de los datos de registro y filtros de métricas de monitoreo, consulte Búsqueda y filtrado de datos de registros en la Guía del usuario de Amazon CloudWatch.

Ejemplo: crear un filtro de métrica y una alarma de CloudWatch para un registro de flujo

En este ejemplo, tiene un log de flujo para eni-1a2b3c4d. Desea crear una alarma que le avise si ha habido 10 o más intentos rechazados para conectar con su instancia a través del puerto TCP 22 (SSH) en un periodo de 1 hora. En primer lugar, debe crear un filtro de métrica que coincida con el patrón de tráfico para el que va a crear la alarma. A continuación, puede crear una alarma para el filtro de métrica.

Para crear un filtro de métrico para el tráfico SSH rechazado y una alarma para el filtro

  1. Abra la consola de CloudWatch en https://console.aws.amazon.com/cloudwatch/.

  2. En el panel de navegación, elija Logs (Registros), Log groups (Grupos de registros).

  3. Seleccione la casilla de verificación para el grupo de registro y, a continuación, elija Actions (Acciones), Create metric filter (Crear filtro de métricas).

  4. En Filter Pattern (Patrón de filtro), escriba lo siguiente.

    [version, account, eni, source, destination, srcport, destport="22", protocol="6", packets, bytes, windowstart, windowend, action="REJECT", flowlogstatus]
  5. En Select Log Data to Test (Seleccionar datos de registro para prueba), seleccione el flujo de registro para la interfaz de red. (Opcional) Para ver las líneas de los datos de registro que concuerdan con el patrón de filtro, elija Test Pattern (Probar patrón). Cuando esté preparado para continuar, seleccione Next (Siguiente).

  6. Ingrese un nombre de filtro, un espacio de nombres de métrica y un nombre de métrica. Establezca el valor de la métrica en 1. Cuando haya terminado, elija Next (Siguiente) y, luego, elija Create metric filter (Crear filtro de métricas).

  7. En el panel de navegación, elija Alarms (Alarmas), Create Alarm (Crear alarma).

  8. Elija Create alarm (Crear alarma).

  9. Elija el espacio de nombres para el filtro de métricas que ha creado.

    Puede que la nueva métrica tarde unos minutos en mostrarse en la consola.

  10. Seleccione el nombre de métrica que ha creado y elija Next (Siguiente).

  11. Configure la alarma como se indica a continuación y, luego, elija Next (Siguiente):

    • En Statistic (Estadística), elija Sum (Suma). Asegura que esté capturando el número total de puntos de datos para el período especificado.

    • En Period (Período), seleccione 1 Hour (1 hora).

    • En Whenever (Siempre), elija Greater/Equal (Mayor o igual) e ingrese 10 en el umbral.

    • En Additional configuration (Configuración adicional), Datapoints to alarm (Puntos de datos para alarma), deje el valor predeterminado 1.

  12. En Notification (Notificación), seleccione un tema de SNS existente o elija Create new topic (Crear tema nuevo) para crear uno nuevo. Elija Next (Siguiente).

  13. Ingrese un nombre y una descripción para la alarma y, a continuación, elija Next (Siguiente).

  14. Cuando haya terminado de configurar la alarma, elija Create alarm (Crear alarma).