Condividi tramite


Spazio di memorizzazione isolato

L'archiviazione isolata è un meccanismo di archiviazione dati che offre isolamento e sicurezza definendo modi standardizzati di associare il codice ai dati salvati. La standardizzazione offre anche altri vantaggi. Gli amministratori possono utilizzare strumenti in grado di modificare l'archiviazione isolata per configurare lo spazio di archiviazione dei file, per impostare i criteri di sicurezza e per eliminare dati inutilizzati. Con lo spazio di memorizzazione isolato, non occorre più fornire al codice percorsi univoci per individuare posizioni sicure nel file system e i dati sono protetti da altre applicazioni che dispongono esclusivamente dell'accesso allo spazio di memorizzazione isolato. Non è necessario specificare informazioni hardcoded che indicano il percorso dell'area di archiviazione di un'applicazione.

Di seguito sono elencate le diverse sezioni di questo argomento:

  • Raggruppamenti e archivi dati

  • Accesso sicuro

  • Percorsi dello spazio di memorizzazione isolato

  • Creazione, enumerazione ed eliminazione dello spazio di memorizzazione isolato

  • Scenari per l'utilizzo dell'archiviazione isolata

  • Argomenti correlati

  • Riferimenti

Raggruppamenti e archivi dati

Quando un'applicazione memorizza dati in un file, il nome del file e il percorso di archiviazione devono essere scelti attentamente, per ridurre la possibilità che il percorso di archiviazione venga individuato da un'altra applicazione e sia quindi soggetto a danneggiamenti. Senza un sistema standard in grado di gestire questi problemi, può risultare complesso sviluppare tecniche specifiche che riducano i conflitti di archiviazione e i risultati conseguiti potrebbero non essere affidabili.

Con l'archiviazione isolata i dati vengono sempre isolati in base all'utente o all'assembly. L'identità dell'assembly viene determinata da credenziali quali l'origine o il nome sicuro. I dati possono essere isolati anche in base al dominio applicazione, utilizzando credenziali analoghe.

Quando si utilizza lo spazio di memorizzazione isolato, le applicazioni salvano i dati in un raggruppamento dati univoco, associato ad alcuni aspetti dell'identità del codice quali l'autore o la firma. Il contesto dati è un'astrazione, non è un percorso di archiviazione specifico. È costituito da uno o più file di archiviazione isolata, denominati archivi, contenenti i percorsi di directory in cui sono effettivamente memorizzati i dati. È possibile, ad esempio, che a un'applicazione sia associato un raggruppamento dati e che una directory del file system implementi l'archivio in cui sono effettivamente conservati i dati dell'applicazione. Nell'archivio è possibile salvare qualsiasi tipo di dati, dalle preferenze utente allo stato dell'applicazione. Il percorso del contesto dati è trasparente allo sviluppatore. Gli archivi solitamente risiedono sul client, ma un'applicazione server può utilizzare archivi isolati per memorizzare informazioni impersonando l'utente che la utilizza. Tramite l'archiviazione isolata è inoltre possibile memorizzare informazioni su un server con un profilo utente comune, in modo che sia possibile spostare le informazioni insieme all'utente.

Torna all'inizio

Accesso sicuro

L'utilizzo dell'archiviazione isolata consente alle applicazioni parzialmente attendibili di archiviare i dati in modo controllato dal criterio di sicurezza del computer. Questa caratteristica si rivela particolarmente utile per l'esecuzione controllata di componenti scaricati. I criteri di sicurezza concedono raramente questo tipo di autorizzazione del codice per accedere al file system utilizzando meccanismi di I/O standard. Tuttavia, per impostazione predefinita, all'esecuzione di codice dal computer locale, da una rete locale o da Internet è concesso il diritto di utilizzare lo spazio di memorizzazione isolato.

Gli amministratori possono limitare lo spazio di archiviazione isolata a disposizione di un'applicazione o di un utente, in base a un appropriato livello di attendibilità. Gli amministratori possono inoltre rimuovere completamente i dati persistenti di un utente. Per creare o accedere a spazio di memorizzazione isolato è necessario che il codice disponga di un oggetto IsolatedStorageFilePermission appropriato.

Per accedere all'archiviazione isolata, il codice deve disporre di tutti i diritti nativi del sistema operativo della piattaforma. In Windows 2000 è ad esempio necessario soddisfare gli elenchi di controllo di accesso (ACL, Access Control List) che determinano quali utenti dispongono dei diritti per l'utilizzo del file system. Le applicazioni .NET Framework dispongono già dei diritti del sistema operativo per accedere allo spazio di memorizzazione isolato, a meno che non eseguano la rappresentazione (specifica della piattaforma). In questo caso l'applicazione deve verificare che l'identità dell'utente impersonato disponga di appropriati diritti del sistema operativo per accedere all'archiviazione isolata. Tale tipo di accesso consente al codice che è in esecuzione o che viene scaricato dal Web di leggere e scrivere in un'area di archiviazione relativa a un particolare utente.

