Compartir a través de


Directivas de escribir una vez, leer muchas (WORM) de nivel de versión para datos de blobs inmutables

Una política de 'escriba una vez, lea muchas veces' (WORM) de nivel de versión es un tipo de directiva de inmutabilidad que se puede establecer a nivel de cuenta, contenedor o versión. Para obtener más información sobre el almacenamiento inmutable para Azure Blob Storage, consulte Almacenar datos de blobs críticos para la empresa con almacenamiento inmutable en un estado de escribir una vez, leer muchas (WORM).

Disponibilidad

Las directivas de inmutabilidad de nivel de versión (VLW) se admiten en el nivel de cuenta para las cuentas nuevas, y en el nivel de contenedor y blob para cuentas o contenedores nuevos y existentes. Estas directivas son compatibles con cuentas de blobs en bloques premium y de uso general v2. Esta característica no se admite en cuentas de espacio de nombres jerárquicos.

Dependencia de versión

Las directivas de nivel de versión requieren que el control de versiones de blobs esté habilitado para la cuenta de almacenamiento. Para obtener información sobre cómo habilitar el control de versiones de blobs, consulte Habilitación y administración del control de versiones de blobs. Tenga en cuenta que la habilitación del control de versiones puede tener un impacto en la facturación. Para más información, consulte la sección Precios y facturación de Blob Versioning.

Después de habilitar el control de versiones, cuando se carga por primera vez un blob, esa versión del blob es la versión actual. Cada vez que se sobrescribe el blob, se crea una nueva versión que almacena el estado anterior del blob. Al eliminar la versión actual de un blob, la versión actual se convierte en una versión anterior y se conserva hasta que se elimina explícitamente. Una versión anterior de blob posee la directiva de retención basada en el tiempo que estaba en vigor en el momento en que la versión actual se convirtió en una versión anterior.

Si una directiva predeterminada está en vigor para la cuenta de almacenamiento o el contenedor, cuando una operación de sobrescritura crea una versión anterior, la nueva versión actual hereda la directiva predeterminada para la cuenta o el contenedor.

Cada versión solo puede tener configurada una directiva de retención basada en el tiempo. Una versión también puede tener configurada una suspensión legal.

Para aprender a configurar directivas de retención a nivel de versión basadas en el tiempo, consulte Configurar políticas de inmutabilidad para versiones de blobs.

Habilitación y configuración de políticas

El uso de directivas inmutables con WORM de nivel de versión es un proceso de dos pasos. En primer lugar, habilite la inmutabilidad de nivel de versión. A continuación, puede establecer directivas de inmutabilidad de nivel de versión.

Para establecer una directiva en el nivel de cuenta de almacenamiento, primero debe habilitar WORM a nivel de versión en la cuenta de almacenamiento. Solo puede hacerlo en el momento de creación de la cuenta. No hay ninguna opción para habilitar WORM de nivel de versión para las cuentas preexistentes.

Diagrama de configuración de una directiva para el almacenamiento inmutable de nivel de versión en el nivel de cuenta.

Para establecer una directiva en el nivel de contenedor, primero debe habilitar WORM de nivel de versión en la cuenta O BIEN en el contenedor.

Si planea habilitar WORM de nivel de versión en un contenedor, Microsoft recomienda habilitarlo en el momento de la creación del contenedor. Sin embargo, puede migrar un contenedor habilitado para WORM que no sea de nivel de versión a un contenedor habilitado para WORM de nivel de versión. Si decide no migrar un contenedor, todavía puede establecer una directiva WORM de nivel de contenedor en ese contenedor, pero la opción para establecer directivas de nivel de blob no estará disponible en ese contenedor.

Diagrama de configuración de una directiva para el almacenamiento inmutable de nivel de versión en el nivel de contenedor.

Para establecer una directiva en el nivel de blob, debe habilitar WORM de nivel de versión en la cuenta o el contenedor. No hay ninguna opción para habilitar WORM de nivel de versión en el nivel de blob; se debe heredar.

Diagrama de configuración de una política de almacenamiento inmutable a nivel de versión en el nivel de blob.

Migración

Los contenedores existentes pueden admitir la inmutabilidad de nivel de versión, pero primero deben someterse a un proceso de migración. Este proceso puede tardar algún tiempo. Una vez habilitado, no se puede quitar la compatibilidad de WORM de nivel de versión para ese contenedor. Puede migrar diez contenedores a la vez por cuenta de almacenamiento. La cantidad de tiempo que se tarda en migrar depende principalmente de la cantidad de blobs del contenedor. Los contenedores con un gran número de blobs tardarán mucho más tiempo en migrarse. Para obtener más información sobre cómo migrar un contenedor para admitir la inmutabilidad de nivel de versión, consulte Migración de un contenedor existente para admitir la inmutabilidad de nivel de versión.

Configuración de una directiva en la versión actual

Después de habilitar la compatibilidad con la inmutabilidad de nivel de versión para una cuenta o contenedor de almacenamiento, tiene la opción de configurar una directiva de retención predeterminada basada en el tiempo para la cuenta o el contenedor. Al configurar una directiva de retención predeterminada basada en el tiempo para la cuenta o el contenedor y, a continuación, cargar un blob, el blob hereda esa directiva predeterminada. También puede optar por invalidar la directiva predeterminada para cualquier blob al cargar mediante la configuración de una directiva personalizada para ese blob.

Si se desbloquea la directiva de retención predeterminada basada en el tiempo para la cuenta o el contenedor, la versión actual de un blob que hereda la directiva predeterminada también tendrá una directiva desbloqueada. Una vez cargado un blob individual, puede acortar o ampliar el período de retención de la directiva en la versión actual del blob o eliminar la versión actual. También puede bloquear la directiva para la versión actual, incluso si la directiva predeterminada de la cuenta o contenedor permanece desbloqueada.

