Blog de Amazon Web Services (AWS)

¿Cómo habilitar logs en los servicios de AWS? – Parte 1

Por Giovanni Rodríguez, Solutions Architect para Public Sector en AWS y Jhon H. Guzmán, Partner Solutions Architect para Public Sector en AWS

 

Parte 1 – Servicios de la cuenta de AWS (AWS CloudTrail), Cómputo, Contenedores y Tecnología sin servidor (Serverless)

Las prácticas recomendadas de seguridad en la nube, así como la mayoría de los programas de cumplimiento normativo, requieren que el logging esté habilitado para todos los servicios que se incluyan en la arquitectura de cada aplicación.  Con AWS, es posible mejorar la agilidad del negocio mientras se mantiene el control del gobierno TI.  AWS proporciona servicios y funcionalidades de monitoreo y observabilidad para que pueda comprender y mejorar el estado, el rendimiento y la disponibilidad de los recursos en nube y en on-premises. Monitorear las aplicaciones, la infraestructura y los servicios de AWS, y al mismo tiempo aprovechar las alarmas, los logs y los datos de eventos para realizar acciones automatizadas y reducir el tiempo medio de resolución o remediación.

Una de las iniciativas de Amazon Web Services para ayudar en el desarrollo de planes que permitan integrar tecnología de la nube en las diferentes áreas de las organizaciones es el Marco de adopción de la nube de AWS (AWS Cloud Adoption Framework CAF por sus siglas en inglés). Este marco ayuda a las organizaciones a comprender cómo la adopción de la nube transforma su forma de trabajo, y proporciona una estructura para identificar y abordar las brechas en las capacidades y los procesos.  Actualmente el AWS CAF agrupa sus guías en seis perspectivas, ver Figura 1.

Figura 1. Perspectivas el marco de adopción de nube de AWS (AWS CAF)

 

Dentro de estas guías, la perspectiva de seguridad del AWS CAF, organiza las capacidades que ayudarán a impulsar la transformación de la cultura de seguridad en el interior de la organización. La Figura 2 ilustra las capacidades fundamentales.

Figura 2. Capacidades de la perspectiva de seguridad del AWS CAF

 

Aunque la habilitación de logging es transversal a las cinco capacidades, en la perspectiva de seguridad se establece como mejor práctica explícita en las capacidades de controles de detección y respuesta a incidentes y en relación a estos controles de detección, AWS proporciona logging nativo, así como servicios que aportan una mayor visibilidad cercana a tiempo real de los hallazgos en el entorno de AWS. La correlación de los logs de fuentes de AWS con otras fuentes de eventos, como sistemas operativos, aplicaciones y bases de datos, puede brindar una sólida postura de seguridad y mejorar la visibilidad.

Respecto a la capacidad de respuesta a incidentes, la Guía para la respuesta a incidentes de AWS menciona de manera reiterada la necesidad e importancia de la habilitación de logs, como elemento clave para preparar, educar y capacitar a los equipos cloud antes de que se produzcan problemas de seguridad. En particular, es importante saber qué controles y capacidades se pueden usar, realizar simulaciones para investigar y resolver posibles problemas, e identificar los métodos de remediación a utilizar para aprovechar la automatización y mejorar la velocidad de respuesta.

De acuerdo al documento Mejores prácticas de seguridad de AWS, cuando se diseñe la estrategia de logging, se recomienda tener en cuenta las siguientes consideraciones:

Área

Consideración

Recolección

Observar cómo se recopilan los archivos de logs. A menudo, los agentes de sistemas operativos, aplicaciones o agentes de terceros o middleware recopilan información para el archivo de logs.

Transporte

Cuando los archivos de logs estén centralizados, transferirlos a la ubicación central de forma segura, fiable y oportuna.

Almacenamiento

Centralizar los archivos de logs de varias instancias para facilitar las políticas de retención, así como el análisis y la correlación.

Taxonomía

Presentar diferentes categorías de archivos de logs en un formato adecuado para el análisis.

Análisis y correlación

Los archivos de logs proporcionan inteligencia de seguridad después de analizarlos y correlacionar eventos en ellos. Es posible analizar los logs en tiempo real o a intervalos programados.

Protección y seguridad

Los archivos de logs son confidenciales. Protegerlos mediante el control de red, la administración de identidades y acceso, el cifrado, la autenticación de integridad de datos y la marca de tiempo a prueba de manipulaciones.  Se debe procurar no incluir información personal identificable (PII) en los logs, ya que este tipo de información requiere un tratamiento especial, el cual no se encuentra dentro del alcance de este blogpost.

 

El requisito de “habilitar los logs” lleva a múltiples preguntas:  ¿El servicio de AWS CloudTrail es suficiente? ¿Cómo activo el logging de estos servicios? ¿Qué logs se recopilan de forma predeterminada?  Este blogpost busca resolver éstas y otras preguntas que surgen de manera habitual en los procesos de definición de arquitecturas y etapas de implementación y uso específico de servicios de AWS.

Después de utilizar varios servicios de AWS, se observará que algunos envían sus logs a Amazon CloudWatch Logs (por ejemplo, AWS Lambda), otros van a Amazon S3 (por ejemplo, Application Load Balancers y Amazon CloudFront), y otros son recolectados a través de Amazon Kinesis (por ejemplo, AWS WAF y los nuevos logs en tiempo real de Amazon CloudFront).

 

Categorías y servicios de AWS

Amazon Web Services (AWS) ofrece más de 200 servicios de TI en centros de datos alrededor del mundo. Millones de clientes, incluidas las startups de mayor crecimiento, las empresas más grandes y las principales agencias gubernamentales, utilizan AWS para reducir costos, ser más ágiles e innovar más rápido.  Este amplio conjunto de servicios basados en la nube, incluye recursos de cómputo, almacenamiento, bases de datos, analítica, redes, dispositivos móviles, herramientas para desarrolladores, herramientas de gestión, IoT, seguridad y aplicaciones empresariales.