Torna all'inizio

Percorsi dello spazio di memorizzazione isolato

Talvolta risulta utile verificare una modifica nello spazio di memorizzazione isolato utilizzando il file system del sistema operativo. È possibile che gli sviluppatori debbano conoscere il percorso dei file di archiviazione isolata. Il percorso varia in base al sistema operativo. Nella tabella che segue vengono illustrati i percorsi principali in cui viene creata l'archiviazione isolata in alcuni sistemi operativi. Cercare la directory Microsoft\IsolatedStorage in questo percorso radice. Per visualizzare cartelle e file nascosti, in modo da poter individuare l'archiviazione isolata nel file system, è necessario modificare le impostazioni della cartella.

Sistema operativo

Percorso nel file system

Windows 98, Windows Me - profili utente non attivati

Archivi abilitati per profili utente comuni =

<SYSTEMROOT>\Application Data

Archivi non abilitati per profili utente comuni = WINDOWS\Local Settings\Application Data

Windows 98, Windows Me - profili utente non attivati

Archivi abilitati per profili utente comuni =

<SYSTEMROOT>\Profiles\<utente>\Application Data

Archivi non abilitati per profili utente comuni = Windows\Windows\Local Settings\Application Data

Windows NT 4.0

<SYSTEMROOT>\Profiles\<utente>\Application Data

Windows NT 4.0 - Service Pack 4

Archivi abilitati per profili utente comuni =

<SYSTEMROOT>\Profiles\<utente>\Application Data

Archivi non abilitati per profili utente comuni =

<SYSTEMROOT>\Profiles\<utente>\Local Settings\Application Data

Windows 2000, Windows XP, Windows Server 2003 - aggiornamento da Windows NT 4.0

Archivi abilitati al roaming =

<SYSTEMROOT>\Profiles\<utente>\Application Data

Archivi non abilitati per profili utente comuni =

<SYSTEMROOT>\Profiles\<utente>\Local Settings\Application Data

Windows 2000 - installazione pulita (e aggiornamenti da Windows 98 e Windows NT 3.51)

Archivi abilitati al roaming =

<SYSTEMDRIVE>\Documents and Settings\<utente>\Application Data

Archivi non abilitati per profili utente comuni =

<SYSTEMDRIVE>\Documents and Settings\<utente>\Local Settings\Application Data

Windows XP, Windows Server 2003 - installazione pulita (e aggiornamenti da Windows 2000 e Windows 98)

Archivi abilitati al roaming =

<SYSTEMDRIVE>\Documents and Settings\<utente>\Application Data

Archivi non abilitati per profili utente comuni =

<SYSTEMDRIVE>\Documents and Settings\<utente>\Local Settings\Application Data

Windows Vista

Archivi con supporto roaming =

<SYSTEMDRIVE>\Users\<utente>\AppData\Roaming

Archivi non abilitati al roaming =

<SYSTEMDRIVE>\Users\<utente>\AppData\Local

Torna all'inizio

Creazione, enumerazione ed eliminazione dello spazio di memorizzazione isolato

Vengono fornite tre classi principali per consentire l'esecuzione di attività relative all'archiviazione isolata:

Le classi di archiviazione isolata consentono di creare, enumerare ed eliminare l'archiviazione isolata. I metodi per l'esecuzione di queste attività sono disponibili tramite l'oggetto IsolatedStorageFile. Per alcune operazioni occorre disporre di IsolatedStorageFilePermission, che rappresenta il diritto di amministrare lo spazio di memorizzazione isolato. Potrebbero essere necessari anche i diritti di sistema operativo per accedere al file o alla directory. In Microsoft Windows NT, Microsoft Windows 2000, Windows XP e Windows Vista le impostazioni dell'elenco di controllo di accesso (ACL, Access Control List) associato al file possono impedire l'accesso allo spazio di memorizzazione isolato. Lo strumento di archiviazione isolata, Storeadm.exe, può essere utilizzato anche per semplici operazioni di gestione di archivi, ad esempio per elencare o eliminare tutti gli archivi dell'utente corrente.

Per una serie di esempi che illustrano le attività dello spazio di memorizzazione isolato comuni, vedere gli argomenti relativi alle procedure elencati in Argomenti correlati. A ogni esempio è associato un file di origine che illustra un'attività specifica. Le istruzioni per l'impostazione, la compilazione e l'esecuzione sono incluse nella pagina principale di ciascun esempio. Gli esempi sono forniti solo in C#.

