Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Você pode habilitar o controle de versão do Armazenamento de Blobs para manter automaticamente as versões anteriores de um objeto. Quando você habilita o controle de versão de blobs, pode acessar versões anteriores de um blob para recuperar seus dados caso eles sejam modificados ou excluídos.
Atenção
Depois que você habilitar o controle de versão do blob para uma conta de armazenamento, todas as operações de gravação em um blob nessa conta resultarão na criação de uma versão. Por esse motivo, ativar a versão de blob pode resultar em custos extras. Para minimizar os custos, use uma política de gerenciamento do ciclo de vida para excluir automaticamente as versões antigas. Para obter mais informações sobre o gerenciamento do ciclo de vida, consulte Otimizar custos automatizando as camadas de acesso do Armazenamento de Blobs do Azure.
Como o controle de versão de blobs funciona
Uma versão captura o estado de um blob em um determinado momento. Cada versão é identificada com uma ID de versão. Quando o controle de versão de blob é habilitado para uma conta de armazenamento, Armazenamento do Azure cria automaticamente uma nova versão com uma ID exclusiva quando um blob é criado pela primeira vez e cada vez que o blob é modificado posteriormente.
Uma ID de versão pode identificar a versão atual ou uma versão anterior. Um blob pode ter apenas uma versão atual por vez.
Quando você cria um blob, existe uma única versão e essa versão é a versão atual. Quando você modifica um blob existente, a versão atual se torna uma versão anterior. Uma versão é criada para capturar o estado atualizado e essa versão é a versão atual. Quando você exclui um blob, a versão atual dele se torna uma versão anterior e não há mais uma versão atual. Todas as versões anteriores do blob persistem.
O seguinte diagrama mostra como as versões são criadas em operações de gravação e como uma versão anterior pode ser promovida para a versão atual:
Importante
Ter várias versões por blob pode aumentar a latência das operações de listagem de blobs. Microsoft recomenda manter menos de 1000 versões por blob. Você pode usar o gerenciamento do ciclo de vida para excluir automaticamente versões antigas. Para obter mais informações sobre o gerenciamento do ciclo de vida, consulte Otimizar custos automatizando as camadas de acesso do Armazenamento de Blobs do Azure.
As versões do blob são imutáveis. Você não pode modificar o conteúdo nem os metadados de uma versão de blob existente.
O controle de versão de blob está disponível para contas de armazenamento de Blobs herdadas, de v2 de uso geral padrão e de blob de blocos premium. No momento, não há suporte para contas de armazenamento com um namespace hierárquico habilitado para uso com Azure Data Lake Storage.
A versão 2019-10-10 e superior da API REST do Armazenamento do Azure dá suporte ao controle de versão de blob.
Importante
O versionamento de blobs não pode ajudar você a recuperar uma conta de armazenamento ou um contêiner excluído acidentalmente. Para evitar a exclusão acidental da conta de armazenamento, configure um bloqueio no recurso da conta de armazenamento. Para obter mais informações sobre como bloquear uma conta de armazenamento, consulte Aplicar um bloqueio de Azure Resource Manager para uma conta de armazenamento.
ID da versão
Cada versão do blob tem um ID de versão único. O valor do identificador da versão corresponde ao carimbo de data e hora de quando o blob foi atualizado. Você atribui o ID da versão ao criar a versão.
Você pode ler ou excluir uma versão específica de um blob usando seu ID de versão. Se você não incluir o ID da versão, a operação mira a versão atual.
Quando você chama uma operação de gravação para criar ou modificar um blob, Armazenamento do Azure retorna o cabeçalho x-ms-version-id na resposta. Este cabeçalho contém o ID de versão da versão atual do blob que a operação de escrita cria.
O ID da versão permanece o mesmo durante toda a vida útil da versão.
Controle de versão em operações de gravação
Quando você ativa o controle de versão de blobs, cada operação de gravação em um blob cria uma nova versão. As operações de gravação incluem Put Blob, Put Block List, Copy Blob e Set Blob Metadata.
Se a operação de escrita cria um novo blob, o blob resultante é a versão atual do blob. Se a operação de escrita modificar um blob existente, a versão atual se torna uma versão anterior, e uma nova versão atual captura o blob atualizado.
O diagrama a seguir mostra como as operações de gravação afetam as versões de blob. Para simplificar, os diagramas deste artigo exibem o ID da versão como um valor inteiro simples. Na realidade, a ID da versão é um carimbo de data/hora. A versão atual é mostrada em azul e as versões anteriores são mostradas em cinza.
Observação
Quando você habilita o controle de versão de blobs em uma conta de armazenamento, todas as operações de gravação em blobs de bloco disparam a criação de uma nova versão, exceto a operação Put Block.
Para blobs de páginas e blobs de acréscimo, apenas um subconjunto de operações de gravação dispara a criação de uma versão. Essas operações incluem:
As operações a seguir não disparam a criação de uma nova versão. Para capturar as alterações dessas operações, crie um instantâneo manual:
- Put Page (blob de páginas)
- Append Block (blob de acréscimo)
Todas as versões de um blob devem ter o mesmo tipo de blob. Se um blob tiver versões anteriores, você não poderá substituir um blob de um tipo por outro tipo, a menos que exclua primeiro o blob e todas as respectivas versões.
Controle de versão em operações de exclusão
Quando você chama a operação Delete Blob sem especificar uma ID de versão, a versão atual se torna uma versão anterior e não haverá mais uma versão atual. A operação preserva todas as versões anteriores existentes do blob.
O seguinte diagrama mostra o efeito de uma operação de exclusão em um blob com controle de versão:
Para excluir uma versão específica de um blob, forneça a ID dessa versão na operação de exclusão. Se você também habilitar a exclusão temporária de blobs na conta de armazenamento, o sistema manterá a versão até que o período de retenção da exclusão temporária expire.
Gravar novos dados no blob cria uma versão atual do blob. Essa ação não afeta nenhuma versão existente, como mostrado no diagrama a seguir.
Níveis de acesso
Você pode mover qualquer versão de um blob de blocos, incluindo a versão atual, para uma camada de acesso de blob diferente chamando a operação Set Blob Tier. Ao mover versões antigas de um blob para a camada de resfriamento ou de arquivamento, você pode aproveitar preços de armazenamento mais baixos. Para obter mais informações, confira Camadas de acesso frequente, esporádico e de arquivos para dados de blob.
Para automatizar o processo de mover blobs de bloco para o nível apropriado, use o gerenciamento do ciclo de vida dos blobs. Para mais informações sobre gerenciamento do ciclo de vida, veja Gerenciar o ciclo de vida do armazenamento do Azure Blob.
Habilitar ou desabilitar o controle de versão de blobs
Para saber como habilitar ou desabilitar o controle de versão de blobs, confira Habilitar e gerenciar o controle de versão de blobs.
Desabilitar o controle de versão de blobs não exclui os blobs, versões ou instantâneos existentes. Quando você desliga o controle de versão de blob, todas as versões existentes permanecem acessíveis na sua conta de armazenamento. Nenhuma versão é criada subsequentemente.
Depois que o controle de versão é desabilitado, modificar a versão atual cria um blob que não é uma versão. Todas as atualizações subsequentes para o blob substituirão os dados sem salvar o estado anterior. Todas as versões existentes persistem como versões anteriores.
Você pode ler ou excluir versões usando o ID da versão após o versionamento ser desativado. Você também poderá listar as versões de um blob depois que o controle de versão for desabilitado.
A replicação de objeto depende do controle de versão do blob. Antes de desabilitar o controle de versão do blob, exclua todas as políticas de replicação de objeto na conta. Para saber mais sobre a replicação de objeto, confira Replicação de objeto blob de blocos.
O diagrama a seguir mostra como modificar um blob após o controle de versão ser desabilitado cria um blob sem controle de versão. Todas as versões existentes associadas ao blob são persistidas.
Controle de versão e exclusão temporária do blob
O controle de versão e a exclusão temporária de blob fazem parte da configuração de proteção de dados recomendada para contas de armazenamento. Para obter mais informações sobre as recomendações do Microsoft para proteção de dados, consulte a visão geral da proteção de dados.
Como substituir um blob
Se o controle de versão de blob e a exclusão temporária de blob estiverem habilitados em uma conta de armazenamento, a substituição de um blob criará automaticamente uma versão. A nova versão não é excluída de modo reversível e não é removida quando o período de retenção de exclusão reversível expira. Nenhum instantâneo excluído de maneira temporária é criado.
Como excluir um blob ou uma versão
Se você ativar a versão e o soft delete para uma conta de armazenamento, ao excluir um blob, a versão atual do blob se torna uma versão anterior. A operação não cria uma nova versão nem apaga instantâneos suavemente. O período de retenção de exclusão suave não se aplica ao blob deletado.
A exclusão suave oferece proteção extra ao excluir versões de blob. Quando você exclui uma versão anterior do blob, essa versão é deletada de forma suave. A versão com deleção suave é preservada até o período de retenção de exclusão suave terminar, e então é deletada permanentemente.
Para excluir uma versão anterior de um blob, chame a operação Delete Blob e especifique a ID da versão.
O diagrama a seguir mostra o que acontece quando você exclui um blob ou uma versão de blob.
Como restaurar uma versão excluída de maneira temporária
Você pode usar a operação Undelete Blob para restaurar versões excluídas de maneira temporária durante o período de retenção de exclusão temporária. A operação Undelete Blob sempre restaura todas as versões com exclusão temporária do blob. Você não pode restaurar somente uma única versão excluída temporariamente.
A restauração de versões excluídas de forma reversível usando a operação Recuperar Blob não torna nenhuma versão a versão atual. Para restaurar a versão atual, primeiro restaure todas as versões excluídas temporariamente e use a operação Copy Blob para copiar uma versão anterior para a versão atual.
O diagrama a seguir mostra como restaurar versões de blob excluídas temporariamente usando a operação Undelete Blob e como restaurar a versão atual do blob usando a operação Copy Blob.
Após o fim do período de retenção da exclusão reversível, todas as versões de blob excluídas de forma reversível são excluídas permanentemente.
Controle de versão de blobs e instantâneos de blob
Um instantâneo de blob é uma cópia somente para leitura de um blob criada em um momento específico. Snapshots de blob e versões de blob são semelhantes, mas você ou seu aplicativo criam manualmente um snapshot, enquanto uma versão blob é criada automaticamente durante uma operação de escrita ou exclusão quando você ativa a versão de blob para sua conta de armazenamento.
Importante
A Microsoft recomenda que, depois de habilitar o controle de versão de blob, você também atualize o seu aplicativo para parar de criar instantâneos de blobs de blocos. Se você ativar o versionamento da sua conta de armazenamento, ela captura e preserva todas as atualizações e excluções de blocos usando versões. Tirar snapshots não oferece proteção adicional aos dados do blob de bloco se a versão do blob estiver ativada, e isso pode aumentar custos e complexidade da aplicação.
Instantâneo de um blob quando o controle de versão está habilitado
Embora não seja recomendado, você pode tirar um snapshot de um blob que também seja versionado. Se não for possível atualizar seu aplicativo para parar de tirar instantâneos de blobs ao habilitar o controle de versão, seu aplicativo poderá oferecer suporte a instantâneos e versões.
Quando você faz um snapshot de um blob versionado, cria uma nova versão ao mesmo tempo em que cria o snapshot. Você também cria uma nova versão atual ao tirar um snapshot.
O diagrama a seguir mostra o que acontece quando você cria um instantâneo de um blob com controle de versão. No diagrama, as versões de blob e os instantâneos com a ID de versão 2 e 3 contêm dados idênticos.
Autorizar operações em versões de blobs
Você pode autorizar o acesso às versões blob usando uma das seguintes abordagens:
- Use o controle de acesso baseado em função do Azure (Azure RBAC) para conceder permissões a um principal de segurança do Microsoft Entra. Microsoft recomenda usar Microsoft Entra ID para maior segurança e facilidade de uso. Para obter mais informações sobre como usar Microsoft Entra ID com operações de blob, consulte Authorize o acesso aos dados em Armazenamento do Azure.
- Use uma assinatura de acesso compartilhada (SAS) para delegar acesso às versões do blob. Especifique o ID de versão para o tipo
bvde recurso assinado, que representa uma versão blob, para criar um token SAS para operações em uma versão específica. Para obter mais informações sobre assinaturas de acesso compartilhado, consulte Conceder acesso limitado aos recursos do Armazenamento do Azure usando assinaturas de acesso compartilhado (SAS). - Use as chaves de acesso da conta para autorizar operações contra versões blob usando a Chave Compartilhada. Para obter mais informações, consulte Autorizar com Chave Compartilhada.
O controle de versão de blobs foi projetado para proteger os seus dados contra exclusão acidental ou mal-intencionada. Para aprimorar a proteção, a exclusão de uma versão de blob requer permissões especiais. As seções a seguir descrevem as permissões necessárias para excluir uma versão de blob.
Ação do Azure RBAC para excluir uma versão de blob
A tabela a seguir mostra quais ações do Azure RBAC dão suporte à exclusão de um blob ou de uma versão de blob.
| Descrição | Operação do serviço Blob | Ação de dados do Azure RBAC necessária | Suporte a funções integradas do Azure |
|---|---|---|---|
| Como excluir a versão atual | Excluir Blob | Microsoft.Storage/storageAccounts/blobServices/containers/blobs/delete | Colaborador de dados de blob de armazenamento |
| Como excluir uma versão anterior | Excluir Blob | Microsoft.Storage/storageAccounts/blobServices/containers/blobs/deleteBlobVersion/action | Proprietário de Dados do Blob de Armazenamento |
Parâmetros de SAS (Assinatura de Acesso Compartilhado)
O recurso assinado de uma versão do blob é bv. Para obter mais informações, confira Criar uma SAS de serviço ou Criar uma SAS de delegação de usuário.
A tabela a seguir mostra qual permissão é necessária em uma SAS para excluir uma versão de blob.
| Permissão | Símbolo de URI | Operações permitidas |
|---|---|---|
| Excluir | x | Excluir a versão do blob. |
Preços e cobrança
Ativar a versão de blob pode resultar em custos extras de armazenamento de dados na sua conta. Ao projetar sua aplicação, esteja atento a como essas cobranças podem se acumular para minimizar custos.
As versões de blobs, como instantâneos de blobs, são cobradas com a mesma taxa que os dados ativos. Como você paga pelas versões depende de você definir explicitamente o nível para as versões atuais ou anteriores de um blob (ou snapshots). Para saber mais sobre as camadas de blobs, confira Camadas de acesso frequente, esporádico e de arquivos para dados de blob.
Se você não alterar o nível de acesso de um blob ou de uma versão, você pagará pelos blocos de dados exclusivos desse blob, de suas versões e de quaisquer instantâneos que ele possa ter. Para mais informações, veja Faturamento quando o nível de blob não estiver explicitamente definido.
Se você mudar o nível de um blob ou versão, paga pelo objeto inteiro, independentemente de o blob e a versão estarem no mesmo tier novamente. Para mais informações, consulte Faturamento quando a camada de blob é definida explicitamente.
Observação
Habilitar o versionamento para dados que são frequentemente sobrescritos pode aumentar as cargas de capacidade de armazenamento e a latência durante as operações de listagem. Para reduzir essas preocupações, armazene dados frequentemente substituídos em uma conta de armazenamento separada com o controle de versão desabilitado.
Habilitar versões em contas de armazenamento com backup com frequência pode disparar encargos de recuperação de dados quando as versões são armazenadas em camadas de acesso esporádico ou frio.
Para obter mais informações sobre detalhes de cobrança dos instantâneos de blob, confira Instantâneos de blob.
Para contas de armazenamento que usam smart tier, você paga por versões e snapshots com conteúdo completo. Para obter mais informações, consulte Otimizar custos com a camada inteligente.
Faturamento quando você não especifica explicitamente a camada de blob
Se você não definir explicitamente a camada de blob para nenhuma versão de um blob, você paga por blocos ou páginas exclusivos em todas as versões e por quaisquer instantâneos que ele possa ter. Você paga pelos dados compartilhados entre versões de blob apenas uma vez. Quando você atualiza um blob, os dados na nova versão atual divergem dos dados armazenados em versões anteriores, e você paga pelos dados únicos por bloco ou página.
Quando você substitui um bloco dentro de um bloco de blocos, você paga por esse bloco como um bloco único. Essa regra se aplica mesmo que o bloco tenha o mesmo ID de bloco e os mesmos dados da versão anterior. Depois que você faz commit do bloco novamente, ele diverge de sua contraparte na versão anterior, e você paga pelos dados desse bloco. A mesma regra se aplica a uma página em um blob de páginas que você atualiza com dados idênticos.
O armazenamento de blobs não tem uma forma de determinar se dois blocos contêm dados idênticos. Cada bloco que você envia e faz commit é tratado como único, mesmo que tenha os mesmos dados e o mesmo ID de bloco. Como você paga por blocos únicos, lembre-se que atualizar um blob quando a versão está ativada resulta em mais blocos únicos e cobranças extras.
Quando você ativa o controle de versão de blobs, use operações de atualização em blobs de bloco para que atualizem o menor número possível de blocos. As operações de gravação que permitem controle refinado sobre os blocos são Put Block e Put Block List. A operação Put Blob , por outro lado, substitui todo o conteúdo de um blob e, portanto, pode levar a cobranças extras.
Os cenários a seguir demonstram como as cobranças se acumulam para um blob de blocos e suas versões quando você não define explicitamente a camada do blob.
Cenário 1
No cenário 1, o blob tem uma versão anterior. O blob não é atualizado desde que a versão foi criada, então você só recebe cargas para blocos únicos 1, 2 e 3.
Cenário 2
No cenário 2, você atualiza um bloco (bloco 3 no diagrama) no blob. Embora o bloco atualizado contenha os mesmos dados e a mesma ID, ele não é igual ao bloco 3 na versão anterior. Como resultado, você paga por quatro blocos.
Cenário 3
No cenário 3, você atualiza o blob, mas não atualiza a versão. Você substitui o bloco 3 pelo bloco 4 no blob atual, mas a versão anterior ainda reflete o bloco 3. Como resultado, você paga por quatro blocos.
Cenário 4
No cenário 4, você atualiza completamente a versão atual e ela não contém nenhum dos blocos originais. Como resultado, você paga por todos os oito blocos únicos - quatro na versão atual e quatro juntos nas duas versões anteriores. Esse cenário pode ocorrer se você escrever em um blob usando a operação Put Blob , porque ela substitui todo o conteúdo do blob.
Faturamento quando o nível de blob está explicitamente definido
Se você definir explicitamente o nível do blob para um blob, versão ou snapshot, você paga pelo comprimento total do conteúdo do objeto no novo tier, mesmo que ele compartilhe blocos com um objeto do tier original. Você também paga pelo tamanho total do conteúdo da versão mais antiga no nível original. Para todas as outras versões ou snapshots anteriores que permaneçam na camada original, você paga pelos blocos exclusivos compartilhados por elas, conforme descrito em Faturamento quando a camada de blob não está explicitamente definida.
Como mover um blob para uma nova camada
A tabela a seguir descreve o comportamento de faturamento de um blob ou versão quando você o move para um novo nível.
| Quando você define o nível do blob... | Então você é cobrado... |
|---|---|
| Explicitamente em uma versão, seja atual ou anterior | O tamanho completo do conteúdo dessa versão. As versões que não têm uma camada definida explicitamente são cobradas apenas para blocos exclusivos. 1 |
| Arquivar | O tamanho completo do conteúdo de todas as versões e instantâneos. 1. |
1Se houver outras versões anteriores ou instantâneos que você não moveu da camada original, essas versões ou esses instantâneos serão cobrados com base no número de blocos exclusivos que contêm, conforme descrito em Cobrança quando a camada do blob não é definida explicitamente.
O diagrama a seguir ilustra como os objetos são cobrados quando um blob com versão é movido para uma camada diferente.
Você não pode desfazer a definição explícita do tier para um blob, versão ou snapshot. Se você mover um blob para uma nova camada e depois movê-lo de volta para sua camada original, pagará pelo tamanho total do conteúdo do objeto, mesmo se ele compartilhar blocos com outros objetos na camada original.
As operações que definem explicitamente a camada de um blob, versão ou instantâneo incluem:
- Definir Camada do Blob
- Put Blob com a camada especificada
- Put Block List com a camada especificada
- Copy Blob com a camada especificada
Como excluir um blob quando a exclusão temporária está habilitada
Quando você ativa a exclusão suave do blob, você paga por todas as entidades com soft delete na mesma taxa que os dados em tempo real. Se você deletar ou sobrescrever uma versão atual que tenha um nível explicitamente definido, você paga por quaisquer versões anteriores do blob deletado de forma suave no conteúdo completo. Para obter mais informações sobre como o controle de versão de blobs e a exclusão temporária funcionam juntos, confira controle de versão de e exclusão temporária de blob.
Suporte a recursos
O suporte para esse recurso pode ser afetado pela habilitação de Data Lake Storage Gen2, protocolo NFS (Sistema de Arquivos de Rede) 3.0 ou protocolo SFTP (Protocolo de Transferência de Arquivo SSH). Se você habilitou qualquer um desses recursos, consulte suporte a recursos do Armazenamento de Blobs em contas do Armazenamento do Azure para verificar sua compatibilidade.
A versionagem não é suportada para blobs que você envia usando APIs do Data Lake Storage.