Configuración Rápida de CloudTrail en S3 Usando AWS CLI
Tags: aws, cibersecurity, cli
Published: 2023-09-05 21:30:12

---
title: Configuración Rápida de CloudTrail en S3 Usando AWS CLI
published: true
date: 2023-09-05 10:10:34 UTC
tags: AWS,aws,cibersecurity,cli
canonical_url: https://iaasgeek.com/2023/08/configuracion-rapida-de-cloudtrail-en-s3-usando-aws-cli/
series: AWS Security desde la 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:

![](https://iaasgeek.com/wp-content/uploads/2023/08/Blog-CloudTrail-S3.jpg)

**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](https://dev.to/aws-espanol/ampliando-la-vida-util-de-tu-pre-sign-url-en-s3-hasta-7-dias-5b25) 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
```

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]:
$
```

**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"
        }
    ]
}
```

**3.2 Creamos la política _CloudTrailCreatePermission_ desde la CLI** :

```
aws iam create-policy --policy-name CloudTrailCreatePermission --policy-document file://cloudtrail_create_permission.json
```

**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
```

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
```

La salida nos dará:

```
{
  "Location": "http://nombre-de-tu-bucket.s3.amazonaws.com"
}
```

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

**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
```

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
```

**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
```

**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'
```

**¿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"
                }
            }
        }
    ]
}
```

**Aplica la política al bucket** :

```
aws s3api put-bucket-policy --bucket nombre-de-tu-bucket --policy file://logging-policy.json
```

**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
```

Donde `logging-config.json` contiene:

```
{
  "LoggingEnabled": {
    "TargetBucket": "nombre-de-tu-bucket",
    "TargetPrefix": "logs/"
  }
}
```

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:**

- https://docs.aws.amazon.com/AmazonS3/latest/userguide/enable-server-access-logging.html
- https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-create-and-update-a-trail-by-using-the-aws-cli.html