Azure AD RBAC para Azure Storage

El pasado 25 de marzo se anunció la disponibilidad general del soporte de Azure Storage para el control de acceso basado en roles de Azure AD:

https://azure.microsoft.com/en-us/blog/azure-storage-support-for-azure-ad-based-access-control-now-generally-available/

De momento está disponible para Blobs y Colas (Queues). En el caso de Files está en preview y habría que habilitarlo para poder probarlo:

Vamos a ver en este post el proceso para habilitarlo para Blobs y cómo podemos comprobar su funcionamiento desde una aplicación como Storage Explorer.

Partimos de una cuenta de almacenamiento StandardV2:

Y creamos un contenedor de Blobs llamado documentos con un nivel de acceso público establecido como Private:

Subimos un archivo a este contenedor:

Y vamos a asignar un rol a un usuario de nuestro Azure AD para que acceda en modo sólo lectura a este contenedor. Se lo asignaremos al usuario “Usuario Blob 1”:

Para asignar el rol vamos al contenedor de Blobs que hemos llamado “documentos”:

Y entramos en “Access Control (IAM)”. Aquí podemos ver los roles que vienen predefinidos para el acceso a blobs. Entre otros tenemos:

Y vamos a asignar al usuario el rol de “Storage Blob Data Reader”, que como vemos, permite el acceso en modo lectura a contenedores y datos:

Asignamos el rol al usuario:

Además, este usuario también debe contar con el rol de Reader a nivel de la cuenta de almacenamiento:

Antes de probar el acceso, tenemos que cambiar el modo de autenticación en el contenedor, porque por defecto está basado en claves:

Para cambiar este modo de autenticación, el usuario que lo haga (nosotros como administradores, no el usuario al que estamos dando acceso al blob) debe tener los roles necesarios, ya que de lo contrario nos aparecerá este error:

Aunque el usuario que estamos usando para hacer el cambio sea el propietario de la suscripción, si no tiene explícitamente asignados los roles requeridos no podrá hacer el cambio. Estos roles son:

  • Reader a nivel de la cuenta de almacenamiento
  • Storage Blob Data Reader o Storage Blob Data Contributor a nivel de la cuenta de almacenamiento

Aquí vemos que a nuestro usuario administrador le hemos dado estos permisos de forma explícita sobre la cuenta de almacenamiento:

Con estos roles asignados ya podemos pasar el modo de autenticación en el contenedor a Azure AD:

Ahora vamos a probar el acceso de este usuario. Para esto vamos a utilizar Storage Explorer y empezamos conectando con las credenciales de este usuario:

Y comprobamos que este usuario tiene acceso al contenedor “documentos”:

Solo tiene permiso de lectura (Storage Blob Reader), por lo que si trata de eliminar el archivo, no estará autorizado:

O si trata de subir un archivo al contenedor, también obtendrá un error: