Usar o bloqueio de objetos do S3 - Amazon Simple Storage Service

Usar o bloqueio de objetos do S3

A funcionalidade Bloqueio de Objetos do S3 pode ajudar a evitar que os objetos do Amazon S3 sejam excluídos ou substituídos por um período fixo ou indefinidamente. A funcionalidade Bloqueio de Objetos usa um modelo de gravação única e várias leituras (WORM). Você pode usar a funcionalidade Bloqueio de Objetos para ajudar a atender aos requisitos regulamentares que exigem armazenamento WORM ou para adicionar outra camada de proteção contra alterações ou exclusão de objetos.

nota

A funcionalidade Bloqueio de Objetos do S3 foi avaliada pela Cohasset Associates para uso em ambientes sujeitos aos regulamentos SEC 17a-4, CFTC e FINRA. Para obter mais informações sobre como a funcionalidade Bloqueio de Objetos está relacionada a essas regulamentações, consulte o documento Cohasset Associates Compliance Assessment.

O bloqueio de objetos fornece duas maneiras de gerenciar a retenção de objetos: períodos de retenção e retenções legais. Uma versão do objeto pode ter um período de retenção, uma retenção jurídica ou ambos.

  • Período de retenção: um período de retenção especifica um período fixo durante o qual um objeto permanece bloqueado. Você pode definir um período de retenção exclusivo para objetos individuais. Além disso, você pode definir um período de retenção padrão em um bucket do S3. Também é possível restringir os períodos mínimo e máximo de retenção permitidos com a chave de condição s3:object-lock-remaining-retention-days na política do bucket. Isso ajuda você a estabelecer uma faixa de períodos de retenção e a restringir períodos de retenção que podem ser menores ou maiores do que essa faixa.

  • Retenção jurídica: uma retenção jurídica oferece a mesma proteção de um período de retenção, mas sem data de expiração. Em vez disso, uma retenção legal permanecerá em vigor até você removê-la explicitamente. As retenções jurídicas independem dos períodos de retenção e são colocadas em versões de objetos individuais.

A funcionalidade Bloqueio de Objetos só funciona somente em buckets com a funcionalidade Versionamento do S3 habilitada. Quando você bloqueia uma versão do objeto, o Amazon S3 armazena as informações de bloqueio nos metadados dessa versão do objeto. A colocação de um período de retenção ou uma retenção jurídica em um objeto só protege a versão especificada na solicitação. Os períodos de retenção e as retenções jurídicas não impedem a criação de versões do objeto nem a adição de marcadores de exclusão no objeto. Para obter informações sobre o Versionamento do S3, consulte Usando o versionamento em buckets do S3.

Se você colocar um objeto em um bucket que já contenha um objeto protegido com o mesmo nome de chave de objeto, o Amazon S3 criará outra versão desse objeto. A versão protegida existente do objeto permanece bloqueada de acordo com a configuração da retenção.

Como o bloqueio de objetos do S3 funciona

Períodos de retenção

Um período de retenção protege uma versão do objeto por um período fixo. Quando você coloca um período de retenção em uma versão do objeto, o Amazon S3 armazena um timestamp nos metadados da versão do objeto para indicar quando o período de retenção expira. Depois que o período de retenção expirar, a versão do objeto não poderá ser substituída nem excluída.

Você pode colocar um período de retenção explicitamente em uma versão de objeto individual ou nas propriedades de um bucket para que ele se aplique automaticamente a todos os objetos no bucket. Ao aplicar um período de retenção a uma versão de objeto explicitamente, especifique a opção de Retain Until Date (Reter até uma determinada data) para a versão do objeto. O Amazon S3 armazena essa data nos metadados da versão do objeto.

Você também pode definir um período de retenção nas propriedades de um bucket. Ao definir um período de retenção em um bucket, especifique uma duração, em dias ou anos, para proteger cada versão do objeto colocada no bucket. Quando você coloca um objeto no bucket, o Amazon S3 calcula um Prazo de retenção para a versão do objeto, adicionando a duração especificada ao timestamp da criação da versão do objeto. A versão do objeto é protegida exatamente como se você tivesse colocado explicitamente um bloqueio individual com esse período de retenção na versão do objeto.

nota

Quando você usa PUT em uma versão de objeto que tem um modo e um período de retenção individual explícitos em um bucket, as configurações individuais da funcionalidade Bloqueio de Objetos da versão do objeto substituem qualquer configuração de retenção de propriedades do bucket.

Assim como acontece com todas as outras configurações de bloqueio de objetos, os períodos de retenção se aplicam a versões de objetos individuais. As versões diferentes de um único objeto podem ter modos e períodos de retenção diferentes.

Por exemplo, suponha que você tenha um objeto de 15 dias em um período de retenção de 30 dias e você PUT um objeto no Amazon S3 com o mesmo nome e um período de retenção de 60 dias. Nesse caso, a solicitação PUT será bem-sucedida e o Amazon S3 criará outra versão do objeto com um período de retenção de 60 dias. A versão anterior mantém o período de retenção original e se torna excluível em 15 dias.

