Analise os registros de acesso ao bucket com o Amazon Athena no Lightsail - Amazon Lightsail

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

Neste guia, mostraremos como identificar solicitações para um bucket usando logs de acesso. Para obter mais informações, consulte Bucket access logs.

Índice

Consultar logs de acesso para solicitações usando o Amazon Athena

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 a localização do bucket em uma consulta do Athena, você precisa formatar o nome do bucket de destino e o prefixo de destino em que seus registros são entregues como S3URI, da seguinte maneira: s3://amzn-s3-demo-bucket1-logs/prefix/

  1. Abra o console do Athena em https://console.aws.amazon.com/athena/.

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

  3. 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/'
  4. No painel de navegação, em Database (Banco de dados), escolha o banco de dados.

  5. 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 (data e hora, endereço IP e IAM usuário)

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 IAM usuário

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

Você pode usar consultas em registros de acesso para identificar solicitações de acesso a objetos, 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 PUT objetos 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 GET objetos para o Amazon S3 do log de acesso ao servidor.

Exemplo — Mostrar todos os solicitantes que estão enviando solicitações de GET objetos 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 ver os resultados de chamadas PutObject ou GetObject de solicitantes/endereços IP inesperados ou não autorizados e identificar solicitações anônimas ao seu bucket.

  • Essa consulta recupera somente informações do momento no qual o registro estava habilitado.