Esta serie de blogs la hemos dividido en cuatro partes agrupando varias categorías de servicios de AWS:

  • En la parte 1, nos enfocaremos en los servicios de la cuenta de AWS (CloudTrail), cómputo, contenedores y tecnología sin servidor (serverless).
  • En la parte 2, nos enfocaremos en los servicios de bases de datos, gestión y gobernanza, redes y entrega de contenido.
  • En la parte 3, nos enfocaremos en los servicios de seguridad, identidad y cumplimiento normativo, machine learning e inteligencia artificial y analítica.
  • En la parte 4, nos enfocaremos en los servicios de integración de aplicaciones, blockchain, aplicaciones empresariales, interacción con clientes, herramientas para desarrolladores, informática para usuarios finales, servicios de frontend web y móviles, migración y transferencia e internet de las cosas.

A continuación se presentan los principales aspectos de logging en tablas organizadas por varias categorías de servicios de AWS; y posteriormente se explican detalles del logging de cada uno de estos servicios.

 

Servicios de Cómputo

Servicio AWS

¿Habilitados por defecto? (1)

¿A dónde van?

Amazon EC2

No

Amazon CloudWatch Logs

Amazon EC2 Auto Scaling

Amazon EC2 Auto Scaling

Amazon Lightsail

Amazon Lightsail

AWS Batch

Amazon CloudWatch Logs

AWS Elastic Beanstalk

Amazon CloudWatch Logs

AWS Lambda

Amazon CloudWatch Logs

AWS Outposts

CloudWatch metrics
CloudTrail
VPC Flow Logs

Amazon EC2 Image Builder

Amazon CloudWatch Logs Logs

AWS VM Import/Export

Amazon S3

(1) Una vez habilitado el servicio de AWS CloudTrail, el registro de logs estará siempre habilitado por defecto para los servicios de AWS que lo integran. Puede que los servicios de AWS posean sus propias características de logging, por esta razón, hemos considerado en este blogpost Sí en caso que el servicio particular posea su propia característica para el registro de logs habilitada por defecto y para los servicios que únicamente tienen posibilidades de logging a través de la integración con AWS CloudTrail.

 

Servicios de Contenedores

Servicio AWS

¿Habilitados por defecto?

¿A dónde van?

Amazon ECR

No

AWS CloudTrail
Amazon EventBridge
Amazon S3

Amazon ECS

Amazon CloudWatch Logs Logs
Amazon S3

Amazon EKS

Amazon CloudWatch Logs Logs
Amazon S3
Amazon CloudWatch Logs Container Insights
Amazon EBS

AWS App2Container

Amazon CloudWatch Logs Logs
Amazon CloudWatch Logs Container Insights
Amazon EBS

AWS Fargate

Amazon Cloudwatch logs
Amazon Elasticsearch Service
Amazon Kinesis Data Firehose
Amazon S3
Amazon Kinesis Data Streams

 

Servicios de Tecnología sin servidor (Serverless)

Servicio AWS

¿Habilitados por defecto?

¿A dónde van?

AWS Lambda

AWS Lambda
Amazon CloudWatch Logs

Amazon API Gateway

No

Amazon CloudWatch Logs

Amazon S3

No

Amazon S3
AWS CloudTrail

AWS Fargate

Amazon Cloudwatch logs
Amazon Elasticsearch Service
Amazon Kinesis Data Firehose
Amazon S3
Amazon Kinesis Data Streams

Amazon DynamoDB

No

Amazon S3
Amazon CloudWatch Logs
Amazon CloudWatch Events
AWS CloudTrail

Amazon EventBridge

AWS CloudTrail

 

La cuenta de AWS

Comencemos con el servicio de logging AWS CloudTrail. AWS CloudTrail es un servicio que le permite realizar auditorías de gobernanza, de conformidad, operativas y de riesgo en las cuentas y en muchos de los servicios de AWS. Con AWS CloudTrail, es posible registrar, monitorear de manera continua y retener la actividad de la cuenta relacionada con acciones en toda la infraestructura de AWS. Incluso si ha creado una organización en AWS Organizations, puede crear un trail que registre todos los eventos para todas las cuentas de AWS en esa organización. Además, proporciona el historial de los eventos de actividad de las cuentas de AWS, incluidas las acciones efectuadas a través de la consola de administración de AWS, los SDK de AWS, las herramientas de línea de comandos y otros servicios de AWS. Un trail aplicado a todas las regiones entrega los archivos de logs de todas las regiones a un bucket de Amazon S3. Para fines de cumplimiento, los logs de acceso a ese bucket deben escribirse (en otro bucket de Amazon S3).

Amazon EventBridge es también otro servicio de AWS que recopila muchos de los mismos tipos de eventos que AWS CloudTrail (logs de nivel de escritura, no leídos) pero en tiempo real.  Amazon EventBridge es la forma recomendada por AWS para gestionar sus eventos. CloudWatch Events y EventBridge son el mismo servicio subyacente y la misma API, pero EventBridge proporciona más funcionalidades. Los cambios que realice en CloudWatch o en EventBridge aparecerán en cada consola.

¿Qué se registra?  

AWS CloudTrail registra tres tipos de eventos: eventos de administración, eventos de datos y eventos de CloudTrail Insights.

¿A dónde van?
Un bucket de Amazon S3 (en intervalos de entrega de 15 minutos) y el servicio Amazon EventBridge (en tiempo real).

¿Están habilitados de forma predeterminada?
Sí. De forma predeterminada, los trails registran los eventos de administración. Para registrar eventos de datos de AWS CloudTrail o de CloudTrail Insights, debe agregar explícitamente a un trail los recursos soportados o los tipos de recursos para los que desea recopilar la actividad.

No se requiere ninguna acción para empezar a visualizar la actividad de su cuenta. No importa si es un cliente nuevo o existente de AWS, y no tiene la configuración de CloudTrail, usted no tiene que habilitar o configurar algo para ver la actividad de su cuenta. Puede ingresar a la consola de AWS CloudTrail o la CLI de AWS y comenzar a ver hasta los últimos 90 días de actividad de su cuenta.

¿Cómo habilitar?
Creación de un trail de logs para su cuenta de AWS

 

Cómputo

Amazon Elastic Compute Cloud (Amazon EC2)

Amazon Elastic Compute Cloud (Amazon EC2) es un servicio web que proporciona capacidad de cómputo segura y de tamaño modificable en la nube.  Proporciona un control completo sobre los recursos informáticos y puede ejecutarse en el entorno acreditado de Amazon. Amazon EC2 ofrece la plataforma informática más amplia y profunda con elección de procesador, almacenamiento, red, sistema operativo y modelo de compra.

El monitoreo es un aspecto importante del mantenimiento de la fiabilidad, la disponibilidad y el rendimiento de las instancias de Amazon Elastic Compute Cloud (Amazon EC2) y las soluciones de AWS.  De forma predeterminada se puede monitorear el uso de la CPU, la I/O de disco y el uso de la red de las instancias EC2 en Amazon CloudWatch. Adicionalmente se recomienda monitorear la utilización de memoria, utilización de intercambio de disco, utilización de espacio de disco, utilización de archivos de paginación, y recopilación de logs, mediante el agente de CloudWatch.

¿Qué se registra?

Logs de aplicaciones, syslogs, logs de seguridad, y otros que se configuren.

¿A dónde van?
Amazon CloudWatch Logs.

¿Están habilitados de forma predeterminada?
No.

¿Cómo habilitar?
Recopilación de métricas y logs de instancias Amazon EC2 y servidores on-premise con el agente de CloudWatch

 

Amazon EC2 Auto Scaling

Amazon EC2 Auto Scaling le ayuda a mantener la disponibilidad de las aplicaciones y le permite agregar o eliminar instancias EC2 automáticamente de acuerdo con las condiciones que defina. Puede utilizar las funciones de gestión de flotas de EC2 Auto Scaling para mantener el estado y la disponibilidad de su flota. También puede utilizar las funciones de escalado dinámico y predictivo de EC2 Auto Scaling para agregar o quitar instancias de EC2.

Cada vez que se produce un evento de escalado automático (por ejemplo, escalar horizontalmente), se produce una notificación. Estos eventos se pueden ver en la consola de Auto Scaling (y recuperarse a través de la API), pero también se pueden enviar a SNS donde, a continuación, se pueden transmitir a otros servicios.

¿Qué se registra?

Eventos de Auto Scaling.

¿A dónde van?
Una base de datos interna de Auto Scaling de actividad de eventos, opcionalmente a SNS.

¿Están habilitados de forma predeterminada?
Sí.  La integración de SNS debe configurarse mediante notificaciones de Auto Scaling.

¿Cómo habilitar?
Recibir notificaciones Amazon SNS cuando se escala el grupo de Auto Scaling

 

Amazon Lightsail

Amazon Lightsail es un servidor virtual privado (VPS) fácil de usar que ofrece lo necesario para desarrollar una aplicación o sitio web, además de un plan mensual asequible. No importa que sea nuevo en la nube o que quiera sumarse a ella rápidamente con su infraestructura AWS de confianza.

Lightsail es un servicio que abstrae muchos de los recursos subyacentes (instancias EC2, contenedores, bases de datos RDS, etc.) del usuario en favor de una interfaz sencilla con tipos de lanzamiento de aplicaciones predefinidos. Por este motivo, el logging es autónomo dentro de Lightsail, accesible a través de la interfaz de usuario de Lightsail o las API, y no externamente a través de Amazon CloudWatch.

¿Qué se registra?

Logs de bases de datos, aplicaciones, contenedores y errores.

¿A dónde van?
A la plataforma Lightsail, se pueden recuperar de la interfaz de usuario de la consola de Lightsail.

¿Están habilitados de forma predeterminada?
Sí.

¿Cómo habilitar?

No aplica.  Enlaces para la visualización:
Visualizar los logs de base de datos y el historial en Amazon Lightsail

Visualización de los logs de los servicios de contenedor de Amazon Lightsail

 

AWS Batch

AWS Batch permite a los desarrolladores, científicos e ingenieros ejecutar de manera fácil y eficiente cientos de miles de trabajos informáticos por lotes en AWS. AWS Batch aprovisiona de manera dinámica la cantidad y el tipo óptimos de recursos informáticos (p. ej., instancias optimizadas para CPU o para memoria) en función del volumen y los requisitos específicos de recursos de los trabajos por lotes enviados. Con AWS Batch, no es necesario instalar y gestionar software de informática por lotes ni clústeres de servidores para ejecutar trabajos, lo que permite concentrarse en analizar los resultados y resolver problemas.

¿Qué se registra?

Logs de trabajos por lotes.  De forma predeterminada, AWS Batch habilita el controlador de logs awslogs para enviar información de logs a Amazon CloudWatch Logs. Se puede utilizar esta función para ver diferentes logs de los contenedores en una ubicación conveniente e impedir que los logs de contenedor ocupen espacio en disco en las instancias de contenedor.

¿A dónde van?
A Amazon CloudWatch Logs.

¿Están habilitados de forma predeterminada?
Sí.

¿Cómo habilitar?

Uso del controlador de logs awslogs

Uso de Amazon CloudWatch Logs con AWS Batch

Custom logging with AWS Batch

 

AWS Elastic Beanstalk

AWS Elastic Beanstalk es un servicio fácil de utilizar para implementar y escalar servicios y aplicaciones web desarrollados con Java, .NET, PHP, Node.js, Python, Ruby, Go y Docker en servidores familiares como Apache, Nginx, Passenger e IIS. Solo se tiene que cargar el código y Elastic Beanstalk administrará de manera automática la implementación, desde el aprovisionamiento de la capacidad, el balanceo de carga y el escalado automático hasta el monitoreo del estado de la aplicación. Al mismo tiempo, se tiene el control absoluto de los recursos de AWS que alimentan la aplicación y se podrá acceder a los recursos subyacentes. No se cargan tarifas adicionales por Elastic Beanstalk; solo se paga por los recursos de AWS que necesite para almacenar y ejecutar las aplicaciones.

Las instancias EC2 en el entorno de Elastic Beanstalk generan logs que se pueden consultar para solucionar problemas relacionados con la aplicación o los archivos de configuración.

¿Qué se registra?

Los logs creados por el servidor web, el servidor de aplicaciones, los scripts de la plataforma Elastic Beanstalk y AWS CloudFormation.

¿A dónde van?
Se almacenan localmente en instancias individuales. Se pueden recuperar de forma sencilla a través de la consola de administración del entorno o la CLI de EB. También es posible configurar el entorno para transmitir logs a Amazon CloudWatch Logs en tiempo real.

¿Están habilitados de forma predeterminada?
Sí, el reenvío a Amazon CloudWatch Logs se puede configurar.

¿Cómo habilitar?
Visualización de logs de instancias de Amazon EC2 en su entorno de Elastic Beanstalk

 

AWS Lambda

Ver sección Tecnología sin servidor (Serverless).

 

AWS Outposts

AWS Outposts es un servicio completamente administrado que ofrece la misma infraestructura, los servicios, las API y las herramientas de AWS en prácticamente cualquier centro de datos, espacio de co-location o instalación on-premise para lograr una experiencia híbrida estable. AWS Outposts es ideal para cargas de trabajo que requieren acceso de baja latencia, procesamiento de datos locales, residencia de datos y migración de aplicaciones con interdependencias del sistema on-premise.

¿Qué se registra?

  • Estadísticas con información de los Outposts como un conjunto ordenado de datos de series de tiempo, conocidas como métricas.
  • Registro de las acciones realizadas por un usuario, un rol o un servicio de AWS en AWS Outposts. AWS CloudTrail captura todas las llamadas de API para AWS Outposts como eventos. Las llamadas capturadas incluyen llamadas desde la consola de AWS Outposts y llamadas de código a las operaciones de la API de AWS Outposts.
  • Información detallada sobre el tráfico hacia y desde su Outposts y dentro de su Outposts.
  • Cada servicio que se encuentre funcionando dentro de Outposts genera sus propios logs, ver cada uno de estos servicios dentro de este blogpost.

¿A dónde van?

AWS Outposts se integra con los siguientes servicios que ofrecen funciones de monitoreo y logging:

  • Amazon CloudWatch metrics
  • AWS CloudTrail logs
  • VPC Flow Logs
  • Ver cada servicio que se encuentre funcionando dentro de Outposts en este blogpost para encontrar a dónde van sus logs.

¿Están habilitados de forma predeterminada?

Sí.

¿Cómo habilitar?

No aplica.  Ver Monitor your Outpost para mayor información.

 

Amazon EC2 Image Builder

EC2 Image Builder simplifica la creación, las pruebas y la implementación de imágenes de máquinas virtuales y de contenedores para su uso en AWS y on-premises.

¿Qué se registra?

Image Builder realiza un seguimiento y muestra el progreso de cada paso del proceso de creación de imágenes.

¿A dónde van?
Amazon CloudWatch Logs y (opcionalmente) Amazon S3.

¿Están habilitados de forma predeterminada?
Sí (Amazon CloudWatch Logs). Amazon S3 puede configurarse.

¿Cómo habilitar?
Logs de EC2 Image Builder

 

AWS VM Import/Export

VM Import/Export le permite importar imágenes de máquina virtual con facilidad desde el entorno existente a instancias de Amazon EC2 y volver a exportarlas al entorno on-premise.

¿Qué se registra?

Logs de los trabajos de importación o de exportación.

¿A dónde van?
Un archivo de logging, que se puede enviar a Amazon S3 (o descargar).

¿Están habilitados de forma predeterminada?
Sí. La carga a Amazon S3 puede configurarse.

¿Cómo habilitar?

Viewing Import/Export Logs

 

Contenedores

AWS Elastic Container Registry (Amazon ECR)

Amazon Elastic Container Registry (Amazon ECR) es un servicio de registro de imágenes de contenedor administrado por AWS seguro, escalable y fiable. Amazon ECR admite repositorios de imágenes de contenedor públicos o privados con permisos basados en recursos que utilizan AWS IAM. Puede utilizar la CLI que prefiera para insertar, extraer y administrar imágenes de Docker, imágenes de Open Container Initiative (OCI) y artefactos compatibles con OCI.

Amazon ECR está integrado con AWS CloudTrail, con lo cual se pueden registrar las acciones realizadas por un usuario, un rol o un servicio de AWS en Amazon ECR. Cuando se crea un trail, puede habilitar la entrega continua de eventos de CloudTrail a un bucket de Amazon S3, incluidos los eventos de Amazon ECR. Si no configura un trail, aún puede ver los eventos más recientes en la consola de AWS CloudTrail a través del historial de eventos. Con esta información, puede determinar la solicitud que se realizó a Amazon ECR, la dirección IP de origen, quién realizó la solicitud, cuándo se realizó y detalles adicionales.

Con Amazon EventBridge puede automatizar los servicios de AWS y responder automáticamente a eventos en Amazon ECR, como cambios de los recursos. Los eventos de Amazon ECR se envían a EventBridge cerca al tiempo real. Puede crear reglas sencillas para indicar qué eventos le resultan de interés e incluir las acciones automatizadas que deben realizarse cuando un evento cumpla una de las reglas (eventos de push, escaneo o eliminación). Entre las acciones que se pueden activar automáticamente se incluyen las siguientes: Agregar eventos a grupos de registros en Amazon CloudWatch Logs, invocar una función de AWS Lambda, desviar el evento a Amazon Kinesis Data Streams, activar una máquina de estado de AWS Step Functions, notificar a un tópico de Amazon SNS o una cola de AWS SQS.

¿Qué se registra?

A través de AWS CloudTrail se registran todas las llamadas a la API, incluidas las llamadas desde la consola de Amazon ECR, todas las acciones tomadas debido a la configuración de cifrado en los repositorios de imágenes, todas las acciones tomadas debido a las reglas de las políticas del ciclo de vida, incluidas las acciones exitosas y no exitosas. A través de Amazon EventBridge es posible agregar eventos a grupos de logs en Amazon CloudWatch Logs tales como eventos de envío (push), escaneo, y eliminación de imágenes.

¿A dónde van?

AWS CloudTrail

Amazon EventBridge

Amazon S3

¿Están habilitados de forma predeterminada?

No para EventBridge.

Sí para CloudTrail.

¿Cómo habilitar?

Eventos de Amazon ECR y EventBridge

Registro de acciones de Amazon ECR con AWS CloudTrail

 

Amazon Elastic Container Service (Amazon ECS)

Amazon Elastic Container Service (Amazon ECS) es un servicio de orquestación de contenedores completamente administrado para ejecutar aplicaciones sensibles y de misión crítica debido a su seguridad, confiabilidad y escalabilidad.

ECS es una excelente opción para ejecutar contenedores por varias razones dentro de las cuales se destaca la ejecución de ECS con AWS Fargate, que es un motor de cómputo sin servidor (Serverless) para contenedores.

