En Azure, sobretodo en entornos en que aplicaciones u otros usuarios interactúen con nuestros blobs y ficheros es importante asegurar estos datos. La funcionalidad de soft delete o de eliminación temporal en Azure, nos permite poder recuperar ficheros, snapshots o blobs eliminados dentro de un periodo de tiempo especificado, vamos a ver cómo lo podemos activar de manera sencilla con Powershell.
En Azure tenemos a nuestra disposición una gran variedad de recursos, si nos centramos en los datos almacenados disponemos del almacenamiento de Blobs que nos permite almacenar todo tipo de datos no estructurados de manera cuasi ilimitada y por otro lado el File Storage más enfocado a reemplazar el almacenamiento clásico de ficheros en sus formatos más habituales.
Independientemente del servicio que utilicemos, como decíamos es una obligación el asegurar esos datos y su potencial recuperación en caso de fallo o desastre, en este punto es donde nos puede ayudar activar la eliminación temporal (soft delete) en estos servicios, gracias al cual podríamos recuperar los mismos.
A tener en cuenta, como todo (o casi) en la nube tiene un precio, por lo que al activar este servicio los datos en estado de “soft delete” ocuparán espacio y serán facturados de la misma manera que los datos en producción, por lo que es importante valorar pros y contras y ajustar la funcionalidad a determinados recursos.
Conexión a nuestra cuenta en Azure
Para configurar esta funcionalidad primero conectamos a nuestra cuenta con
Connect-AzAccount
Seguidamente especificamos nuestra subscripción, las listamos con el cmdlet Get-AzSubscription y seguidamente la seleccionamos
Get-AzSubscription
Select-AzSubscription -Subscription "cyberseguridad.net"
Definición de variables
En el siguiente ejemplo activaremos el soft delete para una cuenta de almacenamiento. Para ello, como vemos a continuación obtenemos el objeto de cuenta de almacenamiento a raiz de la previa definición del nombre de la misma y del nombre del grupo de recursos en la que se encuentra.
$nombregruporecursos = "demorecursos"
$nombrecuentaalmacenamiento = "demoalmacenamiento"
$cuentaalmacenamiento = Get-AzStorageAccount -Name $nombrecuentaalmacenamiento -ResourceGroupName $nombregruporecursos
Para obtener estos datos podemos usar el cmdlet Get-AzStorageAccount que nos mostrará las diferentes cuentas de almacenamiento que tengamos además de mostrar el correspondiente grupo de recursos.
Gestionando la configuración de eliminación temporal en blobs
Antes de nada, vamos a comprobar la configuración actual de esta política, utilizando el cmdlet Get-AzStorageServiceProperty
Get-AzStorageServiceProperty -Context $cuentaalmacenamiento.Context -ServiceType Blob | Select-Object -ExpandProperty DeleteRetentionPolicy
Ahi veremos claramente si la propiedad DeleteRetentionPolicy está o no activada, y en caso que lo esté qué cantidad de días tiene especificado. Para activar la funcionalidad utilizaremos el cmdlet Enable-AzStorageDeleteRetentionPolicy como vemos a continuación. En el siguiente ejemplo hemos marcado una retención de 15 dias.
Enable-AzStorageDeleteRetentionPolicy -StorageAccount $cuentaalmacenamiento
Si lo queremos desactivar pues algo similar con el cmdlet Disable-AzStorageDeleteRetentionPolicy. En el ejemplo vemos la desactivación de la funcionalidad por cuenta de almacenamiento, también lo podríamos aplicar sobre un grupo de recursos completo afectando a varias cuentas de almacenamiento, etc..
Disable-AzStorageDeleteRetentionPolicy -StorageAccount $cuentaalmacenamiento
Gestionando la configuración de eliminación temporal en Azure File Service
De la misma manera podemos activar la potencial recuperación de archivos borrados en el servicio de Azure File Service, para ello usaremos de nuevo las variables definidas anteriormente. Como en el anterior ejemplo primero vamos a comprobar si está opción está ya activada con el cmdlet Get-AzStorageFileServiceProperty
Get-AzStorageFileServiceProperty -StorageAccountName $nombrecuentaalmacenamiento -ResourceGroupName $nombregruporecursos | Select-Object ShareDeleteRetentionPolicy | Format-Custom
Para activarlo utilizaremos el cmdlet Update-AzStorageFileServiceProperty como vemos a contiinuación.
Update-AzStorageFileServiceProperty -StorageAccountName $nombrecuentaalmacenamiento -ResourceGroupName $nombregruporecursos -EnableShareDeleteRetentionPolicy $true -ShareRetentionDays 15
Lo podemos desactivar, simplemente marcando como “false” la propiedad EnableShareDeleteRetentionPolicy
Update-AzStorageFileServiceProperty -StorageAccountName $nombrecuentaalmacenamiento -ResourceGroupName $nombregruporecursos -EnableShareDeleteRetentionPolicy $false