격리된 저장소

격리된 저장소는 코드와 저장된 데이터를 연결하는 표준화된 방법을 정의하여 격리와 안전을 제공하는 데이터 저장소 메커니즘입니다. 표준화를 통해 다음과 같은 여러 가지 이점도 활용할 수 있습니다. 관리자는 파일 저장소 구성, 보안 정책 설정, 사용하지 않은 데이터 삭제를 위해 격리된 저장소를 조작하는 도구를 사용할 수 있습니다. 격리된 저장소를 사용하면 더 이상 파일 시스템에서 안전한 위치를 지정하기 위해 코드에 고유 경로를 포함할 필요가 없으며 격리된 저장소에만 액세스할 수 있는 다른 응용 프로그램으로부터 데이터가 보호됩니다. 응용 프로그램의 저장소 영역 위치를 나타내는 하드 코드된 정보는 필요하지 않습니다.

이 항목에는 다음과 같은 단원이 포함되어 있습니다.

  • 데이터 구획 및 저장소

  • 액세스 보안

  • 격리된 저장소 위치

  • 격리된 저장소 만들기, 열거 및 삭제

  • 격리된 저장소 시나리오

  • 관련 항목

  • 참조

데이터 구획 및 저장소

응용 프로그램에서 파일에 데이터를 저장하는 경우, 저장소 위치가 다른 응용 프로그램에 알려져 손상될 가능성을 최소화할 수 있도록 파일 이름과 저장소 위치는 신중하게 선택되어야 합니다. 이러한 문제를 관리하기 위해 적절한 표준 시스템이 없는 경우 저장소 충돌을 최소화하는 ad hoc 기법을 개발하는 것은 복잡하고 결과를 신뢰할 수도 없습니다.

격리된 저장소를 사용하면 데이터는 항상 사용자와 어셈블리별로 격리됩니다. 어셈블리의 원본 또는 강력한 이름과 같은 자격 증명은 어셈블리 ID를 결정합니다. 또한 유사한 자격 증명을 사용하여 데이터가 응용 프로그램 도메인별로 격리될 수도 있습니다.

격리된 저장소를 사용하는 경우 응용 프로그램은 게시자 또는 서명 등과 같은 코드의 식별 정보에 관련된 고유 데이터 구획에 데이터를 저장합니다. 데이터 컴파트먼트는 특정 저장소 위치가 아니라 추상적인 개념이며 저장소라고 하는 하나 이상의 격리된 저장소 파일로 구성됩니다. 이 저장소는 데이터가 저장되는 실제 디렉터리 위치를 포함합니다. 예를 들어, 응용 프로그램은 관련된 데이터 구획을 가질 수 있고 파일 시스템의 디렉터리는 이 응용 프로그램의 데이터를 실제로 유지하는 저장소를 구현할 수 있습니다. 저장소에 저장된 데이터는 사용자 기본 설정 정보에서 응용 프로그램 상태에 이르기까지 모든 종류의 데이터가 될 수 있습니다. 개발자에게 데이터 컴파트먼트의 위치는 투명하며 저장소는 일반적으로 클라이언트에 상주하지만 서버 응용 프로그램에서 저장소의 사용자를 가장하여 격리된 저장소에 정보를 저장할 수 있습니다. 또한 격리된 저장소는 로밍 사용자와 함께 정보가 이동되도록 사용자의 로밍 프로필과 함께 서버의 정보를 저장할 수 있습니다.

맨 위로 이동

액세스 보안

격리된 저장소를 사용하면 부분적으로 신뢰할 수 있는 응용 프로그램은 컴퓨터의 보안 정책에 의해 제어되는 방식으로 데이터를 저장할 수 있습니다. 이 방법은 특히 사용자가 주의하여 실행해야 하는 다운로드된 구성 요소에 유용합니다. 표준 I/O 메커니즘을 사용하여 파일 시스템에 액세스할 수 있는 사용 권한을 이 유형의 코드에 부여하는 경우는 거의 없습니다. 그러나 격리된 저장소를 사용할 권한은 로컬 컴퓨터, 로컬 네트워크 또는 인터넷에서 실행되는 코드에 기본적으로 부여됩니다.

관리자는 해당 신뢰 수준에 따라 응용 프로그램 또는 사용자가 가질 수 있는 격리된 저장소 양을 제한할 수 있습니다. 또한 사용자의 지속된 데이터를 모두 제거할 수도 있습니다. 격리된 저장소를 만들거나 격리된 저장소에 액세스하려면 코드에 적절한 IsolatedStorageFilePermission이 부여되어야 합니다.

