Nesta página, discutiremos o recurso Bloqueio de buckets, que permite configurar a política de retenção de um bucket do Cloud Storage. Essa política determina por quanto tempo os objetos no bucket precisam ser retidos. O recurso também permite bloquear a política de retenção do bucket, impedindo permanentemente que ela seja reduzida ou removida.
Esse recurso pode fornecer armazenamento imutável no Cloud Storage. Em conjunto com o Modo de registro de auditoria detalhado, que grava detalhes de solicitações e respostas do Cloud Storage, o Bloqueio de bucket pode ajudar com requisitos regulatórios e de conformidade, como os da FINRA, SEC e CFTC. O Bloqueio de bucket também pode ajudar a atender determinadas normas de retenção de dados no setor de saúde.
Visão geral
É possível adicionar uma política de retenção a um bucket para especificar um período de retenção.
Quando uma política de retenção de buckets é definida, os objetos no bucket só podem ser excluídos ou substituídos quando a idade deles for maior que o período de retenção.
A política de retenção se aplica retroativamente a objetos existentes no bucket, bem como novos objetos adicionados a ele. Isso é diferente do comportamento do recurso Bloqueio de retenção de objetos, que permite definir requisitos de retenção de dados para cada objeto.
É possível bloquear a política de retenção de um bucket para defini-lo permanentemente nele.
Depois de bloquear uma política de retenção, você não poderá removê-la nem reduzi-la.
Não é possível excluir um bucket com uma política de retenção bloqueada, a menos que todos os objetos no bucket tenham atendido ao período de armazenamento.
Você pode aumentar a duração de uma política de retenção bloqueada.
Políticas de retenção de buckets
Você pode incluir uma política de retenção ao criar um novo
bucket ou adicionar uma política de retenção a um bucket existente. Colocar uma política de retenção em
um bucket garante que todos os objetos atuais e futuros contidos nele não possam ser
excluídos ou substituídos até que atinjam a idade definida na
política. As tentativas de excluir ou substituir objetos com idade inferior ao
período de retenção apresentam falha com um erro 403 - retentionPolicyNotMet
.
Por exemplo, suponha que você tenha um bucket com dois objetos: Objeto A, adicionado há 1 mês, e Objeto B, adicionado há 2 anos. Se você aplicar uma política de armazenamento ao seu bucket que tenha um período de armazenamento de um ano, não será possível excluir nem substituir o Objeto A pelos próximos 11 meses. No momento, ele tem um mês de idade, mas precisa ter pelo menos um ano para ser excluído ou substituído. Por outro lado, o Objeto B pode ser excluído ou substituído imediatamente, porque sua idade é superior ao período de armazenamento. Se você decidiu substituir o Objeto B, a nova versão dele terá uma idade que é reiniciada em 0 ano.
Para ajudar a rastrear quando objetos individuais são qualificados para exclusão, os objetos em um bucket com uma política de armazenamento têm, cada um, metadados de tempo de expiração de armazenamento. Essa parte dos metadados mostra a data e a hora em que um objeto cumpre o período de armazenamento.
Considerações gerais
Ao trabalhar com políticas de retenção, tenha isto em mente:
Se a política de retenção de um bucket não estiver bloqueada, você poderá aumentar, diminuir ou remover a política.
Os metadados editáveis de um objeto não estão sujeitos à política de retenção de um bucket e podem ser modificados mesmo que o próprio objeto não possa.
A política de retenção de um bucket contém um tempo efetivo. Após esse tempo, a conformidade de todos os objetos no bucket com o período de armazenamento estará garantida.
Para consultar a data mais próxima para a exclusão de um determinado objeto de um bucket com uma política de retenção, veja a data de validade da retenção dos metadados do objeto.
Considerações com outros recursos
Veja a seguir as interações que as políticas de retenção fazem com outros recursos do Cloud Storage:
Em buckets que usam o controle de versões de objetos, uma versão ativa de objeto que tenha um período de retenção no futuro ainda pode ser desativada, e todos os objetos com versão que existirem no bucket no momento em que você aplicar uma política de retenção também serão protegidos por ela.
Um objeto sujeito a uma retenção baseada em evento não poderá ser excluído enquanto a retenção se aplicar a ele. Depois que a retenção baseada em evento for removida do objeto, o período de armazenamento do objeto será redefinido.
Um objeto individual pode estar sujeito à política de retenção do bucket e à própria configuração de retenção individual. Se um objeto estiver sujeito a ambas, ele será retido até que ambas as retenções sejam satisfeitas.
Não será possível destruir versões de chave do Cloud Key Management Service que criptografam objetos em buckets bloqueados enquanto estes não atingirem os prazos de validade de retenção. Para mais informações, consulte Versões de chaves usadas para criptografar objetos bloqueados.
É possível usar o Gerenciamento de ciclo de vida de objetos para excluir objetos automaticamente em um bucket, inclusive em um bucket com uma política bloqueada. Uma regra de ciclo de vida não excluirá um objeto até que ele atenda à política de armazenamento.
Não é recomendável executar uploads compostos paralelos se o bucket tiver uma política de armazenamento, pois os componentes não poderão ser excluídos até que tenham atingido o período mínimo de armazenamento do bucket.
A tentativa de concluir um upload de várias partes da API XML falhará se o objeto resultante se destinar a substituir um objeto que ainda não tenha atingido o período de armazenamento.
Use a restrição de política de retenção nas políticas de sua organização para exigir que políticas de retenção com períodos específicos sejam incluídas como parte da criação de um novo bucket ou como parte da adição/atualização da política de retenção em um bucket existente.
Períodos de retenção
Os períodos de retenção são medidos em segundos. No entanto, algumas ferramentas, como o console do Google Cloud e a Google Cloud CLI, permitem definir e acessar períodos de armazenamento com outras unidades de tempo. As conversões a seguir se aplicam nestes casos:
- Um dia é considerado como sendo 86.400 segundos.
- Um mês é considerado como sendo 31 dias, o que é 2.678.400 segundos.
- Um ano é considerado 365,25 dias, o que é 31,557,600 segundos.
Você pode definir um período máximo de armazenamento de 3.155.760.000 segundos (100 anos).
Para a CLI gcloud, ao especificar um período de armazenamento, use
um número inteiro e uma unidade, em que a unidade pode ser s
, d
, m
ou y
, que representam segundos, dias, meses ou anos, respectivamente. Por exemplo, 1d43200s
define
um período de armazenamento de 1 dia e 43.200 segundos (um dia e meio).
Bloqueios de política de retenção
Quando você bloqueia a política de retenção de um bucket, isso impede que ela seja removida ou que o período de retenção seja reduzido, embora ainda seja possível aumentá-lo. Se você tentar remover ou reduzir
a duração da política de um bucket bloqueado, receberá um
erro 400 BadRequestException
. Depois que uma política de retenção estiver bloqueada, você não
poderá excluir o bucket até que todos os objetos nele atendam ao período
de retenção.
O bloqueio da política de retenção de um bucket é irreversível, e você precisa conhecer as implicações de fazer isso antes de usar esse recurso. Ao usar uma política de armazenamento desbloqueada, você pode removê-la, permitindo que ainda seja possível excluir objetos quando quiser. Quando você bloqueia uma política de retenção, é necessário excluir o bucket inteiro para "remover" a política. No entanto, não é possível excluir o bucket se houver objetos nele que não tenham cumprido o período de retenção. Assim, para "remover" uma política de armazenamento bloqueada, você precisa aguardar até que todos os objetos no bucket tenham cumprido o período de retenção. Só então você poderá excluir o bucket.
Além disso, ao bloquear uma política de retenção, o Cloud Storage aplica
automaticamente uma garantia à permissão projects.delete
para o projeto
que contém o bucket. Enquanto estiver ativa, a garantia impede que o projeto seja
excluído. Para excluir o projeto, é necessário primeiro remover todas essas garantias.
A remoção de uma garantia exige a permissão
resourcemanager.projects.updateLiens
, que faz parte das funções roles/owner
e
roles/resourcemanager.lienModifier
.
Saiba sobre como o bloqueio de uma política de retenção pode ajudar seus dados a cumprir as regulamentações de retenção de registros na página de conformidade.
A seguir
- Saiba como usar e bloquear políticas de retenção.
- Saiba mais sobre o bloqueio de retenção de objetos e as retenções de objetos, que fornecem maneiras de proteger objetos individuais contra exclusão.
- Saiba mais sobre o Modo de registro de auditoria detalhado, que também pode ajudar com os requisitos regulatórios e de conformidade.