Políticas WORM (write once, read many) em nível de versão para dados de blob imutáveis

Uma política WORM (write once, read many) no nível da versão é um tipo de política de imutabilidade que pode ser definida no nível da conta, do contêiner ou da versão. Para saber mais sobre o armazenamento imutável para o Armazenamento de Blobs do Azure, consulte Armazenar dados de blob críticos para os negócios com armazenamento imutável em um estado WORM (write once, read many).

Disponibilidade

As políticas de imutabilidade em nível de versão (VLW) são suportadas no nível da conta para novas contas e no nível do contêiner e do blob para contas/contêineres novos e existentes. Essas políticas têm suporte para contas de blob de blocos de uso geral v2 e premium. Esse recurso não tem suporte em contas de namespace hierárquicas.

Dependência de versão

As políticas de nível de versão exigem que o controle de versão de blob esteja habilitado para a conta de armazenamento. Para saber como habilitar o controle de versão de blobs, confira Habilitar e gerenciar o controle de versão de blobs. Tenha em mente que a habilitação do controle de versão pode ter um impacto nos valores de cobrança. Para obter mais informações, consulte a Seção Preços e cobrança para o Controle de Versão de Blobs.

Depois que o controle de versão estiver habilitado, quando um blob for carregado pela primeira vez, essa versão do blob será a versão atual. Sempre que o blob for substituído, uma nova versão será criada e armazenará o estado anterior do blob. Quando você exclui a versão atual de um blob, a versão atual se torna uma versão anterior e será mantida até ser explicitamente excluída. Uma versão de blob anterior possui a política de retenção baseada em tempo que estava em vigor quando a versão atual se tornou uma versão anterior.

Se uma política padrão estiver em vigor para a conta de armazenamento ou o contêiner, quando uma operação de substituição criar uma versão anterior, a nova versão atual herdará a política padrão para o contêiner ou a conta.

Cada versão pode ter configurada apenas uma política de retenção baseada em tempo. Uma versão também pode ter um controle legal configurado.

Para saber como configurar políticas de retenção baseadas em tempo no nível da versão, consulte Configurar políticas de imutabilidade para versões de blob.

Configuração de habilitação e política

Usar políticas imutáveis com WORM no nível da versão é um processo de duas etapas. Primeiro, habilite a imutabilidade no nível da versão. Em seguida, você pode definir políticas de imutabilidade no nível da versão.

Para definir uma política no nível da conta de armazenamento, primeiro você deve habilitar o WORM no nível da versão na conta de armazenamento. Você só pode fazer isso no momento da criação da conta. Não há nenhuma opção para habilitar o WORM no nível da versão para contas pré-existentes.

Diagrama de configuração de uma política para armazenamento imutável no nível da versão no nível da conta.

Para definir uma política no nível do contêiner, primeiro você deve habilitar o WORM no nível da versão na conta OU no contêiner.

Se você planeja habilitar o WORM no nível da versão em um contêiner, a Microsoft recomenda que você o habilite no momento da criação do contêiner. No entanto, você pode migrar um contêiner habilitado para WORM sem nível de versão para um contêiner habilitado para WORM no nível da versão. Se você optar por não migrar um contêiner, ainda poderá definir uma política WORM no nível do contêiner, mas a opção de definir políticas no nível de blob não estará disponível nesse contêiner.

Diagrama de configuração de uma política para armazenamento imutável no nível da versão no nível do contêiner.

Para definir uma política no nível do blob, você deve habilitar o WORM no nível da versão na conta ou no contêiner. Não há nenhuma opção para habilitar o WORM no nível da versão no nível do blob; ela deve ser herdada.

Diagrama de configuração de uma política para armazenamento imutável no nível da versão no nível do blob.

Migração

Os contêineres existentes podem oferecer suporte à imutabilidade em nível de versão, mas primeiro precisam passar por um processo de migração. Esse processo pode levar algum tempo. Depois de habilitado, o suporte ao WORM no nível da versão para esse contêiner não poderá ser removido. Você pode migrar dez contêineres de cada vez por conta de armazenamento. Para obter mais informações sobre como migrar um contêiner para dar suporte à imutabilidade no nível de versão, consulte Migrar um contêiner existente para dar suporte à imutabilidade no nível de versão.

Configurar uma política na versão atual

Depois de habilitar o suporte para a imutabilidade no nível da versão para um contêiner ou conta de armazenamento, você tem a opção de configurar uma política de retenção baseada em tempo padrão para o contêiner ou a conta. Quando você configura uma política de retenção baseada em tempo padrão para o contêiner ou a conta e, em seguida, carrega um blob, o blob herda essa política por padrão. Você também pode optar por substituir a política padrão para qualquer blob em upload configurando uma política personalizada para esse blob.

Se a política de retenção baseada em tempo padrão para o contêiner ou a conta for desbloqueada, a versão atual de um blob que herda a política padrão também terá uma política desbloqueada. Após o carregamento de um blob individual, você pode reduzir ou estender o período de retenção da política na versão atual do blob ou excluir a versão atual. Você também pode bloquear a política para a versão atual, mesmo que a política padrão no contêiner ou na conta permaneça desbloqueada.

