Share via


Almacenamiento aislado

El almacenamiento aislado es un mecanismo de almacenamiento de datos que proporciona aislamiento y seguridad mediante la definición de modos estándar de asociar código a los datos guardados. La estandarización ofrece además otras ventajas. Los administradores pueden usar herramientas diseñadas para manipular el almacenamiento aislado para configurar el espacio de almacenamiento de archivos, establecer directivas de seguridad y eliminar los datos no utilizados. Con el almacenamiento aislado, el código ya no requiere rutas de acceso únicas para especificar ubicaciones seguras en el sistema de archivos y los datos están protegidos de otras aplicaciones que solo tienen acceso a un almacenamiento aislado. La información en código que indica la ubicación del área de almacenamiento de la aplicación no es necesaria.

Este tema contiene las siguientes secciones:

  • Compartimientos y almacenes de datos

  • Acceso seguro

  • Ubicaciones del almacenamiento aislado

  • Crear, enumerar y eliminar almacenamiento aislado

  • Escenarios del almacenamiento aislado

  • Temas relacionados

  • Referencia

Compartimientos y almacenes de datos

Cuando una aplicación almacena datos en un archivo, el nombre de archivo y la ubicación de almacenamiento se deben elegir con cuidado para minimizar el riesgo de que otra aplicación llegue a conocer dicha ubicación, lo que la haría susceptible de recibir daños. Si no se dispone de un sistema estándar que controle estos problemas, el desarrollo de técnicas ad hoc para minimizar los conflictos de almacenamiento puede ser complicado y los resultados poco confiables.

Con el almacenamiento aislado, los datos están siempre aislados por usuario y ensamblado. Las credenciales como el origen o el nombre seguro del ensamblado determinan la identidad del ensamblado. Los datos se pueden aislar también por el dominio de la aplicación, usando credenciales parecidas.

Al usar almacenamiento aislado, las aplicaciones guardan los datos en un compartimiento de datos único asociado a algún aspecto de la identidad del código, como su publicador o firma. El compartimiento de datos es abstracto, no una ubicación de almacenamiento concreta; está formado por uno o varios archivos de almacenamiento aislado, denominados almacenes, que contienen las ubicaciones reales del directorio donde están almacenados los datos. Por ejemplo, una aplicación puede tener un compartimiento de datos asociado, y un directorio del sistema de archivos implementaría el almacén que conserva de hecho los datos de esa aplicación. Los datos guardados en el almacén pueden ser de cualquier tipo, desde información de preferencia del usuario hasta el estado de la aplicación. La ubicación del compartimiento de datos es transparente para el programador. Normalmente, los almacenes residen en el cliente, pero una aplicación de servidor puede usar almacenes aislados para guardar información suplantando al usuario en cuyo nombre funciona. El almacenamiento aislado también puede guardar información en un servidor con un perfil de usuario móvil para que éste pueda tener acceso a la información desde donde se encuentre.

Volver al principio

Acceso seguro

La utilización de un almacenamiento aislado permite que las aplicaciones que no son de plena confianza almacenen datos de una forma controlada por la directiva de seguridad del equipo. Esto resulta especialmente útil para componentes descargados que quizás el usuario desee usar con cautela. La directiva de seguridad raramente permite que este tipo de código tenga acceso al sistema de archivos mediante los mecanismos de E/S estándar. Sin embargo, de forma predeterminada, el código que se ejecuta desde el equipo local, una red local o Internet tiene derecho a utilizar almacenamiento aislado.

Los administradores pueden limitar la cantidad de almacenamiento aislado de que disponen un usuario o una aplicación, basándose en un nivel de confianza adecuado. Además, los administradores pueden quitar los datos que se conservan de un usuario por completo. Para crear o tener acceso al almacenamiento aislado, el código debe disponer del IsolatedStorageFilePermission correspondiente.

El código debe tener todos los derechos del sistema operativo de plataforma nativa necesarios para tener acceso al almacenamiento aislado. Por ejemplo, en Windows 2000 se deben cumplir las listas de control de acceso (ACL) que controlan qué usuarios tienen derechos para usar el sistema de archivos. Las aplicaciones de .NET Framework ya tienen los derechos de sistema operativo para tener acceso al almacenamiento aislado a menos que lleven a cabo una suplantación (específica de plataforma). En ese caso, la aplicación tiene la responsabilidad de garantizar que la identidad del usuario suplantado disponga de los derechos de sistema operativo adecuados para tener acceso al almacenamiento aislado. Este acceso proporciona una forma cómoda para que el código que se ejecuta o se descarga desde el Web lea y escriba en un área de almacenamiento relacionada con un usuario concreto.

Volver al principio

Ubicaciones del almacenamiento aislado

En ocasiones resulta útil comprobar un cambio en el almacenamiento aislado usando el sistema de archivos del sistema operativo. Los programadores pueden necesitar también conocer la ubicación de los archivos del almacenamiento aislado. La ubicación cambia dependiendo del sistema operativo. En la tabla siguiente se muestran las ubicaciones raíz en que se crea el almacenamiento aislado en algunos de los sistemas operativos más frecuentes. Busque el directorio Microsoft\IsolatedStorage bajo esta ubicación raíz. Para que se muestren los archivos y carpetas ocultos y ver el almacenamiento aislado en el sistema de archivos debe cambiar la configuración de carpetas.

Sistema operativo

Ubicación en el sistema de archivos

Windows 98, Windows Me - perfiles de usuario no habilitados

Almacenes con movilidad =

<RAÍZ_DEL_SISTEMA>\Datos de programa

Almacenes sin movilidad = WINDOWS\Configuración local\Datos de programa

Windows 98, Windows Me - perfiles de usuario habilitados

Almacenes con movilidad =

<RAÍZ_DEL_SISTEMA>\Profiles\<usuario>\Datos de programa

Almacenes sin movilidad = Windows\Configuración local\Datos de programa

Windows NT 4.0

<RAÍZ_DEL_SISTEMA>\Profiles\<usuario>\Datos de programa

Service Pack 4 de Windows NT 4.0

Almacenes con movilidad =

<RAÍZ_DEL_SISTEMA>\Profiles\<usuario>\Datos de programa

Almacenes sin movilidad =

<RAÍZ_DEL_SISTEMA>\Profiles\<usuario>\Configuración local\Datos de programa

Windows 2000, Windows XP, Windows Server 2003 - actualización desde Windows NT 4.0

Almacenes con movilidad =

<RAÍZ_DEL_SISTEMA>\Profiles\<usuario>\Datos de programa

Almacenes sin movilidad =

<RAÍZ_DEL_SISTEMA>\Profiles\<usuario>\Configuración local\Datos de programa

Windows 2000 - instalación nueva (y actualizaciones desde Windows 98 y Windows NT 3.51)

Almacenes con movilidad =

<UNIDAD_DEL_SISTEMA>\Documents and Settings\<usuario>\Datos de programa

Almacenes sin movilidad =

<UNIDAD_DEL_SISTEMA>\Documents and Settings\<usuario>\Configuración local\Datos de programa

Windows XP, Windows Server 2003 - instalación nueva (y actualizaciones desde Windows 2000 y Windows 98)

Almacenes con movilidad =

<UNIDAD_DEL_SISTEMA>\Documents and Settings\<usuario>\Datos de programa

Almacenes sin movilidad =

<UNIDAD_DEL_SISTEMA>\Documents and Settings\<usuario>\Configuración local\Datos de programa

Windows Vista

Almacenes con movilidad =

<UNIDAD_DEL_SISTEMA>\Users\<usuario>\AppData\Roaming

Almacenes sin movilidad =

<UNIDAD_DEL_SISTEMA>\Users\<usuario>\AppData\Local

Volver al principio

Crear, enumerar y eliminar almacenamiento aislado

Se proporcionan tres clases principales para ayudar a realizar tareas relacionadas con el almacenamiento aislado:

Las clases de almacenamiento aislado permiten crear, enumerar y eliminar almacenamiento aislado. Los métodos para realizar estas tareas están disponibles mediante el objeto IsolatedStorageFile. Algunas operaciones requieren disponer de IsolatedStorageFilePermission que representa el derecho a administrar el almacenamiento aislado. También podría ser necesario disponer de derechos de sistema operativo para tener acceso a un archivo o directorio. En Microsoft Windows NT, Microsoft Windows 2000, Windows XP y Windows Vista, la configuración de la lista de control de acceso (ACL) del archivo impide el acceso al almacenamiento aislado. La herramienta de almacenamiento aislado, Storeadm.exe, se puede usar también para la administración sencilla de almacenes, como la enumeración o eliminación de todos los almacenes del usuario actual.

