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/
-
Abra o console do Athena em https://console.aws.amazon.com/athena/
. -
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.
-
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
eBIGINT
são propriedades do log de acesso. É possível consultar essas propriedades no Athena. ParaLOCATION
, 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/
' -
No painel de navegação, em Database (Banco de dados), escolha o banco de dados.
-
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
ouGetObject
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.