2012-03-14 17 views
7

¿Cuál es la mejor manera de proteger blobs en el almacenamiento de Windows Azure para un conjunto específico de usuarios? Por ejemplo, tengo un sitio web ASP.NET (intranet) local con un almacenamiento de blobs de Windows Azure de respaldo para archivos de gran tamaño. Me gusta la idea de una URL firmada para la seguridad de cada blob individual, pero ¿realmente funcionaría para un blob que estará allí por un largo tiempo? (¿infinito?)Blobs seguras en Azure

Necesito niveles granulares de seguridad en el blob solo para usuarios específicos (¿cómo puedo lograr esto fácilmente con Blob Storage)? * Nota: creo que no debería necesitar el ACS. Quiero lograrlo usando Políticas y URL firmadas si es posible.

Segunda pregunta, supongo que también puedo proteger estos datos en la CDN de la misma manera, ¿alguien puede confirmar?

Gracias

Política de acceso compartido con un trabajo a tiempo infinito y privilegios en la burbuja por ejemplo, leer el trabajo?

Respuesta

18

Si necesita que el blob esté disponible para usuarios individuales durante más de una hora, debe usar una política SAS adjunta al contenedor. Sin embargo, dado que puede tener un máximo de 5 por contenedor, no escalará bien para muchos usuarios. Una política SAS puede tener un vencimiento medido en años.

La solución más típica aquí es que un usuario acceda a su sitio web o servicio y los autentique de la forma que elija. Cuando realmente deseen descargar el archivo, debe generar una firma SAS por única vez con un vencimiento más corto (no una política). Esto se escala bien y evita su reutilización por usuarios no autorizados más adelante en el tiempo. También obtienes la ventaja de servir desde el almacenamiento y no tu función web.

Las cosas se vuelven más complicadas cuando usas CDN. Por lo tanto, aunque puede usar la firma SAS en el recurso CDN, no están realmente honrados. Es decir, la URL única es la clave del recurso subyacente. Por lo tanto, cuando solicite un blob seguro de SAS, simplemente lo insertará en CDN y lo servirá usando ese URI como clave. A continuación, utilizará la política de caché de CDN (no la caducidad de SAS) para servir en el futuro. Esto puede llevar a un escenario en el que el URI de blob expira en 10 minutos, pero CDN guardará en caché ese blob utilizando la misma firma de SAS durante días, dependiendo de la política de caducidad. CDN nunca volverá a ponerse en contacto con el almacenamiento para validarlo. Por lo tanto, probablemente no sea una buena idea usar esto. Además, dado que cada recurso CDN tiene una clave para el URI, también significa que almacenará en la memoria caché muchas copias del mismo archivo (aumentando la carga de la transacción y el ancho de banda) cada vez que cambie la firma del SAS. Para resumir, CDN y SAS no se mezclan bien.

+0

Gracias Ryan, justo lo que estaba buscando! – user728584

+0

Y definitivamente esto no soluciona el problema. –

3

No puedo ayudarte con el CDN ya que no tengo experiencia en el uso de este, aunque espero que funcione de manera similar.

Lo que haría en este caso es generar una firma de acceso compartido cada vez que el usuario intente acceder a un archivo. Puede mantener dentro de su aplicación las reglas de acceso que determinan si un usuario puede acceder a un archivo determinado o no.

Cuando se solicita ese archivo, se genera una Firma de acceso compartido sobre la marcha (ver here para detalles) y se lo entrega al usuario.

Esto tiene la ventaja de que las descargas de archivos no se bombean a través de su función web, sino que se descargan al usuario directamente desde el almacenamiento de blob.

+0

Gracias David ... – user728584

Cuestiones relacionadas