격리된 저장소에 액세스하려면 필요한 네이티브 플랫폼 운영 체제 권한이 모두 코드에 있어야 합니다. 예를 들어 Windows 2000에서는 파일 시스템을 사용할 수 있는 권한을 가진 사용자를 제어하는 ACL(액세스 제어 목록)이 충족되어야 합니다. .NET Framework 응용 프로그램은 특정 플랫폼 관련 가장을 수행하는 경우를 제외하고는 격리된 저장소에 액세스할 수 있는 운영 체제 권한을 이미 가지고 있습니다. 이런 경우 응용 프로그램은 가장된 사용자 ID가 격리된 저장소에 액세스할 수 있는 적절한 운영 체제 권한을 가지고 있는지 확인해야 합니다. 이 권한은 웹에서 실행되거나 다운로드된 코드에 특정 사용자와 관련된 저장소 영역에서 읽고 쓸 수 있는 편리한 방법을 제공합니다.

맨 위로 이동

격리된 저장소 위치

때때로 운영 체제의 파일 시스템을 사용하여 격리된 저장소에 대한 변경 내용을 확인하면 도움이 됩니다. 또한 개발자는 격리된 저장소 파일의 위치도 알아야 합니다. 이 위치는 운영 체제에 따라 다릅니다. 다음 표에서는 일반적으로 사용되는 몇 가지 운영 체제에서 격리된 저장소가 만들어지는 루트 위치를 보여 줍니다. 이 루트 위치 아래에 있는 Microsoft\IsolatedStorage 디렉터리를 찾으십시오. 파일 시스템에서 격리된 저장소를 보려면 숨김 파일과 폴더를 표시하도록 폴더 설정을 변경해야 합니다.

운영 체제

파일 시스템에서의 위치

Windows 98, Windows Me - 사용자 프로필을 사용할 수 없음

로밍 가능 저장소 =

<SYSTEMROOT>\Application Data

비로밍 저장소 = WINDOWS\Local Settings\Application Data

Windows 98, Windows Me - 사용자 프로필 사용 가능

로밍 가능 저장소 =

<SYSTEMROOT>\Profiles\<user>\Application Data

비로밍 저장소 = Windows\Local Settings\Application Data

Windows NT 4.0

<SYSTEMROOT>\Profiles\<user>\Application Data

Windows NT 4.0 - 서비스 팩 4

로밍 가능 저장소 =

<SYSTEMROOT>\Profiles\<user>\Application Data

비로밍 저장소 =

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

Windows 2000, Windows XP, Windows Server 2003 - Windows NT 4.0에서 업그레이드

로밍 가능 저장소 =

<SYSTEMROOT>\Profiles\<user>\Application Data

비로밍 저장소 =

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

Windows 2000 - 새로 설치 및 Windows 98, Windows NT 3.51에서 업그레이드

로밍 가능 저장소 =

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

비로밍 저장소 =

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

Windows XP, Windows Server 2003 - 새로 설치 및 Windows 2000, Windows 98에서 업그레이드

로밍 가능 저장소 =

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

비로밍 저장소 =

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

Windows Vista

로밍 가능 저장소 =

<SYSTEMDRIVE>\Users\<user>\AppData\Roaming

비로밍 저장소 =

<SYSTEMDRIVE>\Users\<user>\AppData\Local

맨 위로 이동

격리된 저장소 만들기, 열거 및 삭제

격리된 저장소와 관련된 작업을 수행하는 데 도움이 되기 위해 다음과 같은 세 가지 주 클래스가 제공됩니다.

격리된 저장소 클래스를 사용하여 격리된 저장소를 만들고 열거하고 삭제할 수 있으며 이러한 작업을 수행하는 데 필요한 메서드는 IsolatedStorageFile 개체를 통해 사용할 수 있습니다. 일부 작업을 수행하려면 격리된 저장소를 관리할 수 있는 권한을 나타내는 IsolatedStorageFilePermission을 가져야 하며 파일이나 디렉터리에 액세스할 수 있는 운영 체제 권한도 가지고 있어야 합니다. Microsoft Windows NT, Microsoft Windows 2000, Windows XP 및 Windows Vista에서는 파일의 ACL(액세스 제어 목록) 설정을 사용하여 격리된 저장소에 액세스할 수 없도록 할 수 있습니다. 또한 현재 사용자의 모든 저장소 열거 또는 삭제 같은 간단한 저장소 관리에도 격리된 저장소 도구 (Storeadm.exe) 를 사용할 수 있습니다.

일반적인 격리된 저장소 작업을 보여 주는 일련의 예제는 관련 항목에 나열되어 있는 방법 항목을 참조하십시오. 각 예제에는 한 가지 특정 작업을 설명하는 소스 파일이 있습니다. 각 예제의 주 페이지에 설정, 컴파일 및 실행하는 방법에 대한 지시 사항이 포함되어 있습니다. 이러한 예제는 C#에만 제공됩니다.

맨 위로 이동

격리된 저장소 시나리오