Actualmente AWS proporciona varias herramientas de recopilación de logs de los recursos de Amazon ECS y poder responder de esta manera a incidentes potenciales dentro de las que se encuentran: Amazon CloudWatch Logs, Amazon ECS logs collector, Docker Logs y AWS CloudTrail Logs.

A través de Amazon CloudWatch Logs, es posible que pueda supervisar, almacenar y acceder a los archivos de logs de los contenedores de las  tareas de Amazon ECS especificando el controlador de registro de awslogs durante el proceso de definición de tareas. Este es el método admitido para acceder a los logs de las tareas que usan el tipo de lanzamiento Amazon Fargate o el tipo de lanzamiento EC2. Adicionalmente para el caso particular del tipo de lanzamiento EC2 es posible supervisar, almacenar y acceder al sistema operativo y a los archivos de logs del agente de contenedores de Amazon ECS que opera en las instancias EC2 de contenedores de Amazon ECS. Estos logs de forma predeterminada, se rotan cada hora con un máximo de 24 logs almacenados.

Si no está seguro de cómo recolectar todos los registros de logs en sus instancias de contenedor EC2, puede utilizar Amazon ECS logs collector. Está disponible en GitHub para Linux y Windows. El script recopila registros de logs generales del sistema operativo, los registros de log de agentes de contenedor de Docker y Amazon ECS, que pueden ser útiles para solucionar problemas de casos de AWS Support. También admite la habilitación del modo de depuración para el deamon de Docker y el agente de contenedor de Amazon ECS en variantes de Amazon Linux, como la AMI optimizada para Amazon ECS. Actualmente, Amazon ECS logs collector es compatible con sistemas operativos: Amazon Linux, Red Hat Enterprise Linux 7, Debian 8, Ubuntu 14.04 y Windows Server 2016.

Por otro lado, con el servicio de AWS CloudTrail puede obtener los logs de las acciones realizadas por un usuario, un rol o un servicio de AWS sobre Amazon ECS. Con la información recopilada por AWS CloudTrail, puede determinar la solicitud que se realizó a Amazon ECS, la dirección IP desde la que se realizó la solicitud, quién realizó la solicitud, cuándo se realizó y otros detalles adicionales.

¿Qué se registra?

A través de  Amazon CloudWatch Logs, recolecta los archivos de logs de los contenedores de las tareas de Amazon ECS.

Con Amazon ECS logs collector se recolectan logs generales del sistema operativo, los registros de log de agentes de contenedor de Docker y Amazon ECS. Con AWS CloudTrail puede obtener los logs de las acciones realizadas por un usuario, un rol o un servicio de AWS.

¿A dónde van?
Amazon CloudWatch Logs, bucket de Amazon S3 (en intervalos de entrega de 15 minutos) y servicios de terceros a través de controladores de logging soportados.

¿Están habilitados de forma predeterminada?
Sí, para el tipo de lanzamiento de Fargate. Para el tipo de lanzamiento EC2 requiere la configuración del agente de CloudWatch.

No, para el caso de Amazon ECS logs collector.

¿Cómo habilitar?
Logs y monitoreo en Amazon Elastic Container Service

Como habilitar ECS logs Collector

 

Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon Elastic Kubernetes Service (Amazon EKS) es un servicio administrado que puede utilizar para ejecutar Kubernetes en AWS sin necesidad de instalar, operar y mantener sus propios nodos o plano de control de Kubernetes. EKS ejecuta Kubernetes upstream y está certificado como compatible con Kubernetes para una experiencia predecible. También puede migrar fácilmente cualquier aplicación de Kubernetes estándar a EKS sin tener que refactorizar el código.

Es importante comprender que los clústeres de Amazon EKS constan de dos componentes principales: El plano de control de Amazon EKS y Nodos de Amazon EKS registrados al plano de control y que en términos de logs la arquitectura de Kubernetes define tres niveles distintos: logs del plano de control, logs de nodos, y logs de aplicación.

El registro de logs del plano de control de Amazon EKS proporciona registros de log de auditoría y diagnóstico directamente desde el plano de control de Amazon EKS a Amazon CloudWatch Logs. Estos logs le facilitan la seguridad y ejecución de sus clústeres, donde es posible seleccionar los tipos de logs exactos que necesita, estos se envían como streams de logs a un grupo de logs definido para cada clúster de Amazon EKS en Amazon CloudWatch. También puede habilitar o deshabilitar cada tipo de log por clúster, utilizando la Consola de administración de AWS, AWS CLI o mediante la API de Amazon EKS. Una vez habilitados, los registros se envían automáticamente desde el clúster de Amazon EKS a Amazon CloudWatch Logs en la misma cuenta.

Para el registro de logs de nodos de Amazon EKS y logs de aplicación recomendamos el uso de CloudWatch Container Insights para capturar registros de logs y métricas para Amazon EKS. Lo interesante de Container Insights es que hace uso de Fluent Bit o Fluentd para la captura de registros de logs en CloudWatch. Si no desea utilizar Container Insights con Fluent Bit o Fluentd para el registro de logs, puede capturar logs de los nodos y contenedores con el agente de CloudWatch instalado en los nodos de Amazon EKS. Los nodos de Amazon EKS son instancias EC2, lo que significa que como buena práctica deben ser incluidos como parte de los métodos de registro de logs de instancias para Amazon EC2 que haya decidido para su infraestructura. Si instala el agente de CloudWatch mediante Distributor y State Manager, los nodos de Amazon EKS también se incluirán en los procesos de instalación, configuración y actualización automática del agente de CloudWatch.

En caso que haya decidido incluir como parte del cómputo de su cluster de Amazon EKS, un perfil de AWS Fargate, es importante tener muy en cuenta que Amazon EKS con Fargate posee un enrutador de logs integrado, lo que significa que no hay contenedores adicionales (sidecar containers) que instalar o mantener. El enrutador de logs le permite utilizar la amplia gama de servicios de AWS para el análisis y el almacenamiento de logs. Puede incluso transmitir logs desde Fargate directamente a Amazon CloudWatch, Amazon Elasticsearch Service y destinos de Amazon Kinesis Data Firehose como Amazon S3, Amazon Kinesis Data Streams y herramientas de partners. Adicionalmente, Fargate utiliza una versión de AWS para Fluent Bit, una distribución de Fluent Bit administrada por AWS.

De manera complementaria, Amazon EKS está integrado con AWS CloudTrail, con lo cual se realizará un registro de las acciones realizadas por un usuario, un rol o un servicio de AWS en Amazon EKS. AWS CloudTrail captura todas las llamadas a la API para Amazon EKS como eventos. Las llamadas capturadas incluyen llamadas desde la consola de Amazon EKS y llamadas de código a las operaciones de la API de Amazon EKS.

¿Qué se registra? 

Los logs del plano de control de Amazon EKS corresponden a cada componente de kubernetes: Kubernetes API server component logs (api), Audit (audit), Authenticator (authenticator), Controller manager (controllerManager) y Scheduler (Scheduler). AWS CloudTrail registra las acciones realizadas por un usuario, un rol o un servicio de AWS. El registro de logs de nodos de Amazon EKS y logs de aplicación registran todos los logs de todos los contenedores de Kubernetes, los logs de los contenedores de la aplicación escriben en stdout o stderr, los logs de los contenedores del system de Kubernetes entre otros.

¿A dónde van?
Amazon CloudWatch Logs.

Amazon CloudWatch Container Insights.

Amazon EBS de las instancias EC2 que hacen parte del plano de datos del cluster.

¿Están habilitados de forma predeterminada?
No. los logs del plano de control deben ser habilitados segun los requerimiento de logs.

No. para Amazon EKS con AWS Fargate.

¿Cómo habilitar?

Como Habilitar y deshabilitar logs de plano de control de EKS

Logs de Fargate para Amazon EKS

Configuración de Fluent Bit para enviar logs a registros a Amazon CloudWatch Logs

 

AWS App2Container

AWS App2Container (A2C) es una herramienta de línea de comandos que se utiliza para modernizar las aplicaciones Java y .NET y convertirlas en aplicaciones de contenedores. A2C analiza y crea un inventario de todas las aplicaciones que se están ejecutando en máquinas virtuales, en instalaciones on-premise o en la nube.

Es importante comprender que A2C posee diferentes fases para el proceso de contenerización de aplicaciones: Inicialización, análisis, transformación e implementación. Los logs de App2Container generados en cada una de estas fases contienen un historial de la información y los mensajes de error que se generan con la ejecución de cada comando. Si decide por no recibir métricas durante la fase de inicialización, los mensajes de métricas también se registran en el archivo de logs de la aplicación local.

AWS App2Container se integra con FireLens que es un enrutador de logs de contenedores para Amazon ECS y AWS Fargate que mejora la extensibilidad para el almacenamiento y el análisis de logs. FireLens es compatible con Fluentd y Fluent Bit lo que significa que puede usar uno de los muchos plugins, incluso AWS para Fluent Bit, o incorporar su propio plugin de salida para Fluentd.

¿Qué se registra?

Dependiendo del sistema operativo en dónde esté ejecutando el comando de A2C se generan dos tipos de logs: Logs de aplicación y Logs de actualización. Si hay más de un archivo de logs, significa que el primer archivo de logs alcanzó su tamaño máximo y se creó un nuevo archivo de registro para continuar con el registro.

¿A dónde van?

Ubicaciones locales logs del sistema operativo nativo de la aplicación.

¿Están habilitados de forma predeterminada?

Sí. Para la generación de logs locales.

No. Para el enrutamiento de logs con Firelens

¿Cómo habilitar?

Configuración del enrutamiento de archivos de logs de FireLens para contenedores con AWS App2Container

 

AWS Fargate

AWS Fargate es un motor informático sin servidor que funciona tanto para Amazon Elastic Container Service (ECS) como para Amazon Elastic Kubernetes Service (EKS). Fargate tiene la ventaja de que permite centrarse en la creación de la lógica de sus aplicaciones y elimina la necesidad de aprovisionar y administrar servidores, adicionalmente permite especificar y pagar recursos por aplicación y mejora la seguridad mediante el aislamiento de aplicaciones que por diseño lo requieran.

En el caso de cómputo sin servidor (Serverless) para Amazon EKS con perfiles de Fargate, éste admite un enrutador de logs integrado, lo que significa que no hay contenedores adicionales (Sidecar containers) para instalar o mantener. El enrutador de logs le permite utilizar la amplia gama de servicios de AWS para el análisis y el almacenamiento de logs. Puede transmitir logs desde Fargate directamente a Amazon CloudWatch, Amazon Elasticsearch Service y destinos de Amazon Kinesis Data Firehose como Amazon S3, Amazon Kinesis Data Streams y herramientas de socios. Fargate utiliza una versión de AWS para Fluent Bit, una distribución de Fluent Bit administrada por AWS. Por lo anterior puede enviar logs al destino de su elección y para esto puede aplicar un ConfigMap al clúster de Amazon EKS con un valor de datos de Fluent Conf, que define a dónde se envían los logs del contenedor. Fluent Conf es parte de Fluent Bit, que es un lenguaje de configuración de procesador de registro rápido y liviano que se utiliza precisamente para enrutar los logs de contenedor al destino de logs seleccionado.

Cuando ejecuta sus tareas y servicios de Amazon ECS con el tipo de lanzamiento de Fargate o un proveedor de capacidad de Fargate, empaqueta su aplicación en contenedores, especifica los requisitos de CPU y memoria, define las políticas de redes e IAM y lanza la aplicación. Cada tarea de Fargate tiene su propio límite de aislamiento y no comparte el kernel subyacente, los recursos de la CPU, los recursos de memoria o la interfaz de red elástica con otra tarea. Puede configurar los contenedores en sus tareas para enviar información de logs a CloudWatch Logs. Esto le permite ver los registros de los contenedores en sus tareas de Fargate. Esto le ayuda a comenzar a usar el controlador de logs de awslogs en sus definiciones de tareas. Si está utilizando el tipo de lanzamiento de Fargate para sus tareas, todo lo que necesita hacer para habilitar el controlador de logs de awslogs es agregar los parámetros de configuración de registro necesarios a la definición de la tarea.

¿Qué se registra?

El tipo de información que registran los contenedores que se ejecutan en Fargate ya sea en las tareas ECS o los pods de EKS depende principalmente del comando ENTRYPOINT. De forma predeterminada, los registros que se capturan muestran la salida del comando que normalmente vería a través de terminal interactiva si ejecutara el contenedor localmente, que son los flujos de E/S STDOUT y STDERR.

¿A dónde van?

