Registrar em log as solicitações com registro em log de acesso ao servidor
O registro em log de acesso ao servidor fornece detalhes sobre as solicitações que são feitas a um bucket. Os logs de acesso ao servidor são úteis para muitos aplicativos. Por exemplo, as informações do log de acesso podem ser úteis em auditorias de segurança e acesso. Essas informações também podem ajudar você a conhecer sua base de clientes e entender a cobrança do Amazon S3.
nota
Os logs de acesso ao servidor não registram informações sobre erros de redirecionamento a regiões erradas para regiões lançadas após 20 de março de 2019. Erros de redirecionamento para regiões erradas ocorrem quando uma solicitação para um objeto ou bucket é feita fora da região em que o bucket existe.
Como faço para habilitar a entrega de logs?
Para habilitar a entrega de logs, execute as seguintes etapas básicas. Para obter detalhes, consulte Habilitar o log de acesso ao servidor do Amazon S3.
-
Forneça o nome do bucket de destino (também conhecido como bucket de destino). Esse bucket é onde você deseja que o Amazon S3 salve os logs de acesso como objetos. Os buckets de origem e de destino devem estar na mesma Região da AWS e pertencer à mesma conta. O bucket de destino não pode ter uma configuração de período de retenção padrão da funcionalidade Bloqueio de Objetos do S3. O bucket de destino também não pode ter a opção Pagamento pelo solicitante habilitada.
Os logs podem ser entregues a qualquer bucket que você possui e que esteja na mesma região que o bucket de origem, incluindo o próprio bucket de origem. No entanto, para um gerenciamento de logs mais simples, recomendamos que você salve logs de acesso em um bucket diferente.
Quando o bucket de origem e o bucket de destino são os mesmos, logs adicionais serão criados para os logs que forem gravados no bucket, o que criará um ciclo infinito de logs. Não recomendamos fazer isso, pois pode gerar um pequeno aumento na cobrança do armazenamento. Além disso, com os logs adicionais sobre logs, pode ser mais difícil encontrar o log que você está procurando.
Se você optar por salvar os logs de acesso no bucket de origem, recomendamos que especifique um prefixo de destino (também conhecido como prefixo-alvo) para todas as chaves de objeto de log. Quando você especifica um prefixo, todos os nomes de objeto de log começam com uma string comum, o que facilita a identificação dos objetos de log.
-
(Opcional) Atribua um prefixo de destino a todas as chaves de objeto de log do Amazon S3. O prefixo de destino (também conhecido como prefixo-alvo) facilita a localização de objetos de log. Por exemplo, se você especificar o valor do prefixo
logs/
, cada objeto de log criado pelo Amazon S3 começará com o prefixologs/
na sua chave, por exemplo:logs/2013-11-01-21-32-16-E568B2907131C0C0
Se você especificar o valor de prefixo
logs
, o objeto de log será exibido da seguinte forma:logs2013-11-01-21-32-16-E568B2907131C0C0
Os prefixos também são úteis para distinguir entre buckets de origem quando vários buckets são registrados em log no mesmo bucket de destino.
Esse prefixo também ajuda ao excluir os logs. Por exemplo, você pode definir uma regra de configuração do ciclo de vida para que o Amazon S3 exclua objetos com um prefixo específico. Para obter mais informações, consulte Exclusão de arquivos de log do Amazon S3.
-
(Opcional) Defina permissões para que outros possam acessar os logs gerados. Por padrão, somente o proprietário do bucket sempre tem acesso completo aos objetos de log. Se o bucket de destino usam a configuração Imposto pelo proprietário do bucket para a Propriedade de Objetos do S3 a fim de desabilitar as listas de controle de acesso (ACLs), você não pode conceder permissões nas concessões de destino (também chamadas de concessões-alvo) que usam ACLs. Porém, você pode atualizar a política do bucket de destino para conceder acesso a outros. Para ter mais informações, consulte Gerenciamento de identidade e acesso para o Amazon S3 e Permissões para entrega de logs.
-
(Opcional) Defina um formato de chave de objeto de log para os arquivos de log. Você tem duas opções para o formato da chave de objeto de log (também conhecido como formato da chave de objeto-alvo):
-
Particionamento não baseado em data: esse é o formato original da chave de objeto de log. Se você escolher esse formato, o formato da chave de arquivo de log será exibido da seguinte forma:
[DestinationPrefix][YYYY]-[MM]-[DD]-[hh]-[mm]-[ss]-[UniqueString]
Por exemplo, se você especificar
logs/
como prefixo, os objetos de log serão nomeados assim:logs/2013-11-01-21-32-16-E568B2907131C0C0
-
Particionamento baseado em data: se você escolher o particionamento baseado em data, poderá escolher a hora do evento ou a hora de entrega do arquivo de log como a fonte de data usada no formato do log. Esse formato facilita a consulta dos logs.
Se você escolher o particionamento baseado em data, o formato da chave de arquivo de log será exibido da seguinte forma:
[DestinationPrefix][SourceAccountId]/[SourceRegion]/[SourceBucket]/[YYYY]/[MM]/[DD]/[YYYY]-[MM]-[DD]-[hh]-[mm]-[ss]-[UniqueString]
Por exemplo, se você especificar
logs/
como prefixo-alvo, os objetos de log serão nomeados assim:logs/123456789012/us-west-2/DOC-EXAMPLE-SOURCE-BUCKET/2023/03/01/2023-03-01-21-32-16-E568B2907131C0C0
Para a entrega na hora de entrega, a hora nos nomes de arquivo de log corresponde à hora de entrega dos arquivos de log.
Para a entrega na hora do evento, o ano, o mês e o dia correspondem ao dia em que o evento ocorreu, e a hora, os minutos e os segundos são definidos como
00
na chave. Os logs entregues nesses arquivos de log são somente para um dia específico.
Se você estiver configurando os logs por meio da AWS Command Line Interface (AWS CLI), AWS SDKs ou API REST do Amazon S3, use
TargetObjectKeyFormat
para especificar o formato da chave de objeto de log. Para especificar o particionamento não baseado em data, useSimplePrefix
. Para especificar o particionamento baseado em data, usePartitionedPrefix
. Se você usarPartitionedPrefix
, usePartitionDateSource
para especificarEventTime
ouDeliveryTime
.Para
SimplePrefix
, o formato da chave de arquivo de log aparece da seguinte forma:[TargetPrefix][YYYY]-[MM]-[DD]-[hh]-[mm]-[ss]-[UniqueString]
Para
PartitionedPrefix
com hora do evento ou hora da entrega, o formato da chave de arquivo de log aparece da seguinte forma:[TargetPrefix][SourceAccountId]/[SourceRegion]/[SourceBucket]/[YYYY]/[MM]/[DD]/[YYYY]-[MM]-[DD]-[hh]-[mm]-[ss]-[UniqueString]
-
Formato da chave de objeto de log
O Amazon S3 usa os seguintes formatos de chave de objeto para os objetos de log carregados no bucket de destino:
-
Particionamento não baseado em data: esse é o formato original da chave de objeto de log. Se você escolher esse formato, o formato da chave de arquivo de log será exibido da seguinte forma:
[DestinationPrefix][YYYY]-[MM]-[DD]-[hh]-[mm]-[ss]-[UniqueString]
-
Particionamento baseado em data: se você escolher o particionamento baseado em data, poderá escolher a hora do evento ou a hora de entrega do arquivo de log como a fonte de data usada no formato do log. Esse formato facilita a consulta dos logs.
Se você escolher o particionamento baseado em data, o formato da chave de arquivo de log será exibido da seguinte forma:
[DestinationPrefix][SourceAccountId]/[SourceRegion]/[SourceBucket]/[YYYY]/[MM]/[DD]/[YYYY]-[MM]-[DD]-[hh]-[mm]-[ss]-[UniqueString]
Na chave de objeto de log, YYYY
, MM
, DD
, hh
, mm
e ss
são os dígitos do ano, mês, dia, hora, minutos e segundos (respectivamente). Essas datas e horas estão em Tempo Universal Coordenado (UTC).
Um arquivo de log entregue em um horário específico pode conter registros gravados a qualquer momento até aquele horário. Não há como saber se todos os logs de um certo intervalo de tempo foram entregues ou não.
O componente UniqueString
da chave existe para impedir que arquivos sejam substituídos por outros. Ele não tem significado, e o software de processamento de logs deve ignorá-lo.
Como os logs são entregues?
O Amazon S3 coleta periodicamente os registros de log de acesso, consolida-os em arquivos de log e faz upload desses arquivos no bucket de destino como objetos de log. Caso o registro em log esteja habilitado em diversos buckets de origem que identifiquem o mesmo bucket de destino, esse bucket de destino terá os logs de acesso de todos os buckets de origem. No entanto, cada objeto de log relata registros de log para um bucket de origem específico.
O Amazon S3 usa uma conta especial de entrega de logs para gravar logs de acesso ao servidor. Essas gravações estão sujeitas a restrições usuais de controle de acesso. Recomendamos atualizar a política do bucket de destino para conceder acesso à entidade principal de serviço do registro em log (logging.s3.amazonaws.com
) para entrega de logs de acesso. Você também pode conceder acesso para a entrega de logs de acesso ao grupo de entrega de logs do S3 por meio da lista de controle de acesso (ACL) do bucket. No entanto, não é recomendável conceder acesso ao grupo de entrega de logs do S3 usando a ACL do bucket.
Ao habilitar o registro em log de acesso ao servidor e conceder acesso para a entrega de logs de acesso por meio da política do bucket de destino, atualize a política para permitir acesso s3:PutObject
para a entidade principal de serviço do registro em log. Se você usar o console do Amazon S3 para habilitar o registro em log de acesso ao servidor, o console atualizará automaticamente a política do bucket de destino para conceder essas permissões à entidade principal de serviço do registro em log. Para obter mais informações sobre como conceder permissões para logs de acesso ao servidor, consulte Permissões para entrega de logs.
nota
O S3 não é compatível com a entrega de logs do CloudTrail ou logs de acesso ao servidor ao solicitante ou ao proprietário do bucket para solicitações de endpoint da VPC quando a política de endpoint da VPC as nega ou para solicitações que falham antes da política da VPC ser avaliada.
Configuração aplicada pelo proprietário do bucket em S3 Object Ownership
Se o bucket de destino usar a configuração Imposto pelo proprietário do bucket para a Propriedade de Objetos, as ACLs serão desabilitadas e não afetarão mais as permissões. É necessário atualizar a política do bucket de destino para conceder acesso à entidade principal de serviço do registro em log. Para obter informações sobre o Object Ownership, consulte Conceder acesso ao grupo de entrega de logs do S3 para registro em log de acesso ao servidor.
Entrega de logs do servidor de melhor esforço
Os registros de log de acesso ao servidor são entregues com base no melhor esforço. A maioria das solicitações para um bucket configurado corretamente para registro em log tem como resultado um registro do log entregue. A maioria dos registros de log é entregue dentro de algumas horas após o tempo em que forem registrados, mas eles podem ser entregues com mais frequência.
A integralidade e a pontualidade do registro em log do servidor não são garantidas. O registro de log de uma solicitação específica pode ser entregue muito depois de a solicitação ter sido realmente processada ou pode nem ser entregue. É possível que você até veja uma duplicação de um registro de log. A finalidade dos logs do servidor é proporcionar uma ideia da natureza do tráfego no bucket. Embora a perda ou a duplicação de registros de log sejam acontecimentos raros, esteja ciente de que o registro em log do servidor não tem como objetivo ser uma contabilidade completa de todas as solicitações.
Devido à natureza de melhor esforço do registro em log do servidor, os relatórios de uso podem incluir uma ou mais solicitações de acesso que não aparecem em um log do servidor entregue. Você pode encontrar esses relatórios de uso em Cost & usage reports no console do AWS Billing and Cost Management.
As alterações do status do registro de bucket em logs entram em vigor ao longo do tempo
As alterações no status do log de um bucket levam tempo para realmente afetar a entrega de arquivos de log. Por exemplo, se você habilitar o registro em log para um bucket, algumas solicitações feitas na hora seguinte poderão ser registradas, enquanto outras não. Suponha que você altere o bucket de destino para registro em log do bucket A para o bucket B. Durante a hora seguinte, alguns logs poderão continuar sendo entregues ao bucket A, enquanto outros serão entregues ao novo bucket de destino B. Em todo caso, as novas configurações entrarão em vigor posteriormente, sem a necessidade de ações adicionais.
Para obter mais informações sobre registro em log e arquivos de log, consulte as seguintes seções: