Sto lavorando a una soluzione in cui un numero limitato di utenti autenticati deve avere accesso completo a un set di contenitori di archiviazione BLOB di Azure. Al momento ho implementato un sistema con accesso pubblico e mi chiedo se è necessario complicare ulteriormente il sistema o se questo sistema sia sufficientemente sicuro. Ho analizzato brevemente come funziona Shared Access Signatures (SAS), ma non sono sicuro che sia davvero necessario, e quindi chiedo spiegazioni. L'obiettivo è consentire solo agli utenti autenticati di avere pieno accesso ai contenitori BLOB e ai loro contenuti.Opzioni di sicurezza di archiviazione BLOB di Azure in MVC
L'attuale sistema imposta le autorizzazioni nel modo seguente (C#, MVC):
// Retrieve a reference to my image container
myContainer = blobClient.GetContainerReference("myimagescontainer");
// Create the container if it doesn't already exist
if (myContainer.CreateIfNotExists())
{
// Configure container for public access
var permissions = myContainer.GetPermissions();
permissions.PublicAccess = BlobContainerPublicAccessType.Container;
myContainer.SetPermissions(permissions);
}
Di conseguenza, tutte le macchie sono completamente accessibili fino a quando si ha l'URL completo, ma non sembra essere possibile elencare le macchie nel contenitore direttamente tramite l'URL:
// This URL allows you to view one single image directly:
'https://mystorageaccount.blob.core.windows.net/mycontainer/mycontainer/image_ea644f08-3263-4a7f-9be7-bc42efbf8939.jpg'
// These URLs appear to return to nothing but an error page:
'https://mystorageaccount.blob.core.windows.net/mycontainer/mycontainer/'
'https://mystorageaccount.blob.core.windows.net/mycontainer/'
'https://mystorageaccount.blob.core.windows.net/'
io non lo trovo un problema che autenticati agli utenti di condividere URL completi, consentendo l'accesso pubblico ad una singola immagine; tuttavia, nessuno tranne gli utenti autenticati dovrebbe essere in grado di elencare, sfogliare o accedere direttamente ai contenitori per recuperare altre immagini.
La mia domanda diventa quindi se dovrei proteggere ulteriormente il sistema, ad esempio utilizzando SAS, quando ora sembra funzionare come previsto, o lasciare il sistema così com'è. Potresti capire che mi piacerebbe non complicare il sistema se non strettamente necessario. Grazie!
La soluzione che ho finito per usare è stato dato seguito :)
Vedendo ora quanto è facile elencare il contenuto di un contenitore pubblico, sono assolutamente d'accordo con te. Grazie! –