Si la directiva de retención predeterminada basada en el tiempo para la cuenta o el contenedor está bloqueada, la versión actual de un blob que hereda la directiva predeterminada también tendrá una directiva bloqueada. Sin embargo, si anula la directiva predeterminada al cargar un blob estableciendo una directiva solo para ese blob, la directiva de ese blob permanecerá desbloqueada hasta que la bloquee explícitamente. Cuando la directiva de la versión actual está bloqueada, puede ampliar el intervalo de retención, pero no puede eliminar la directiva ni acortar el intervalo de retención.

Si no hay ninguna directiva predeterminada configurada para la cuenta de almacenamiento o el contenedor, puede cargar un blob con una directiva personalizada o sin directiva.

Si se modifica la directiva predeterminada en una cuenta de almacenamiento o contenedor, las directivas de los objetos de ese contenedor permanecen sin cambios, incluso si esas directivas se heredaron de la directiva predeterminada.

En la tabla siguiente se muestran las distintas opciones disponibles para establecer una directiva de retención basada en el tiempo en un blob al cargar:

Estado de la directiva predeterminada en la cuenta o el contenedor Sube un blob con la política predeterminada Carga de un blob con una directiva personalizada Carga de un blob sin ninguna directiva
Directiva predeterminada en la cuenta o el contenedor (desbloqueada) El blob se carga con la directiva predeterminada desbloqueada El blob se carga con la directiva personalizada desbloqueada El blob se carga sin ninguna directiva
Directiva predeterminada en la cuenta o el contenedor (bloqueada) El blob se carga con la directiva predeterminada bloqueada El blob se carga con la directiva personalizada desbloqueada El blob se carga sin ninguna directiva
No hay directiva predeterminada en una cuenta o un contenedor No disponible El blob se carga con la directiva personalizada desbloqueada El blob se carga sin ninguna directiva

Configuración de una directiva en una versión anterior

Cuando el control de versiones está habilitado, una operación de escritura o eliminación en un blob crea una nueva versión anterior de ese blob que guarda el estado del blob antes de la operación. De forma predeterminada, una versión anterior posee la directiva de retención basada en el tiempo que estaba en vigor para la versión actual, si existe, cuando la versión actual se convirtió en una versión anterior. La versión actual nueva hereda la directiva en el contenedor, si la hay.

Si se desbloquea la directiva heredada por una versión anterior, se puede acortar o alargar el intervalo de retención, o bien se puede eliminar la directiva. La directiva de una versión anterior también se puede bloquear para esa versión, incluso si la directiva de la versión actual está desbloqueada.

Si la directiva heredada por una versión anterior está bloqueada, se puede alargar el intervalo de retención. No se puede eliminar la directiva ni se puede acortar el intervalo de retención. Si no hay ninguna directiva configurada en la versión actual, la versión anterior no hereda ninguna directiva.

Puede configurar una directiva personalizada para la versión. Si se modifica la directiva en una versión actual, las directivas de las versiones anteriores existentes permanecen sin cambios, incluso si la directiva se heredó de una versión actual.

Eliminación

Una vez habilitada una cuenta o contenedor para una directiva inmutable, no se puede eliminar hasta que esté vacía. Lo principal que hay que tener en cuenta es que no importa si se ha establecido una directiva inmutable en una cuenta o contenedor de WORM de nivel de versión, importa si está habilitada para una directiva. Una vez que sea así, la cuenta o el contenedor deben estar vacíos para eliminarse.

Diagrama que muestra el orden de las operaciones en la eliminación de una cuenta que tiene una directiva de inmutabilidad de nivel de versión.

Escenarios

Escenario Operaciones prohibidas Protección de blobs Protección de contenedores Protección de cuentas
Una versión de blob está protegida por una directiva de retención activa o hay en vigor una suspensión legal Eliminar Blob, Establecer metadatos de Blob y Insertar página No se puede eliminar la versión de blob. No se pueden escribir metadatos de usuario.
Sobrescribir un blob con Put Blob, Put Block List o Copy Blob crea una nueva versión1.
Se produce un error en la eliminación del contenedor si existe al menos un blob en el contenedor, independientemente de si la directiva está bloqueada o desbloqueada. Se produce un error en la eliminación de la cuenta de almacenamiento si hay al menos un contenedor con almacenamiento inmutable de nivel de versión habilitado o si está habilitado para la cuenta.
Una versión de blob está protegida por una directiva de retención expirada y no hay en vigor una suspensión legal Establecer metadatos de blobs y Colocar página Una versión de blob está protegida por una directiva de retención expirada y no hay en vigor una suspensión legal Se puede eliminar la versión de blob.
Sobrescribir un blob con Put Blob, Put Block List o Copy Blob crea una nueva versión1.
La eliminación de la cuenta de almacenamiento produce un error si hay al menos un contenedor que incluye una versión de blob con una directiva de retención con duración definida bloqueada.
Las directivas desbloqueadas no proporcionan protección de eliminación.

1 Las versiones de blobs son siempre inmutables en cuanto al contenido. Si el control de versiones está habilitado para la cuenta de almacenamiento, una operación de escritura en un blob en bloques crea una nueva versión, a excepción de la operación Put Block.

Límites

Solo puede haber 10 000 contenedores establecidos con directivas de retención basadas en el tiempo únicas en una cuenta. Sin embargo, puede establecer una directiva de nivel de cuenta que heredarán más de 10 000 contenedores.

Pasos siguientes