격리된 저장소는 여러 가지 상황에서 유용합니다. 이 중 가장 쉽게 확인할 수 있는 5가지 시나리오를 아래에서 설명합니다.

  • 다운로드된 컨트롤. 인터넷에서 다운로드된 관리 코드 컨트롤은 일반 I/O 클래스를 통해 하드 드라이브에 쓸 수 없지만 격리된 저장소를 사용하여 사용자 설정 및 응용 프로그램 상태를 유지할 수 있습니다.

  • 공유 구성 요소 저장소. 응용 프로그램 간에 공유되는 구성 요소는 격리된 저장소를 사용하여 데이터 저장소에 대한 제어된 액세스를 제공할 수 있습니다.

  • 서버 저장소. 서버 응용 프로그램은 격리된 저장소를 사용하여 응용 프로그램을 요청하는 다수의 사용자에게 개별 저장소를 제공할 수 있습니다. 격리된 저장소는 항상 사용자별로 분리되어 있으므로 서버는 요청하는 사용자를 가장해야 합니다. 이런 경우 데이터는 사용자를 구분하기 위해 응용 프로그램에서 사용하는 동일한 ID인 보안 주체 ID를 기반으로 격리됩니다.

  • 로밍. 또한 응용 프로그램에서는 격리된 저장소를 사용하여 로밍 사용자 프로필을 저장할 수 있습니다. 따라서 사용자의 격리된 저장소는 프로필을 로밍하는 데 사용됩니다.

격리된 저장소는 위에서 설명한 5가지 경우에 대해서는 적합하지만 다음과 같은 몇 가지 경우에서는 사용하면 안 됩니다.

  • 격리된 저장소는 충분히 신뢰할 수 있는 코드, 비관리 코드 또는 컴퓨터의 신뢰할 수 있는 사용자로부터 보호되지 않으므로 암호화되지 않은 키 또는 암호 등의 상위 값 비밀을 저장하는 데 사용하지 마십시오.

  • 코드를 저장하는 데 격리된 저장소를 사용하지 마십시오.

  • 관리자가 제어하는 구성 및 배포 설정을 저장하는 데 격리된 저장소를 사용하지 마십시오. 사용자 기본 설정은 관리자가 제어하지 않으므로 구성 설정으로 간주되지 않습니다.

대부분의 응용 프로그램은 데이터베이스를 사용하여 데이터를 저장하고 격리합니다. 이 때 데이터베이스에 있는 하나 이상의 행은 특정 사용자에 대한 저장소를 나타낼 수 있습니다. 사용자 수가 적은 경우, 데이터베이스 사용에 따른 오버헤드가 의미가 있는 경우 또는 데이터베이스 기능이 없는 경우 데이터베이스 대신 격리된 저장소를 사용하도록 선택할 수 있습니다. 또한 데이터베이스에서 제공하는 행보다 더 융통성 있고 복잡한 저장소가 응용 프로그램에 필요한 경우에도 격리된 저장소를 사용할 수 있습니다.

맨 위로 이동

관련 항목

제목

설명

격리 유형

다양한 유형의 격리에 대해 설명합니다.

방법: 격리된 저장소의 저장소 가져오기

IsolatedStorageFile 클래스를 사용하여 사용자 및 어셈블리별로 격리된 저장소를 가져오는 예제를 제공합니다.

방법: 격리된 저장소의 저장소 열거

IsolatedStorageFile.GetEnumerator 메서드를 사용하여 사용자의 모든 격리된 저장소 크기를 계산하는 방법을 보여 줍니다.

방법: 격리된 저장소에서 저장소 삭제

IsolatedStorageFile.Remove 메서드를 두 가지 방법으로 사용하여 격리된 저장소를 삭제하는 방법을 보여 줍니다.

방법: 격리된 저장소의 공간 부족 상태 예상

격리된 저장소에서 남은 공간을 측정하는 방법을 보여 줍니다.

방법: 격리된 저장소에 파일 및 디렉터리 만들기

격리된 저장소에서 파일 및 디렉터리를 만드는 몇 가지 예제를 제공합니다.

방법: 격리된 저장소의 기존 파일 및 디렉터리 찾기

격리된 저장소에서 디렉터리 구조 및 파일을 읽는 방법을 보여 줍니다.

방법: 격리된 저장소의 파일 읽기 및 쓰기

IsolatedStorageFile에 문자열을 쓰고 다시 문자열을 읽는 예제를 제공합니다.

방법: 격리된 저장소의 파일 및 디렉터리 삭제

격리된 저장소 파일 및 디렉터리를 삭제하는 방법을 보여 줍니다.

파일 및 스트림 I/O

동기 및 비동기 파일과 데이터 스트림 액세스를 수행할 수 있는 방법에 대해 설명합니다.

맨 위로 이동

참조

System.IO.IsolatedStorage.IsolatedStorage