DEV Community

Guillermo Ruiz for AWS Español

Posted on • Originally published at iaasgeek.com on

Configuración Rápida de CloudTrail en S3 Usando AWS CLI

En el mundo de AWS, CloudTrail es una herramienta esencial para monitorizar la actividad de nuestros recursos. Es la bitácora de todas las llamadas de API hechas en una cuenta de AWS. En este artículo, describiremos cómo habilitar CloudTrail en los buckets de S3 usando la interfaz de línea de comandos (CLI).

DISCLAIMER: Es importante señalar que aunque en el blog podamos mostrar comandos, scripts, u otros ejemplos de código como parte de las demostraciones o discusiones, estos se ofrecen únicamente con fines educativos y de entretenimiento. Utilice la información proporcionada bajo su propio riesgo.

Pasos para configurar CloudTrail con la CLI:

Paso 1. Instalar AWS CLI:

Si aún no tienes la AWS CLI instalada, puedes obtenerla desde el sitio oficial de AWS y seguir las instrucciones de instalación para tu sistema operativo. En esta entrada os contamos cómo hacerlo.

Paso 2. Configura AWS CLI:

Antes de comenzar, asegúrate de configurar la AWS CLI con tus credenciales. Utiliza el comando:

aws configure
Enter fullscreen mode Exit fullscreen mode

Sigue las instrucciones en pantalla para ingresar tu ID de clave de acceso, clave de acceso secreta, región y formato de salida.

AWS Access Key ID [None]: AIDAUDDLJ7UPL7GGL5GRE
AWS Secret Access Key [None]: <password_from_csv_file>
Default region name [None]: eu-south-1
Default output format [None]:
$
Enter fullscreen mode Exit fullscreen mode

Paso 3. Configura IAM para poder crear Trails:

Hacerlo a través de la AWS CLI implica usar comandos específicos para manipular y ajustar las políticas de IAM (Identity and Access Management). A continuación, os muestro cómo darle permiso al usuario para que pueda crear un trail en CloudTrail:

3.1 Creamos un archivo de política JSON. Guarda la política en un archivo llamado, por ejemplo, cloudtrail_create_permission.json:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "cloudtrail:CreateTrail",
            "Resource": "arn:aws:cloudtrail:eu-south-1:123456789:trail/nombre-de-tu-trail"
        }
    ]
}
Enter fullscreen mode Exit fullscreen mode

3.2 Creamos la política CloudTrailCreatePermission desde la CLI :

aws iam create-policy --policy-name CloudTrailCreatePermission --policy-document file://cloudtrail_create_permission.json
Enter fullscreen mode Exit fullscreen mode

3.3 Toma nota del ARN (Amazon Resource Name) de la política recién creada. Estará en la salida del comando anterior, algo así como: arn:aws:iam::123456789:policy/CloudTrailCreatePermission.

3.4 Adjunta la política a tu usuario :

aws iam attach-user-policy --user-name nombre-de-usuario --policy-arn arn:aws:iam::123456789:policy/CloudTrailCreatePermission
Enter fullscreen mode Exit fullscreen mode

Esto debería permitirte realizar la operación sin problemas. Sin embargo, recuerda siempre seguir las mejores prácticas y otorgar solo los permisos mínimos necesarios para realizar una tarea en particular. Es aconsejable evitar otorgar permisos excesivos que pueden llevar a problemas de seguridad.

Paso 3. Crear un bucket de S3 para CloudTrail:

Si aún no tienes un bucket de S3 donde guardar tus registros de CloudTrail, crea uno con:

aws s3api create-bucket --bucket nombre-de-tu-bucket --create-bucket-configuration LocationConstraint=eu-south-1
Enter fullscreen mode Exit fullscreen mode

La salida nos dará:

{
  "Location": "http://nombre-de-tu-bucket.s3.amazonaws.com"
}
Enter fullscreen mode Exit fullscreen mode

