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

Una directiva de escribir una vez, leer muchas (WORM) de nivel de versión es un tipo de directiva de inmutabilidad que se puede establecer en el 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árquico.

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 habilitar el control de versiones puede afectar a la facturación. Para obtener más información, consulte la sección Precios y facturación para el control de versiones de blobs.

Una vez habilitado 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 versión nueva que almacena el estado anterior del blob. Cuando elimina la versión actual de un blob, la versión actual se convierte en una versión actual y se retiene hasta que se elimina de manera explícita. Una versión de blob anterior posee la directiva de retención con duración definida que estaba en vigor cuando la versión actual se convirtió en una versión anterior.

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

Cada versión puede tener configurada solo una directiva de retención con duración definida. Una versión también puede tener configurada una suspensión legal.

Para aprender a configurar las directivas de retención con duración definida en el nivel de versión, consulte Configuración de directivas de inmutabilidad para versiones de blobs.

Habilitación y configuración de directiva

El uso de directivas inmutables con WORM de nivel de versión es un proceso de dos pasos. Primero, habilite la inmutabilidad en el 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 de 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 directiva para el almacenamiento inmutable de nivel de versión en el nivel de blob.

Migración

Los contenedores existentes pueden admitir la inmutabilidad en el nivel de versión, pero primero deben pasar por un proceso de migración. Este proceso puede tardar cierto 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. Para más información sobre cómo migrar un contenedor para admitir la inmutabilidad en el nivel de versión, consulte la sección sobre la migración de un contenedor existente para admitir la inmutabilidad en el nivel de versión.

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

Después de habilitar la compatibilidad con la inmutabilidad en el nivel de versión para una cuenta de almacenamiento o contenedor, tiene la opción de configurar una directiva de retención con duración definida predeterminada para la cuenta o el contenedor. Al configurar una directiva de retención con duración definida predeterminada 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 en la carga mediante la configuración de una directiva personalizada para ese blob.

Si la directiva de retención con duración definida predeterminada para la cuenta o el contenedor está desbloqueada, la versión actual de un blob que hereda la directiva predeterminada también tendrá una directiva desbloqueada. Después de cargar un blob individual, puede acortar o ampliar el período de retención de la directiva en la versión actual del blob o bien eliminar la versión actual. También puede bloquear la directiva para la versión actual, incluso si la directiva predeterminada en la cuenta o el contenedor permanece desbloqueada.

Si la directiva de retención con duración definida predeterminada 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 invalida la directiva predeterminada al cargar un blob estableciendo una directiva solo para ese blob, la directiva de ese blob permanece 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 ninguna directiva.

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

En la tabla siguiente se muestran las distintas opciones disponibles para establecer una directiva de retención con duración definida en un blob durante la carga:

Estado de la directiva predeterminada en la cuenta o el contenedor Carga de un blob con la directiva 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 N/D 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 versión anterior nueva de ese blob que guarda el estado del blob antes de la operación. De manera predeterminada, una versión anterior posee la directiva de retención con duración definida que estaba en vigor para la versión actual, si la hubiese, 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 la directiva heredada por una versión anterior está desbloqueada, es posible acortar o ampliar 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, el intervalo de retención se puede ampliar. La directiva no se puede eliminar 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 de 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 habilitada, 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 blobs y Colocar página No se puede eliminar la versión de blob. No se pueden escribir los 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 que tenga habilitado el almacenamiento inmutable de nivel de versión 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 Colocar blob, Colocar lista de bloque o Copiar 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 ofrecen protección contra eliminación.

1 Las versiones de blob siempre son inmutables para el contenido. Si el control de versiones está habilitado para una cuenta de almacenamiento, una operación de escritura en un blob en bloques crea una nueva versión, con la 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