Amazon Cloudwatch logs

Amazon Elasticsearch Service

Amazon Kinesis Data Firehose

Amazon S3

Amazon Kinesis Data Streams

¿Están habilitados de forma predeterminada?

Si. para la generación de logs de contenedor.

No. para Amazon EKS con AWS Fargate.

No. para Amazon ECS con AWS Fargate.

¿Cómo habilitar?

Logs de Fargate para Amazon EKS

Uso del controlador de registros awslogs para Amazon ECS

 

Tecnología sin servidor (Serverless)

AWS Lambda

AWS Lambda le permite ejecutar código sin aprovisionar ni administrar servidores. Con Lambda, puede ejecutar código para casi cualquier tipo de aplicación o servicio de backend sin tener que realizar tareas de administración de infraestructura. Solo tiene que cargar el código y Lambda se encargará de todo lo necesario para ejecutar y escalar el código con alta disponibilidad. Puede configurar su código para que se active automáticamente desde otros servicios de AWS o realizar llamados directamente desde cualquier aplicación web o móvil. Actualmente, AWS Lambda es compatible de forma nativa con Java, Go, PowerShell, Node.js, C#, Python y el código Ruby, y proporciona una API de tiempo de ejecución que le permite utilizar cualquier lenguaje de programación adicional para crear sus funciones.

AWS Lambda monitorea automáticamente las funciones de Lambda, e informa sobre las métricas a través de Amazon CloudWatch. Para ayudarle a solucionar problemas relacionados con los errores de una función, Lambda registra todas las solicitudes gestionadas por la función, y almacena automáticamente los logs generados por el código a través de Amazon CloudWatch Logs.

Cabe destacar que cada lenguaje en tiempo de ejecución proporciona un mecanismo particular para que la función Lambda entregue logs a CloudWatch Logs. Aunque no se considera una práctica recomendada en la actualidad, es especialmente importante que los logs que cree encuentren el equilibrio adecuado de verbosidad para ayudar a rastrear y clasificar los problemas a medida que ocurren sin exigir demasiado tiempo de cálculo adicional para crearlos. Es recomendable que utilice las variables de entorno de Lambda para crear una variable LogLevel a la que pueda hacer referencia su función para determinar qué declaraciones de log crear en tiempo de ejecución.

Adicionalmente, puede enviar registros desde las funciones de AWS Lambda directamente a un destino de su elección mediante las extensiones de AWS Lambda. Las extensiones de Lambda son una forma para que herramientas de supervisión, observabilidad, seguridad y gobierno se integren fácilmente con AWS Lambda. Actualmente puede usar las extensiones de Lambda con las siguientes herramientas: Datadog, Lumigo, New Relic, Coralogix, Honeycomb, y Sumo Logic. También puede crear y utilizar sus propias extensiones de logs para integrar las herramientas de su organización.

Finalmente, puede ver los logs de las funciones de Lambda mediante la consola de Lambda, la consola de CloudWatch, el AWS Command Line Interface (AWS CLI) o la API de CloudWatch.

¿Qué se registra?

De forma predeterminada, los logs que se capturan muestran la salida de los flujos de E/S STDOUT y STDERR.

¿A dónde van?
Amazon CloudWatch Logs.

¿Están habilitados de forma predeterminada?
Sí.

¿Cómo habilitar?
Acceso a los logs de Amazon CloudWatch para AWS Lambda

 

Amazon API Gateway

Amazon API Gateway es un servicio de AWS para la creación, publicación, mantenimiento, monitoreo y protección de API REST, HTTP y WebSocket a cualquier escala. A través de Amazon API Gateway puede habilitar Amazon CloudWatch Logs para registrar las llamadas a la API y de esta manera ayudar a depurar problemas relacionados con la ejecución de solicitudes o el acceso del cliente a su API. Hay dos tipos de logs de API en CloudWatch: Logs de ejecución y Logs de acceso. En el log de ejecución, API Gateway administra los logs de CloudWatch. El proceso incluye la creación de grupos de logs y streaming de logs, y la notificación a las secuencias de logs que cualquier llamado (Requests y Responses). Los datos del log incluyen errores o trazas de ejecución (como cargas útiles o valores de parámetros de solicitud o respuesta), datos utilizados por los autorizadores de Lambda (antes conocidos como custom authorizer).

¿Qué se registra?

Hay dos tipos de logs de API en CloudWatch: Logs de ejecución y Logs de acceso. En el log de ejecución, API Gateway administra los logs de CloudWatch

¿A dónde van?
Amazon CloudWatch Logs

¿Están habilitados de forma predeterminada?
No.

¿Cómo habilitar?
Configuración del registro de Amazon CloudWatch para una API de REST en API Gateway

 

AWS Fargate

Ver sección Contenedores.

Amazon DynamoDB

Amazon DynamoDB es una base de datos de clave-valor y documentos que ofrece rendimiento en milisegundos de un solo dígito a cualquier escala. Se trata de una base de datos completamente administrada, de alta durabilidad, multi-activa y de operación multi-región que cuenta con copias de seguridad, restauración y seguridad integradas, así como almacenamiento de caché en memoria para aplicaciones a escala de internet. DynamoDB puede gestionar más de 10 mil millones de solicitudes por día y puede admitir picos de más de 20 millones de solicitudes por segundo.

Es importante comprender inicialmente cómo trabaja Amazon DynamoDB en términos de las categorías de operación. Las operaciones del plano de control le permiten crear y administrar tablas de DynamoDB. También le permiten trabajar con índices, flujos y otros objetos que dependen de tablas. Por otro lado, las operaciones del plano de datos le permiten realizar acciones de creación, lectura, actualización y eliminación (también llamadas CRUD) en los datos de una tabla. Algunas de las operaciones del plano de datos también le permiten leer datos de un índice secundario. Además, las operaciones de DynamoDB Streams le permiten habilitar o deshabilitar un flujo en una tabla y permitir el acceso a los registros de modificación de datos contenidos en un flujo y, finalmente, las operaciones de transacciones proporcionan atomicidad, consistencia, aislamiento y durabilidad (ACID), lo que le permite mantener la corrección de los datos en sus aplicaciones con mayor facilidad.