Torna all'inizio

Scenari per l'utilizzo dell'archiviazione isolata

L'archiviazione isolata risulta utile in molte situazioni. Di seguito vengono descritti cinque tra i migliori scenari di possibile applicazione:

  • Controlli di cui è stato eseguito il download. Ai controlli di codice gestito scaricati da Internet non è consentito scrivere sul disco fisso mediante le normali classi di I/O, ma è permesso l'utilizzo dell'archiviazione isolata per la memorizzazione degli stati dell'applicazione e delle impostazioni dell'utente.

  • Archiviazione di componenti condivisi. I componenti condivisi tra le applicazioni possono utilizzare l'archiviazione isolata per fornire accesso controllato agli archivi di dati.

  • Archiviazione server. Le applicazioni server possono utilizzare l'archiviazione isolata per fornire singoli archivi a un ampio numero di utenti che inoltrano richieste all'applicazione. Poiché l'archiviazione isolata è sempre isolata dall'utente, il server deve impersonare l'utente che inoltra la richiesta. In questo caso, i dati vengono isolati in base all'identità del principale, che è la stessa utilizzata dall'applicazione per distinguere gli utenti.

  • Roaming. Le applicazioni possono anche utilizzare l'archiviazione isolata con i profili di utente roaming. In questo modo gli archivi isolati di un utente possono spostarsi con il profilo.

Benché l'adozione dell'archiviazione isolata sia opportuna per gli scenari sopra descritti, vi sono casi in cui non è opportuno servirsene.

  • Non utilizzare lo spazio di memorizzazione isolato per archiviare informazioni segrete di grande importanza quali password o chiavi non crittografate, in quanto tale spazio non è protetto da codice a elevata attendibilità, da codice non gestito o da utenti attendibili del computer.

  • Non utilizzare lo spazio di memorizzazione isolato per archiviare codice.

  • Non utilizzare lo spazio di memorizzazione isolato per archiviare impostazioni di configurazione e distribuzione controllate dagli amministratori. Si noti che le preferenze utente non sono considerate impostazioni di configurazione, poiché gli amministratori non le controllano.

Molte applicazioni utilizzano un database per memorizzare e isolare dati. In questo caso una o più righe di un database possono rappresentare l'archiviazione di un utente specifico. È possibile utilizzare l'archiviazione isolata invece di un database quando il numero di utenti è ridotto, quando l'overhead per l'utilizzo di un database è notevole o quando non si dispone di un database. Inoltre, l'archiviazione isolata rappresenta una valida alternativa quando l'applicazione richiede un'archiviazione più flessibile e complessa di quanto non consenta una riga in un database.

Torna all'inizio

Argomenti correlati

Titolo

Descrizione

Tipi di isolamento

Vengono descritti i vari tipi di isolamento.

Procedura: recuperare archivi per lo spazio di memorizzazione isolato

Viene fornito un esempio di utilizzo della classe IsolatedStorageFile per ottenere uno spazio di memorizzazione isolato in base all'utente e all'assembly.

Procedura: enumerare gli archivi per lo spazio di memorizzazione isolato

Viene illustrato come utilizzare il metodo IsolatedStorageFile.GetEnumerator per calcolare la dimensione dell'intero spazio di memorizzazione isolato dell'utente.

Procedura: eliminare gli archivi nello spazio di memorizzazione isolato

Vengono illustrati i due possibili utilizzi del metodo IsolatedStorageFile.Remove per l'eliminazione degli spazi di memorizzazione isolati.

Procedura: anticipare le condizioni di spazio insufficiente con lo spazio di memorizzazione isolato

Viene illustrato come misurare lo spazio rimanente in un archivio isolato.

Procedura: creare file e directory nello spazio di memorizzazione isolato

Vengono forniti alcuni esempi di creazione di file e directory in un archivio isolato.

Procedura: trovare file e directory esistenti nello spazio di memorizzazione isolato

Viene illustrato come leggere la struttura di directory e i file dell'archiviazione isolata.

Procedura: leggere e scrivere sui file nello spazio di memorizzazione isolato

Viene fornito un esempio di scrittura e rilettura di una stringa in un oggetto IsolatedStorageFile.

Procedura: eliminare file e directory nello spazio di memorizzazione isolato

Viene illustrato come eliminare file e directory di uno spazio di memorizzazione isolato.

I/O di file e di flussi

Illustra le modalità di esecuzione di un file sincrono e asincrono e dell'accesso al flusso di dati.

Torna all'inizio

Riferimenti

System.IO.IsolatedStorage.IsolatedStorage