Analizza i log di accesso ai bucket con Amazon Athena in Lightsail - Amazon Lightsail

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

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.

Indice

Esecuzione di query sui log di accesso per le richieste tramite Amazon Athena

É 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 la posizione del bucket in una query Athena, devi formattare il nome del bucket di destinazione e il prefisso di destinazione a cui i log vengono recapitati come S3, come segue: URI s3://amzn-s3-demo-bucket1-logs/prefix/

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

  2. Nel Query Editor esegui un comando simile al seguente.

    create database bucket_access_logs_db
    Nota

    È consigliabile creare il database nello stesso modo in cui si utilizza il bucket S3. Regione AWS

  3. 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/'
  4. Nel riquadro di navigazione, in Database, scegliere il database.

  5. 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: mostra 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: mostra 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

È possibile utilizzare le query sui log di accesso per identificare le richieste di accesso agli oggetti, per operazioni quali GET, e PUTDELETE, e scoprire ulteriori informazioni su tali richieste.

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

Esempio: mostra tutti i richiedenti che inviano richieste di PUT 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')

Il seguente esempio di query di Amazon Athena mostra come ottenere tutte le richieste di GET oggetti per Amazon S3 dal log di accesso al server.

Esempio: mostra tutti i richiedenti che inviano richieste di GET 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 rivedere i risultati per chiamate PutObject o GetObject da indirizzi IP/richiedenti imprevisti o non autorizzati e per l'identificazione di eventuali richieste anonime ai bucket.

  • La query recupera solo le informazioni a partire dall'orario in cui è stata abilitata la registrazione.