En términos de logs, DynamoDB está integrado con AWS CloudTrail. AWS CloudTrail captura todas las llamadas a la API para DynamoDB como eventos. Las llamadas capturadas incluyen llamadas desde la consola de DynamoDB y llamadas de código a las operaciones de la API de DynamoDB, utilizando tanto PartiQL como la API clásica. Si no configura un trail, aún puede ver los eventos más recientes en la consola de AWS CloudTrail a través del historial de eventos. Con la información recopilada por AWS CloudTrail, puede determinar la solicitud que se realizó a DynamoDB, la dirección IP desde la que se realizó la solicitud, quién realizó la solicitud, cuándo se realizó y detalles adicionales.

Adicionalmente, usted puede habilitar los logs de actividad del plano de datos para un monitoreo detallado de toda la actividad de Items de DynamoDB dentro de una tabla mediante AWS CloudTrail. Si es un administrador de base de datos o un profesional de la seguridad, usted puede utilizar esta información como parte de proceso de auditoría, para ayudar a abordar los requisitos de cumplimiento y supervisar qué usuarios, roles y permisos de AWS Identity and Access Management (IAM) se utilizan para acceder a los datos de la tabla. AWS CloudTrail publica los archivos de logs en un bucket de Amazon S3. Cada evento contiene información, como quién realizó una acción y cuándo, qué recursos se vieron afectados y muchos otros detalles. Los eventos se combinan en formato JSON y se guardan en archivos de logs de AWS CloudTrail. Con estos archivos, puede realizar un seguimiento y comprender cuándo, por ejemplo, un usuario de IAM accedió a información confidencial almacenada en una tabla de DynamoDB.

Para una supervisión y alertas sólidas, también puede integrar los eventos de CloudTrail con Amazon CloudWatch Logs con el ánimo de facilitar el análisis de la actividad de DynamoDB e identificar cambios en las actividades de la cuenta de AWS, así, puede consultar los registros de AWS CloudTrail con Amazon Athena. Por ejemplo, puede utilizar consultas para identificar tendencias y aislar aún más la actividad por atributos como la dirección IP de origen o el usuario.

¿Qué se registra?

Logs de las operaciones de plano de control, operaciones de plano de datos, operaciones de DynamoDB Streams, operaciones de transacciones.

¿A dónde van?
Amazon Simple Storage Service (Amazon S3) bucket

Amazon CloudWatch Logs

Amazon CloudWatch Events

AWS CloudTrail

¿Están habilitados de forma predeterminada?
No.

¿Cómo habilitar?

Registro de operaciones de DynamoDB mediante AWS CloudTrail

 

Amazon EventBridge

Amazon EventBridge es un servicio que da acceso en tiempo real a los cambios en los datos de los servicios de AWS, sus propias aplicaciones y las aplicaciones de Software como Servicio (SaaS) sin tener que escribir código. Para comenzar, puede elegir un origen de eventos en la consola de Amazon EventBridge y seleccionar un destino de una serie de servicios de AWS, incluso AWS Lambda, Amazon SNS y Amazon Kinesis Data Firehose y as entregar automáticamente los eventos casi en tiempo real.

Amazon EventBridge está integrado en AWS CloudTrail. CloudTrail captura las llamadas al API realizadas por o en nombre de su cuenta de AWS. Las llamadas capturadas incluyen las llamadas desde la consola de CloudWatch y las llamadas de código a las operaciones de la API de EventBridge. Si crea un trail, puede habilitar la entrega continua de eventos de CloudTrail a un bucket de Amazon S3, incluidos los eventos de EventBridge. Si no configura un trail, puede ver los eventos más recientes de la consola de CloudTrail en el Event history (Historial de eventos).

¿Qué se registra?

Mediante la información recopilada por CloudTrail, puede determinar la solicitud que se realizó a EventBridge, la dirección IP desde la que se realizó, quién la realizó y cuándo, etc.

¿A dónde van?

AWS CloudTrail.

¿Están habilitados de forma predeterminada?

Sí.  Los logs de AmazonEventBridge a CloudTrail están habilitados por defecto.

¿Cómo habilitar?

Registro y monitoreo en Amazon EventBridge

 

Conclusiones

Los logs contienen parte de la información más valiosa que puede recopilar y analizar sobre su infraestructura y aplicaciones. En medio de su contenido aparentemente aleatorio, puede haber trazas sobre el rendimiento, la seguridad, errores en el código, patrones de acceso y otros datos operativos donde con la implementación de buenas prácticas, pueden convertirse en la fuente número uno de información operativa y de negocio y mejorar la postura de seguridad en su organización. Por estas razones en este blogpost hemos mostrado la importancia de habilitar los logs en los servicios de AWS que pueden hacer parte de la arquitectura de sus aplicaciones.  También hemos visto las mejores prácticas para una estrategia de logging. Finalmente, hemos presentado los principales aspectos de logging, como por ejemplo qué información se registra, a dónde van los logs, si están habilitados de forma predeterminada o no, y enlaces hacia los principales mecanismos de configuración para los servicios de la cuenta de AWS (CloudTrail), cómputo, contenedores, y tecnología sin servidor.  En la siguiente entrega de este blogpost presentaremos estos aspectos para otras categorías de servicios de AWS.

 


Sobre los autores

 

Giovanni Rodríguez es Arquitecto de Soluciones en Amazon Web Services para el Sector Público.  Giovanni ha ayudado a múltiples entidades de gobierno, organizaciones no gubernamentales, y empresas privadas, en Latinoamérica, a cumplir con sus misiones y objetivos de negocio.  Le apasionan los temas de cloud, seguridad de la información, y analítica.

 

 

 

 

Jhon Guzmán es Arquitecto de Soluciones de Partners en Amazon Web Services para el Sector Público. Jhon ha ayudado a múltiples socios de negocio de AWS en Latinoamérica para la adopción de nuevas tecnologías e implementación de soluciones cloud en sus clientes.

 

 

 

 

Revisores Técnicos

Matias “Lechu” Siri es Arquitecto de Soluciones de Partners en Amazon Web Services. Lechu ha ayudado a múltiples AWS Partners en Latinoamérica para la adopción de nuevas tecnologías e implementación de soluciones cloud en sus clientes.

 

 

 

 

Carlos Balcázar es Arquitecto de Soluciones, ha apoyado a múltiples organizaciones de gobierno en su viaje a la nube.  Igualmente ha liderado empresas de tecnología en modelos ISV.