Para ver una serie de ejemplos que muestran tareas de almacenamiento aislado habituales, vea los temas que aparecen en enumerados en Temas relacionados. Cada ejemplo tiene un archivo de origen que ilustra una tarea concreta. En la página principal de cada ejemplo se incluyen instrucciones de instalación, compilación y ejecución. Los ejemplos se proporcionan sólo en C#.

Volver al principio

Escenarios del almacenamiento aislado

El almacenamiento aislado resulta útil en muchas situaciones. A continuación se describen cinco de los escenarios más fáciles de identificar:

  • Controles descargados. Los controles de código administrado descargados de Internet no tienen permiso para escribir en el disco duro mediante clases de E/S normales, pero puede usar el almacenamiento aislado para almacenar la configuración del usuario y los estados de la aplicación.

  • Almacenamiento de componentes compartidos. Los componentes compartidos entre aplicaciones pueden usar el almacenamiento aislado para proporcionar acceso controlado a los almacenes de datos.

  • Almacenamiento en servidor. Las aplicaciones de servidor pueden usar el almacenamiento aislado para proporcionar almacenes individuales a un gran número de usuarios que hacen solicitudes a la aplicación. Puesto que el almacenamiento aislado siempre se aísla por usuario, el servidor debe suplantar al usuario que hace la solicitud. En este caso, los datos se aíslan basándose en la identidad del entidad de seguridad, que es la identidad que usa la aplicación para diferenciar a los usuarios.

  • Movilidad. Las aplicaciones pueden usar también el almacenamiento aislado con perfiles de usuario móvil. De esta manera los almacenes aislados de un usuario se pueden trasladar con el perfil.

Aunque el almacenamiento aislado es adecuado para los escenarios descritos hasta aquí, existen algunos casos en que NO se debe utilizar:

  • No utilice el almacenamiento aislado para guardar información confidencial, como claves sin cifrar o contraseñas, ya que no está protegido contra código de plena confianza, contra código no administrado ni contra usuarios de confianza del equipo.

  • No utilice el almacenamiento aislado para almacenar código.

  • No utilice el almacenamiento aislado para guardar valores de configuración e implementación, que controlan los administradores. (Las preferencias de usuario no se consideran valores de configuración porque los administradores no las controlan.)

Muchas de las aplicaciones actuales usan bases de datos para almacenar y aislar los datos y, en ese caso, una o varias filas de la base de datos pueden representar el almacenamiento de un usuario concreto. Se puede elegir usar el almacenamiento aislado en lugar de una base de datos si el número de usuarios es reducido, si la sobrecarga resultante de usar una base de datos es alta o si no existe una utilidad de bases de datos. Además, si la aplicación requiere un tipo de almacenamiento más flexible y complejo que el que ofrece una fila de una base de datos, el almacenamiento aislado puede ser una alternativa viable.

Volver al principio

Temas relacionados

Título

Descripción

Tipos de aislamiento

Describe los distintos tipos de aislamiento.

Cómo: Obtener los almacenes de almacenamiento aislado

Proporciona un ejemplo de uso de la clase IsolatedStorageFile para obtener un almacén aislado por usuario y ensamblado.

Cómo: Enumerar los almacenes de almacenamiento aislado

Muestra cómo utilizar el método IsolatedStorageFile.GetEnumerator para calcular el tamaño de todo el almacenamiento aislado para el usuario.

Cómo: Eliminar almacenes de almacenamiento aislado

Muestra cómo usar el método IsolatedStorageFile.Remove, de dos maneras diferentes, para eliminar almacenes aislados.

Cómo: Prever condiciones de espacio insuficiente con almacenamiento aislado

Muestra cómo medir el espacio que queda en un almacén aislado.

Cómo: Crear archivos y directorios en almacenamiento aislado

Proporciona ejemplos de creación de archivos y directorios en un almacén aislado.

Cómo: Buscar archivos y directorios existentes en almacenamiento aislado

Muestra cómo leer la estructura y los archivos del directorio de almacenamiento aislado.

Cómo: Leer y escribir en archivos en almacenamiento aislado

Proporciona un ejemplo de cómo escribir una cadena en IsolatedStorageFile y, a continuación, leerla.

Cómo: Eliminar archivos y directorios en almacenamiento aislado

Muestra cómo eliminar archivos y directorios de almacenamiento aislado.

E/S de archivos y secuencias

Explica cómo puede realizar el acceso sincrónico y asincrónico a archivos y flujos de datos.

Volver al principio

Referencia

System.IO.IsolatedStorage.IsolatedStorage