Depois que você tiver aplicado uma configuração de retenção a uma versão do objeto, poderá estender o período de retenção. Para fazer isso, envie uma nova solicitação da funcionalidade Bloqueio de Objetos para a versão do objeto com um Prazo de retenção que seja posterior ao configurado atualmente para a versão do objeto. O Amazon S3 substitui o período de retenção existente pelo novo período mais longo. Qualquer usuário com permissões para colocar um período de retenção do objeto pode estender um período de retenção para uma versão do objeto. Para definir um período de retenção, você deve ter a permissão s3:PutObjectRetention.

Ao definir um período de retenção em um objeto ou bucket do S3, é necessário selecionar um dos dois modos de retenção: conformidade ou governança.

Modos de retenção

A funcionalidade Bloqueio de Objetos do S3 oferece dois modos de retenção que aplicam níveis diferentes de proteção aos objetos:

  • Modo de conformidade

  • Modo de governança

No modo de conformidade, uma versão do objeto protegida não pode ser substituída nem excluída por qualquer usuário, inclusive o usuário root na Conta da AWS. Quando um objeto estiver bloqueado no modo de conformidade, o modo de retenção não poderá ser alterado nem o período de retenção poderá ser encurtado. O modo de conformidade ajuda a garantir que uma versão do objeto não possa ser substituída nem excluída durante o período de retenção.

nota

A única maneira de excluir um objeto no modo de conformidade antes da data de retenção é excluir a Conta da AWS associada.

No modo de governança, os usuários não podem substituir nem excluir uma versão do objeto ou alterar as configurações de bloqueio, a menos que tenham permissões especiais. Com o modo de governança, você protege objetos contra a exclusão da maioria dos usuários, mas ainda pode conceder a alguns usuários permissão para alterar as configurações de retenção ou excluir objetos, caso necessário. Também é possível usar o modo de governança para testar as configurações do período de retenção antes de criar um período de retenção do modo de conformidade.

Para substituir ou remover as configurações de retenção do modo de governança, você precisa ter a permissão s3:BypassGovernanceRetention e incluir explicitamente x-amz-bypass-governance-retention:true como um cabeçalho de solicitação com qualquer solicitação que exija a substituição do modo de governança.

nota

Por padrão, o console do Amazon S3 inclui o cabeçalho x-amz-bypass-governance-retention:true. Se você tentar excluir objetos protegidos pelo modo de governança e tiver a permissão s3:BypassGovernanceRetention, a operação será bem-sucedida.

Com a funcionalidade Bloqueio de Objetos, você também pode colocar uma retenção jurídica em uma versão de objeto. Assim como um período de retenção, uma retenção legal evita que uma versão do objeto seja substituída ou excluída. Porém, uma retenção jurídica não tem uma quantidade fixa de tempo associada e permanecerá em vigor até ser removida. As retenções legais podem ser feitas e removidas livremente por qualquer usuário com a permissão s3:PutObjectLegalHold.

As retenções legais independem dos períodos de retenção. Fazer uma retenção legal em uma versão do objeto não afeta o modo de retenção ou o período de retenção dessa versão do objeto.

Por exemplo, suponha que você coloque uma retenção jurídica em uma versão do objeto e que essa versão também está protegida por um período de retenção. Se o período de retenção expirar, o objeto não perderá a proteção WORM. Em vez disso, a retenção jurídica continuará protegendo o objeto até um usuário autorizado removê-la explicitamente. Da mesma maneira, se você remover uma retenção legal enquanto uma versão do objeto tiver um período de retenção em vigor, a versão do objeto continuará protegida até o período de retenção expirar.

Práticas recomendadas para usar a funcionalidade Bloqueio de Objetos do S3

Considere usar o Modo de governança se quiser proteger objetos de serem excluídos pela maioria dos usuários durante um período de retenção predefinido, mas ao mesmo tempo quiser que alguns usuários com permissões especiais tenham a flexibilidade de alterar as configurações de retenção ou excluir os objetos.

Considere usar o Modo de conformidade se você nunca quiser que nenhum usuário, incluindo o usuário raiz em sua Conta da AWS, possa excluir os objetos durante um período de retenção predefinido. Você pode usar esse modo caso precise armazenar dados de conformidade.

Você pode usar a Retenção jurídica quando não tiver certeza de quanto tempo deseja que os objetos permaneçam imutáveis. Isso pode ser devido a uma futura auditoria externa dos dados, em que você deseja manter os objetos imutáveis até que a auditoria seja concluída. Como alternativa, você pode ter um projeto em andamento que utiliza um conjunto de dados que deseja manter imutável até que o projeto seja concluído.

Permissões obrigatórias

As operações do bloqueio de objetos exigem permissões específicas. Dependendo da operação exata que você está tentando realizar, algumas das seguintes permissões poderão ser necessárias:

  • s3:BypassGovernanceRetention

  • s3:GetBucketObjectLockConfiguration

  • s3:GetObjectLegalHold

  • s3:GetObjectRetention

  • s3:PutBucketObjectLockConfiguration

  • s3:PutObjectLegalHold

  • s3:PutObjectRetention

Consulte uma lista completa de permissões do Amazon S3 com descrições em Actions, resources, and condition keys for Amazon S3 na Referência de autorização do serviço.

Para obter informações sobre como usar condições com permissões, consulte Exemplos de chave de condição do Amazon S3.