

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Analise os registros de acesso ao bucket com o Amazon Athena no Lightsail
<a name="amazon-lightsail-using-bucket-access-logs"></a>

Neste guia, mostraremos como identificar solicitações para um bucket usando logs de acesso. Para obter mais informações, consulte [Bucket access logs](amazon-lightsail-bucket-access-logs.md).

**Índice**
+ [Consultar logs de acesso para solicitações usando o Amazon Athena](#querying-access-logs-for-requests)
+ [Identificar solicitações de acesso ao objeto usando logs de acesso do Amazon S3](#identifying-object-access-requests)

## Consultar logs de acesso para solicitações usando o Amazon Athena
<a name="querying-access-logs-for-requests"></a>

Você pode usar o Amazon Athena para consultar e identificar solicitações para um bucket em logs de acesso.

O Lightsail armazena registros de acesso como objetos em um bucket do Lightsail. Muitas vezes, é mais fácil usar uma ferramenta capaz de analisar os logs. O Athena suporta a análise de objetos e pode ser usado para consultar logs de acesso.

**Exemplo**

O exemplo a seguir mostra como você pode consultar os logs de acesso do servidor do bucket no Amazon Athena.

**nota**  
Para especificar uma localização do bucket em uma consulta do Athena, é necessário formatar o nome do bucket de destino e o prefixo de destino onde os logs são entregues como um URI do S3, da seguinte forma: `s3://amzn-s3-demo-bucket1-logs/prefix/`

1. Abra o console do Athena em [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/).

1. No **Editor de consultas**, execute um comando semelhante ao seguinte.

   ```
   create database bucket_access_logs_db
   ```
**nota**  
É uma prática recomendada criar o banco de dados da Região da AWS mesma forma que seu bucket do S3.

1. No **Editor de consultas**, execute um comando semelhante ao seguinte para criar um esquema de tabela no banco de dados criado na etapa 2. Os valores dos tipo de dados `STRING` e `BIGINT` são propriedades do log de acesso. É possível consultar essas propriedades no Athena. Para `LOCATION`, insira o bucket e o caminho do prefixo conforme indicado 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. No painel de navegação, em **Database (Banco de dados)**, escolha o banco de dados.

1. Em **Tables (Tabelas)**, selecione **Preview table (Visualizar tabela)** ao lado do nome da tabela.

   No painel **Results (Resultados)**, você deve ver dados dos logs de acesso ao servidor, como `bucketowner`, `bucket`, `requestdatetime` e assim por diante. Isso significa que você criou a tabela do Athena com êxito. Agora você pode consultar os logs de acesso ao servidor do bucket.

**Exemplo – Mostrar quem excluiu um objeto e quando (carimbo de data/hora, endereço IP e usuário do 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%';
```

**Exemplo – Mostrar todas as operações que foram realizadas por um usuário do IAM**

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

**Exemplo – Mostrar todas as operações que foram realizadas em um objeto em um determinado período de tempo**

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

**Exemplo – Mostrar a quantidade de dados transferidos por um endereço IP específico em um determinado período de 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');
```

## Identificar solicitações de acesso ao objeto usando logs de acesso do Amazon S3
<a name="identifying-object-access-requests"></a>

É possível usar consultas em logs de acesso para identificar solicitações de acesso ao objeto para operações como *GET*, *PUT* e *DELETE*, e descobrir mais informações sobre essas solicitações.

O seguinte exemplo de consulta do Amazon Athena mostra como obter todas as solicitações de objeto `PUT` para um bucket com base no log de acesso ao servidor.

**Exemplo – Mostrar todos os solicitantes que estão enviando solicitações de objeto PUT em um determinado período**

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

O exemplo de consulta do Amazon Athena a seguir mostra como obter todas as solicitações de objeto GET para o Amazon S3 a partir do log de acesso ao servidor.

**Exemplo – Mostrar todos os solicitantes que estão enviando solicitações de objeto GET em um determinado período**

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

O exemplo de consulta do Amazon Athena a seguir mostra como obter todas as solicitações anônimas ao seu bucket do S3 do log de acesso ao servidor.

**Exemplo – Mostrar todos os solicitantes anônimos que estão fazendo solicitações a um bucket em um determinado período**

```
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**  
É possível modificar o intervalo de datas para atender às suas necessidades.
Esses exemplos de consulta também podem ser úteis para o monitoramento de segurança. Você pode analisar os resultados `PutObject` ou as `GetObject` chamadas de um IP inesperado ou não autorizado addresses/requesters e identificar quaisquer solicitações anônimas para seus buckets.
Essa consulta recupera somente informações do momento no qual o registro estava habilitado.