

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Analizza i log di accesso ai bucket con Amazon Athena in Lightsail
<a name="amazon-lightsail-using-bucket-access-logs"></a>

In questa guida viene illustrato come identificare le richieste ad un bucket utilizzando i log di accesso. Per ulteriori informazioni, consulta [Log di accesso a un bucket](amazon-lightsail-bucket-access-logs.md).

**Indice**
+ [Esecuzione di query sui log di accesso per le richieste tramite Amazon Athena](#querying-access-logs-for-requests)
+ [Identificazione delle richieste di accesso agli oggetti tramite i log di accesso di Amazon S3](#identifying-object-access-requests)

## Esecuzione di query sui log di accesso per le richieste tramite Amazon Athena
<a name="querying-access-logs-for-requests"></a>

É possibile utilizzare Amazon Athena per interrogare e identificare le richieste di un bucket nei registri di accesso.

Lightsail archivia i log di accesso come oggetti in un bucket Lightsail. Spesso è più semplice utilizzare uno strumento in grado di analizzare i log. Athena supporta l'analisi di oggetti e può essere utilizzato per eseguire query sui log degli accessi..

**Esempio**

L'esempio seguente mostra come eseguire query sui log degli accessi al server del bucket in Amazon Athena.

**Nota**  
Per specificare una posizione in un query Athena, è necessario formattare il nome del bucket di destinazione e il prefisso di destinazione in cui i log vengono recapitati come URI S3, come segue: `s3://amzn-s3-demo-bucket1-logs/prefix/`

1. Apri la console Athena all'indirizzo [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/).

1. Nel **Query Editor** esegui un comando simile al seguente.

   ```
   create database bucket_access_logs_db
   ```
**Nota**  
È consigliabile creare il database nello stesso bucket S3. Regione AWS 

1. Nel **Query Editor** eseguire un comando simile al seguente per creare uno schema di tabella nel database creato nella fase 2. I valori dei tipi di dati `STRING` e `BIGINT` sono le proprietà del log di accesso. È possibile eseguire query su queste proprietà in Athena. Per `LOCATION`, immettere il percorso del prefisso e il bucket come indicato precedentemente.

   ```
   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. Nel riquadro di navigazione, in **Database**, scegliere il database.

1. In **Tables (Tabelle)**, scegliere **Preview table (Anteprima tabella)** accanto al nome della tabella.

   Nel pannello **Results (Risultati)**, dovrebbero essere visualizzati i dati dai log di accesso al server, come `bucketowner`, `bucket`, `requestdatetime` e così via. Questo indica che la tabella Athena è stata creata correttamente. È ora possibile eseguire query sui log di accesso al server del bucket.

**Esempio: Visualizza chi ha eliminato un oggetto e quando (timestamp, indirizzo IP e utente 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%';
```

**Esempio: Visualizza tutte le operazioni eseguite da un utente IAM**

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

**Esempio: Visualizza tutte le operazioni eseguite su un oggetto in un periodo di tempo specifico**

```
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');
```

**Esempio: Visualizza la quantità di dati trasferiti da un indirizzo IP specifico in un determinato periodo di tempo**

```
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');
```

## Identificazione delle richieste di accesso agli oggetti tramite i log di accesso di Amazon S3
<a name="identifying-object-access-requests"></a>

È possibile utilizzare le query sui log di accesso per operazioni quali *GET*, *PUT* e *DELETE* e per reperire ulteriori informazioni su tali richieste.

L'esempio di query Amazon Athena seguente mostra come ottenere tutte le `PUT`richieste per un bucket dal log degli accessi al server.

**Esempio: Visualizza tutti i richiedenti che inviano richieste PUT per oggetti in un determinato periodo**

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

L'esempio di query Amazon Athena seguente mostra come ottenere tutte le richieste GET di oggetti per Amazon S3 dal log degli accessi al server.

**Esempio: Visualizza tutti i richiedenti che inviano richieste GET per oggetti in un determinato periodo**

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

L'esempio di query Amazon Athena seguente mostra come ottenere tutte le richieste anonime ai bucket S3 dal log degli accessi al server.

**Esempio: Visualizza tutti i richiedenti anonimi che effettuano richieste a un bucket in un determinato periodo**

```
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**  
È possibile modificare l'intervallo di data in base alle esigenze.
Questi esempi di query possono essere utili anche per il monitoraggio della sicurezza. Puoi esaminare i risultati `PutObject` o le `GetObject` chiamate provenienti da un IP imprevisto o non autorizzato addresses/requesters e identificare eventuali richieste anonime dirette ai tuoi bucket.
La query recupera solo le informazioni a partire dall'orario in cui è stata abilitata la registrazione.