

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Analice los registros de acceso a los buckets con Amazon Athena en Lightsail
<a name="amazon-lightsail-using-bucket-access-logs"></a>

En esta guía, le mostramos cómo identificar las solicitudes a un bucket con los registros de acceso. Para obtener más información, consulte [Registros de acceso al bucket](amazon-lightsail-bucket-access-logs.md).

**Contenido**
+ [Consultar los registros de acceso para solicitudes mediante Amazon Athena](#querying-access-logs-for-requests)
+ [Identificación de solicitudes de acceso a objetos mediante registros de acceso de Amazon S3](#identifying-object-access-requests)

## Consultar los registros de acceso para solicitudes mediante Amazon Athena
<a name="querying-access-logs-for-requests"></a>

Puede utilizar Amazon Athena para consultar e identificar las solicitudes a un bucket en los registros de acceso.

Lightsail almacena los registros de acceso como objetos en un depósito de Lightsail. Suele ser más fácil utilizar una herramienta que pueda analizar los registros. Athena es compatible con el análisis de objetos y se puede utilizar para consultar los registros de acceso.

**Ejemplo**

El siguiente ejemplo muestra cómo puede consultar los registros de acceso al servidor de buckets en Amazon Athena.

**nota**  
Para especificar la ubicación de un bucket en una consulta de Athena, debe formatear el nombre del bucket de destino y el prefijo de destino donde los registros se entregan como un URI S3, de la siguiente manera: `s3://{{amzn-s3-demo-bucket1}}-logs/prefix/`

1. Abra la consola Athena en [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/).

1. En el **Editor de consultas**, ejecute un comando similar al siguiente.

   ```
   create database bucket_access_logs_db
   ```
**nota**  
Se recomienda crear la base de datos en el mismo lugar que el bucket de S3 Región de AWS .

1. En el **Editor de consultas**, ejecute un comando similar al siguiente para crear un esquema de tabla en la base de datos que creó en el paso 2. Los valores con los tipos de datos `STRING` y `BIGINT` son las propiedades del registro de acceso. Puede consultar estas propiedades en Athena. Para `LOCATION`, ingrese el bucket y la ruta del prefijo como se indicó anteriormente.

   ```
   CREATE EXTERNAL TABLE `s3_access_logs_db.amzn-s3-demo-bucket_logs`(
     `bucketowner` STRING, 
     `bucket_name` STRING, 
     `requestdatetime` STRING, 
     `remoteip` STRING, 
     `requester` STRING, 
     `requestid` STRING, 
     `operation` STRING, 
     `key` STRING, 
     `request_uri` STRING, 
     `httpstatus` STRING, 
     `errorcode` STRING, 
     `bytessent` BIGINT, 
     `objectsize` BIGINT, 
     `totaltime` STRING, 
     `turnaroundtime` STRING, 
     `referrer` STRING, 
     `useragent` STRING, 
     `versionid` STRING, 
     `hostid` STRING, 
     `sigv` STRING, 
     `ciphersuite` STRING, 
     `authtype` STRING, 
     `endpoint` STRING, 
     `tlsversion` STRING)
   ROW FORMAT SERDE 
     'org.apache.hadoop.hive.serde2.RegexSerDe' 
   WITH SERDEPROPERTIES ( 
     'input.regex'='([^ ]*) ([^ ]*) \\[(.*?)\\] ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) (\"[^\"]*\"|-) (-|[0-9]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) (\"[^\"]*\"|-) ([^ ]*)(?: ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*))?.*$') 
   STORED AS INPUTFORMAT 
     'org.apache.hadoop.mapred.TextInputFormat' 
   OUTPUTFORMAT 
     'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
   LOCATION
     '{{s3://amzn-s3-demo-bucket1-logs/prefix/}}'
   ```

1. En el panel de navegación, en **Database (Base de datos)**, elija la base de datos.

1. En **Tables (Tablas)**, elija **Preview table (Vista previa de tabla)** junto al nombre de la tabla.

   En el panel **Results (Resultados)**, debería ver los datos de los registros de acceso del servidor, como `bucketowner`, `bucket`, `requestdatetime`, etc. Esto significa que ha creado correctamente la tabla de Athena. Ahora puede consultar los registros de acceso del servidor del bucket.

**Ejemplo: mostrar quién eliminó un objeto y cuándo (marca temporal, dirección IP y usuario de IAM)**

```
SELECT RequestDateTime, RemoteIP, Requester, Key 
FROM s3_access_logs_db.amzn-s3-demo-bucket_logs 
WHERE key = 'images/picture.jpg' AND operation like '%DELETE%';
```

**Ejemplo: mostrar todas las operaciones realizadas por un usuario de IAM**

```
SELECT * 
FROM s3_access_logs_db.amzn-s3-demo-bucket_logs 
WHERE requester='arn:aws:iam::123456789123:user/user_name';
```

**Ejemplo: mostrar todas las operaciones realizadas en un objeto en un periodo de tiempo específico**

```
SELECT *
FROM s3_access_logs_db.amzn-s3-demo-bucket_logs
WHERE Key='prefix/images/picture.jpg' 
    AND parse_datetime(RequestDateTime,'dd/MMM/yyyy:HH:mm:ss Z')
    BETWEEN parse_datetime('2017-02-18:07:00:00','yyyy-MM-dd:HH:mm:ss')
    AND parse_datetime('2017-02-18:08:00:00','yyyy-MM-dd:HH:mm:ss');
```

**Ejemplo: mostrar la cantidad de datos transferidos por una dirección IP específica en un periodo de tiempo específico**

```
SELECT SUM(bytessent) AS uploadTotal,
      SUM(objectsize) AS downloadTotal,
      SUM(bytessent + objectsize) AS Total
FROM s3_access_logs_db.amzn-s3-demo-bucket_logs
WHERE RemoteIP='1.2.3.4'
AND parse_datetime(RequestDateTime,'dd/MMM/yyyy:HH:mm:ss Z')
BETWEEN parse_datetime('2017-06-01','yyyy-MM-dd')
AND parse_datetime('2017-07-01','yyyy-MM-dd');
```

## Identificación de solicitudes de acceso a objetos mediante registros de acceso de Amazon S3
<a name="identifying-object-access-requests"></a>

Puede usar consultas en registros de acceso para identificar las solicitudes de acceso a objetos, para operaciones como *GET*, *PUT* y *DELETE*, y obtener información sobre esas solicitudes.

El siguiente ejemplo de consulta de Amazon Athena muestra cómo obtener todas las solicitudes de objetos `PUT` para un bucket desde el registro de acceso del servidor.

**Ejemplo: mostrar todos los solicitantes que envían solicitudes de objetos PUT en un periodo determinado**

```
SELECT Bucket, Requester, RemoteIP, Key, HTTPStatus, ErrorCode, RequestDateTime
FROM s3_access_logs_db
WHERE Operation='REST.PUT.OBJECT' AND
parse_datetime(RequestDateTime,'dd/MMM/yyyy:HH:mm:ss Z') 
BETWEEN parse_datetime('2019-07-01:00:42:42','yyyy-MM-dd:HH:mm:ss')
AND 
parse_datetime('2019-07-02:00:42:42','yyyy-MM-dd:HH:mm:ss')
```

El siguiente ejemplo de consulta de Amazon Athena muestra cómo obtener todas las solicitudes de objetos GET para Amazon S3 desde el registro de acceso al servidor.

**Ejemplo: mostrar todos los solicitantes que envían solicitudes de objetos GET en un periodo determinado**

```
SELECT Bucket, Requester, RemoteIP, Key, HTTPStatus, ErrorCode, RequestDateTime
FROM s3_access_logs_db
WHERE Operation='REST.GET.OBJECT' AND
parse_datetime(RequestDateTime,'dd/MMM/yyyy:HH:mm:ss Z') 
BETWEEN parse_datetime('2019-07-01:00:42:42','yyyy-MM-dd:HH:mm:ss')
AND 
parse_datetime('2019-07-02:00:42:42','yyyy-MM-dd:HH:mm:ss')
```

La siguiente consulta de ejemplo de Amazon Athena muestra cómo obtener todas las solicitudes anónimas realizadas a los buckets de S3 desde el registro de acceso al servidor.

**Ejemplo: mostrar todos los solicitantes anónimos que hacen solicitudes a un bucket en un periodo determinado**

```
SELECT Bucket, Requester, RemoteIP, Key, HTTPStatus, ErrorCode, RequestDateTime
FROM s3_access_logs_db.amzn-s3-demo-bucket_logs
WHERE Requester IS NULL AND
parse_datetime(RequestDateTime,'dd/MMM/yyyy:HH:mm:ss Z') 
BETWEEN parse_datetime('2019-07-01:00:42:42','yyyy-MM-dd:HH:mm:ss')
AND 
parse_datetime('2019-07-02:00:42:42','yyyy-MM-dd:HH:mm:ss')
```

**nota**  
Puede modificar el intervalo de fechas para adaptarlo a sus necesidades.
Estos ejemplos de consulta también pueden ser útiles para la monitorización de la seguridad. Puedes revisar los resultados `PutObject` o las `GetObject` llamadas desde direcciones IP inesperadas o no autorizadas addresses/requesters y para identificar cualquier solicitud anónima a tus depósitos.
Esta consulta solo recupera información de la hora a la que se habilitó el registro.