Nota: Cuando creas un bucket en la región us-east-1, no necesitas especificar la región LocationConstraint. Sin embargo, para todas las otras regiones, debes especificar el LocationConstraint apropiado para esa región, de lo contrario obtendrás el siguiente error:

An error occurred (IllegalLocationConstraintException) when calling the CreateBucket operation: The unspecified location constraint is incompatible for the region specific endpoint this request was sent to.
Enter fullscreen mode Exit fullscreen mode

Paso 4. Habilitar CloudTrail:

Utiliza el siguiente comando para crear un nuevo trail en CloudTrail que entregará los registros al bucket de S3 que especificaste:

aws cloudtrail create-trail --name NombreDelTrail --s3-bucket-name nombre-de-tu-bucket
Enter fullscreen mode Exit fullscreen mode

Nota: Si te has saltado el paso 3, lo más probable es que te encuentres con el siguiente error. Para corregirlo debes otorgar permisos (Paso 3):

An error occurred (AccessDeniedException) when calling the CreateTrail operation: User: arn:aws:iam::277116220702:user/s3-cli is not authorized to perform: cloudtrail:CreateTrail on resource: arn:aws:cloudtrail:eu-west-1:277116220702:trail/CloudTrailBlog because no identity-based policy allows the cloudtrail:CreateTrail action
Enter fullscreen mode Exit fullscreen mode

Paso 5. Iniciar el logging:

Una vez creado el trail, debes comenzar a grabar los eventos. Activa el trail con:

aws cloudtrail start-logging --name NombreDelTrail
Enter fullscreen mode Exit fullscreen mode

Paso 6. Verificar que el bucket esté grabando:

En último paso comprobaremos que todo está en orden:

aws s3api get-bucket-logging
  --bucket nombre-de-tu-bucket
  --query 'LoggingEnabled'
Enter fullscreen mode Exit fullscreen mode

¿Qué hacer si nuestro bucket no está grabando?

Si descubres que tu bucket S3 no está grabando logs (es decir, si el comando get-bucket-logging devuelve null), es porque no tienes habilitado el registro de acceso al servidor para ese bucket. Aquí hay unos pasos que puedes seguir para habilitarlo:

Crea una política de acceso para el registro : Para guardar registros de acceso, AWS requiere una política que otorgue permisos a Amazon S3 para escribir registros al target bucket. Puedes definir una política similar a la siguiente y guardarla en un archivo llamado logging-policy.json:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {"Service": "s3.amazonaws.com"},
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::nombre-de-tu-bucket/logs/*",
            "Condition": {
                "StringEquals": {
                    "s3:x-amz-acl": "bucket-owner-full-control"
                }
            }
        }
    ]
}
Enter fullscreen mode Exit fullscreen mode

Aplica la política al bucket :

aws s3api put-bucket-policy --bucket nombre-de-tu-bucket --policy file://logging-policy.json
Enter fullscreen mode Exit fullscreen mode

Habilita el registro de acceso al servidor : Puedes usar el siguiente comando para habilitar el registro de acceso al servidor:

aws s3api put-bucket-logging --bucket nombre-de-tu-bucket --bucket-logging-status file://logging-config.json
Enter fullscreen mode Exit fullscreen mode

Donde logging-config.json contiene:

{
  "LoggingEnabled": {
    "TargetBucket": "nombre-de-tu-bucket",
    "TargetPrefix": "logs/"
  }
}
Enter fullscreen mode Exit fullscreen mode

Con estos pasos, habrás habilitado el registro de acceso para tu bucket S3. Es importante revisar regularmente estos registros para monitorizar el acceso y las actividades en tu bucket.

Conclusión:

Habilitar CloudTrail para monitorear la actividad en tus recursos de AWS es un paso esencial para asegurar y auditar tu infraestructura en la nube. La CLI de AWS facilita esta tarea, permitiéndonos configurar CloudTrail con solo unos pocos comandos. Ya estamos listos para el siguiente paso, auditar los logs en S3!

Referencias:

Top comments (0)