Se a política de retenção baseada em tempo padrão para o contêiner ou a conta for desbloqueada, a versão atual de um blob que herda a política padrão também terá uma política desbloqueada. No entanto, se você substituir a política padrão ao fazer carregamento de um blob, definindo uma política somente para esse blob, a política desse blob permanecerá desbloqueada até que você a bloqueie explicitamente. Quando a política na versão atual estiver bloqueada, você poderá estender o intervalo de retenção, mas não poderá excluir a política nem reduzir o intervalo de retenção.

Se não houver nenhuma política padrão configurada para o contêiner ou a conta de armazenamento, você poderá carregar um blob com uma política personalizada ou sem nenhuma política.

Se a política padrão em um contêiner ou conta de armazenamento for modificada, as políticas nos objetos dentro desse contêiner permanecerão inalteradas, mesmo se elas tiverem sido herdadas da política padrão.

A tabela a seguir mostra as várias opções disponíveis para definir uma política de retenção baseada em tempo em um blob em upload:

Status da política padrão na conta ou contêiner Carregar um blob com a política padrão Carregar um blob com uma política personalizada Carregar um blob sem política
Política padrão na conta ou contêiner (desbloqueado) O blob é carregado com a política desbloqueada padrão O blob é carregado com a política desbloqueada personalizada O blob é carregado sem política
Política padrão na conta ou contêiner (bloqueado) O blob é carregado com a política bloqueada padrão O blob é carregado com a política desbloqueada personalizada O blob é carregado sem política
Nenhuma política padrão na conta ou no contêiner N/D O blob é carregado com a política desbloqueada personalizada O blob é carregado sem política

Configurar uma política em uma versão anterior

Quando o controle de versão estiver habilitado, uma operação de gravação ou exclusão em um blob cria uma nova versão anterior desse blob que salva o estado do blob antes da operação. Por padrão, uma versão anterior possui a política de retenção baseada em tempo que estava em vigor na versão atual, se ela existir, quando a versão atual se tornou uma versão anterior. A nova versão atual herda a política no contêiner, se houver uma.

Se a política herdada por uma versão anterior for desbloqueada, o intervalo de retenção poderá ser reduzido ou prolongado, ou a política poderá ser excluída. A política em uma versão anterior também pode ser bloqueada para essa versão, mesmo que a política na versão atual esteja desbloqueada.

Se a política herdada por uma versão anterior estiver bloqueada, o intervalo de retenção poderá ser prolongado. A política não pode ser excluída, nem o intervalo de retenção pode ser reduzido. Se não houver nenhuma política configurada na versão atual, a versão anterior não herdará nenhuma política.

Você pode configurar uma política personalizada para a versão. Se a política em uma versão atual for modificada, as políticas nas versões anteriores existentes permanecerão inalteradas, mesmo que a política tenha sido herdada de uma versão atual.

Exclusão

Depois que uma conta ou contêiner estiver habilitado(a) para uma política imutável, ele(a) não poderá ser excluído(a) até que esteja vazio(a). O principal aspecto a ser observado é que não importa se uma política imutável foi definida em uma conta ou contêiner WORM em nível de versão, o que importa é se ela está habilitada para uma política. Quando estiver, a conta ou o contêiner deve estar vazio(a) para ser excluído(a).

Diagrama que mostra a ordem das operações na exclusão de uma conta que tem uma política de imutabilidade no nível de versão.

Cenários

Cenário Operações proibidas Proteção de blob Proteção de contêiner Proteção de conta
Uma versão de blob é protegida por uma política de retenção ativa e/ou uma retenção legal está em vigor Excluir blob, Definir metadados do blob e Colocar página A versão de blob não pode ser excluída. Os metadados do usuário não podem ser gravados.
Substituir um blob com Colocar blob, Colocar lista de bloco ou Copiar blob cria uma nova versão1.
A exclusão do contêiner falhará se houver pelo menos um blob no contêiner, independentemente do bloqueio ou não da política. A exclusão da conta de armazenamento falhará se houver pelo menos um contêiner com o armazenamento imutável no nível da versão habilitado ou se ele estiver habilitado para a conta.
Uma versão de blob é protegida por uma política de retenção expirada e nenhuma retenção legal está em vigor Definir metadados de blob e colocar página Uma versão de blob é protegida por uma política de retenção expirada e nenhuma retenção legal está em vigor A versão de blob pode ser excluída.
Substituir um blob com Colocar blob, Colocar lista de bloco ou Copiar blob cria uma nova versão1.
A exclusão da conta de armazenamento falhará se houver pelo menos um contêiner que contém uma versão de blob com uma política de retenção baseada em tempo bloqueada.
As políticas desbloqueadas não oferecem proteção contra exclusão.

1 As versões de blob são sempre imutáveis ​​para o conteúdo. Se o controle de versão estiver habilitado para a conta de armazenamento, uma operação de gravação em um blob de bloco criará uma nova versão, com exceção da operação Put Block.

Limites

Só pode haver 10.000 contêineres definidos com políticas de retenção exclusivas baseadas em tempo em uma conta; no entanto, você pode definir uma política de nível de conta que será herdada por mais de 10.000 contêineres.

Próximas etapas