Deconstruyendo Azure Storage Account – Keys, SAS, Service Endpoints

En las próximas entradas voy a profundizar en un componente de Azure que día a día va cobrando mayor importancia, ya que permite configurar el tipo de almacenamiento, tipo de información a almacenar, seguridad y todo a unos costes muy contenidos. Estoy hablando de Azure Storage Account.

Como no quiero hacer una primera entrada muy teórica, me voy a saltar inicialmente los distintos tipos de almacenamiento, para saltar a la parte de conexión entre Azure Storage Explorer y nuestra cuenta de almacenamiento. Y como no hay mejor forma de explicar que mediante el «learning by doing», no me entretengo más, al lío.

Para ello, me voy a ayudar de una máquina virtual desplegada en Azure desde una de mis suscripciones para, mediante Azure Storage Explorer conectarme a al Storage Account y de este modo poder trabajar con los dos documentos que subiremos.

NOTA: Es interesante ésto, porque en uno de los ejemplos finales, restringiré la conexión a la cuenta de almacenamiento al Service Endpoints de la VNet donde se aloja la VM.

El primer caso, va a ser crear dentro de nuestra Storage Account un almacenamiento de tipo Blob y dentro de él un container. Lo llamaremos container1.

Una vez creado, subo un par de ficheros y listo, ya podemos empezar a probar los aspectos de seguridad y permisos mediante la asignación o retirada de los mismos.

Para ello, comienzo configurando el acceso desde el nuestro Storage Explorer. Que se realiza, seleccionando el icono de Storage Account y pulsando con el botón derecho de nuestro ratón para volver a hacer click sobre conectar con Azure Storage. En el siguiente paso, nos aparecerá el display que vemos junto debajo.

Llegados aquí, ya sólo queda seleccionar la primer opción, que es la más sencilla por tratarse de recursos creados en la misma suscripción de Azure. Para ello deberemos completar con éxito todos los de pasos que nos exige Azure para autenticarnos, como incluir el correo vinculado a la suscripción, nuestra clave, etc.

Buenos, pues nada más terminar el proceso vemos que hemos conseguido visualizar nuestra cuenta de almacenamiento. Así puedo desplegar su contenido y específicamente acceder al conjunto de ficheros del container1. Allí puedo ver los dos documentos que previamente cargué en el contenedor.

NOTA: Los mismos pasos deberían ser completados en caso de acceder desde cualquier otro ordenador para autenticarme contra mi cuenta de Azure.

Vamos a complicarlo un poco. Para ello lo primero es eliminar la conexión recién creada en el Azure del Storage Explorer y lo siguiente es tratar de conectarme mediante la segunda opción, es decir al Storage Account.

Observemos como en este caso me ofrece tres opciones.

Elijo la primera y en termino de completar los campos que me solicitan, por un lado el nombre de la conexión y en segundo lugar, el valor de la connection string

La cadena de conexión se encuentra accesible desde el menú de Access Key del Storage Account. Vemos que tenemos dos Keys, esto es muy útil cuando queremos regenerar una de ellas garantizando el acceso a los recursos mediante la segunda Key y su posterior actualización.

Pruebo a acceder desde mi Azure Storage Explorer y ahí están los ficheros, e incluso si pincho sobre alguno de ellos, soy capaz de ver su contenido. ¡Enhorabuena!

A continuación selecciono la segunda alternativa, aunque para este caso, previamente debo generar un Shared Access Signature al que aplico la caducidad de un día y copio. Veamos cómo.

Para ello, pincho en Shared Access Signature y lo configuro acotando el conjunto de recursos a los que permitir el acceso dentro de nuestra Storage Account. Además indico el tipo de recursos, permisos, etc.

Es importante controlar bien el acceso a los recursos, ya que si no selecciono Object, no podré acceder al fichero. Lo veremos más adelante, ahora nos limitamos a conceder acceso completo al Blob. Pulso el botón de generar y copio el contenido del último cuadro de texto.

Incluyo el valor copiado en el campo de Service URL y pulso Next.

Ahí de nuevo, tenemos nuestros dos ficheros.

Vemos incluso que podemos leer el contenido.

¿Qué sucede si eliminamos el permiso sobre el Object al crear la SAS?

Vemos que no podemos acceder al contenido del fichero. No está accesible, lo hemos restringido al cambiar la configuración sobre el Object.

¿Y si eliminamos el permiso al Container? Pues simplemente que no se accede a ellos. Es decir, ni tan siquiera están visibles al pulsar sobre el Blob.

Finalmente, si nos decantamos por conectar mediante Account Name y Key, debemos acceder al menú donde veíamos nuestras Keys, copiar el contenido de una de ellas y copiarla en el formulario de configuración de la conexión.

Tras copiar el contenido de la Key en el campo de Account Key, sólo nos queda indicar el nombre de la cuenta de almacenamiento. Esta es la razón por la cual cada cuenta tiene un nombre único en todo Azure.

Probamos y vemos que podemos acceder tanto a la Storage Account, como a los Containers y los ficheros que ellos contienen.

Networking

Una forma muy eficiente de limitar los accesos a nuestro Storage Account es a través de la configuración de los tipos de acceso. Por ejemplo limitando éste mediante la selección de un conjunto de redes específico.

Lo primero que debes hacer es verificar que la VNet de tu VM dispone de un Service Endpoints para Storage Account, sino crearlo.

Una vez creado, sólo tenemos que seleccionarlo desde el área de Networking del Storage Account como vemos en la pantalla

Vemos que al generar el SAS y configurar la conexión desde el Azure Storage Explorer, somos capaces de acceder a los ficheros.

Si por contra, trato de acceder con la misma SAS desde el Azure Storage Explorer de mi ordenador, el resultado es que me devuelve un error.

Es tremendamente importante desde el punto de vista de la arquitectura y seguridad del dato, conocer la mejor forma de restringir el acceso a la información. Por eso componentes como Azure Storage Account nos permite elegir entre un amplio conjunto de soluciones.

En próximas entradas, seguiré hablando de las cuentas de almacenamiento y los distintos tipos de almacenamiento, ya que en este nos hemos limitado a la configuración de las conexiones para Blob Storage y creo que merece la pena conocer cómo conectar con el resto, pero sobre todo entender los casos de uso a los que dan respuesta.

Publicado por alb3rtoalonso

Soy un enamorado del poder de los datos. Entusiasta de la mejora y formación continua.

Deja una respuesta

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Salir /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Salir /  Cambiar )

Conectando a %s

A %d blogueros les gusta esto: