ClickOnce 응용 프로그램의 코드 액세스 보안

업데이트: 2007년 11월

ClickOnce 응용 프로그램은 .NET Framework를 기반으로 하며 코드 액세스 보안 제약 조건을 따릅니다. 따라서 코드 액세스 보안의 의미를 이해하여 그에 맞게 ClickOnce 응용 프로그램을 작성해야 합니다.

코드 액세스 보안은 보호된 리소스와 작업에 대해 코드에 적용되는 액세스를 제한하는 .NET Framework의 메커니즘입니다. 항상 응용 프로그램에 필요한 권한만 포함하도록 ClickOnce 응용 프로그램의 코드 액세스 보안 권한을 구성해야 합니다. Visual Studio에서는 응용 프로그램의 권한 집합을 결정하고 구성하는 데 필요한 도구를 제공합니다.

기본 ClickOnce 코드 액세스 보안

기본적으로 ClickOnce 응용 프로그램은 클라이언트 컴퓨터에 설치 또는 실행될 때 완전 신뢰 권한을 받습니다. 완전 신뢰 권한이 실제로 필요한 경우도 있을 수 있지만 다음과 같은 두 가지 이유 때문에 완전 신뢰 권한을 부여하는 것이 항상 바람직한 것은 아닙니다.

  • 완전 신뢰 권한이 있는 응용 프로그램은 파일 시스템 및 레지스트리 같은 리소스에 무제한으로 액세스할 수 있으므로 응용 프로그램 및 최종 사용자 시스템이 악의적인 코드의 영향을 받을 수 있습니다.

  • 응용 프로그램에 완전 신뢰 권한이 필요하면 응용 프로그램에 권한을 부여하라는 메시지가 표시됩니다. 이는 해당 응용 프로그램이 완벽하게 ClickOnce 환경에서 실행 중이 아님을 의미하며 경험이 부족한 사용자에게는 이러한 메시지가 혼란을 줄 수 있습니다.

    참고:

    CD-ROM 같은 이동식 미디어에서 응용 프로그램을 설치할 때는 이러한 메시지가 표시되지 않습니다. 또한 네트워크 관리자는 신뢰할 수 있는 소스에서 응용 프로그램을 설치할 때 이러한 메시지가 표시되지 않도록 네트워크 정책을 구성할 수 있습니다. 자세한 내용은 신뢰할 수 있는 응용 프로그램 배포 개요를 참조하십시오.

이러한 이유로 항상 응용 프로그램에 필요한 권한만 포함하도록 해당 응용 프로그램의 코드 액세스 보안 권한을 수정해야 합니다.

보안 권한 구성

항상 ClickOnce 응용 프로그램에 실제로 필요한 코드 액세스 보안 권한만 요청하도록 응용 프로그램을 구성해야 합니다. 프로젝트 디자이너의 보안 페이지에서 보안 권한을 구성할 수 있습니다.

프로젝트 디자이너의 보안 페이지에는 ClickOnce 보안 설정 사용 확인란이 있습니다. 이 확인란을 선택하면 응용 프로그램의 배포 매니페스트에 보안 권한 요청이 추가됩니다. 요청된 권한이 응용 프로그램이 배포된 영역의 기본 권한보다 높을 경우 설치 시에 권한을 부여하라는 메시지가 표시됩니다. 자세한 내용은 방법: ClickOnce 보안 설정 사용을 참조하십시오.

서로 다른 여러 위치에서 배포된 응용 프로그램에 대해서는 표시되는 메시지 없이 각기 다른 수준의 권한이 부여됩니다. 예를 들어 인터넷에서 배포되는 응용 프로그램에는 가장 제한적인 권한 집합이 부여되고, 로컬 인트라넷에서 설치되는 응용 프로그램에는 좀 더 높은 권한이 부여되며, CD-ROM에서 설치되는 응용 프로그램에는 완전 신뢰 권한이 부여됩니다.

권한을 처음 구성할 경우 보안 페이지의 영역 목록에서 보안 영역을 선택할 수 있습니다. 응용 프로그램을 둘 이상의 영역에서 배포하려면 더 낮은 권한이 적용된 영역을 선택합니다. 권한이 미리 설정되지 않은 상태에서 응용 프로그램에 필요한 권한을 한 번에 하나씩 추가하려면 사용자 지정 영역을 선택합니다.

영역을 선택하면 권한 목록이 업데이트되면서 해당 영역의 기본 권한이 표시됩니다. 포함된 권한에는 녹색 확인 표시가 나타납니다. 자세한 내용은 방법: ClickOnce 응용 프로그램의 보안 영역 설정을 참조하십시오.

권한을 좀 더 제한하려면 권한 집합을 선택한 후 해당 속성을 수정합니다. 예를 들어 응용 프로그램에서 파일 열기 대화 상자를 표시해야 할 경우 FileDialogPermission 집합이 대화 상자 표시 권한을 부여합니다. 기본적으로 이 권한 집합은 파일 열기 및 파일 저장 대화 상자를 모두 사용할 수 있게 합니다. 이를 수정하려면 FileDialogPermission 집합을 클릭하고 속성을 클릭하여 권한 설정 대화 상자를 연 다음 권한을 대화 상자 열기만으로 설정합니다. 자세한 내용은 방법: ClickOnce 응용 프로그램에 대한 사용자 지정 권한 설정을 참조하십시오.

참고:

설정할 수 있는 속성은 권한 집합마다 다르며 모든 권한 집합의 속성을 구성할 수 있는 것은 아닙니다.

필요하지 않은 권한 집합을 제외하거나 영역의 기본 권한에 속하지 않는 권한을 사용할 수 있게 할 수도 있습니다. 이렇게 하려면 권한 집합의 설정 목록에서 값을 선택합니다. 수정된 권한은 굵은 텍스트로 표시됩니다. 영역 기본값에 속하지 않는 권한을 사용할 수 있게 설정하면 포함 확인 표시 옆에 정보 아이콘이 추가됩니다.

참고:

영역 기본값에 속하지 않는 권한을 사용할 수 있게 설정하면 이 항목의 위에서 설명한 것과 같은 메시지가 최종 사용자에게 표시됩니다. 추가 권한을 사용할 수 있게 설정할 때는 항상 실제로 필요한 권한만 포함하도록 권한 집합을 수정해야 합니다.

응용 프로그램에 필요한 권한 결정

응용 프로그램에 필요한 권한을 정확히 파악하면 보안 권한을 효과적으로 구성하는 데 도움이 됩니다. 보안 페이지에서 사용할 수 있는 권한 계산기 도구로 코드를 분석하여 응용 프로그램에 필요한 정확한 권한을 확인할 수 있습니다.

참고:

권한 계산기 도구에는 몇 가지 제한이 적용됩니다. 이 도구는 정적 코드 분석을 수행하며 런타임에 바인딩되는 코드나 동적으로 로드되는 어셈블리에 필요한 권한을 확인할 수 없습니다. 또한 권한이 낮은 환경에서 실행될 때 해당 권한 요구를 동적으로 수정하도록 응용 프로그램을 디자인한 경우 이 도구는 필요한 최대 권한을 보고합니다.

이 도구로 응용 프로그램을 분석한 후에는 필요한 모든 권한 집합이 사용으로 설정되고 굵은 텍스트로 표시됩니다. 사용할 수 있는 권한이 영역 기본값에 속하지 않으면 경고 아이콘이 함께 표시됩니다. 최종 사용자에게 이러한 메시지가 표시되지 않게 하려면 설정을 검토한 후 해당 권한이 더 이상 필요하지 않도록 코드를 수정할 방법이 있는지 확인해야 합니다.

자세한 내용은 방법: ClickOnce 응용 프로그램에 대한 권한 확인을 참조하십시오.

제한된 권한이 있는 응용 프로그램 디버깅

개발자는 대부분의 경우 완전 신뢰 권한으로 개발 컴퓨터를 실행하므로 개발자가 응용 프로그램을 디버깅할 때 표시되는 보안 예외는 사용자가 제한된 권한으로 응용 프로그램을 실행할 때 표시되는 보안 예외와 동일하지 않습니다.

이러한 예외를 catch하려면 최종 사용자와 동일한 권한으로 응용 프로그램을 디버깅해야 합니다. 제한된 권한으로 디버깅하는 기능은 프로젝트 디자이너의 보안 페이지에서 활성화할 수 있습니다.

제한된 권한으로 응용 프로그램을 디버깅할 경우 보안 페이지에서 사용할 수 없게 설정된 모든 코드 보안 요청에 대해 예외가 발생합니다. 그러면 예외 도우미가 표시되어 예외가 발생하지 않도록 코드를 수정하는 방법을 제시합니다.

또한 코드 작성 시 코드 편집기의 IntelliSense 기능은 사용자가 구성한 보안 권한에 포함되지 않은 모든 멤버를 회색으로 표시합니다.

자세한 내용은 방법: 제한된 권한으로 ClickOnce 응용 프로그램 디버깅을 참조하십시오.

브라우저에서 호스팅되는 응용 프로그램의 보안 권한

Visual Studio에서는 WPF(Windows Presentation Foundation)에 대해 다음과 같은 프로젝트 형식을 제공합니다.

  • WPF Windows 응용 프로그램

  • WPF 웹 브라우저 응용 프로그램

  • WPF 사용자 지정 컨트롤 라이브러리

  • WPF 서비스 라이브러리

이러한 프로젝트 형식 중에서 WPF 웹 브라우저 응용 프로그램만은 웹 브라우저에서 호스팅되므로 특별한 배포 및 보안 설정이 필요합니다. 이러한 응용 프로그램의 기본 보안 설정은 다음과 같습니다.

  • ClickOnce 보안 설정 사용

  • 부분 신뢰 응용 프로그램

  • 인터넷 영역(WPF 웹 브라우저 응용 프로그램에 대한 기본 권한 집합이 선택된 상태)

고급 보안 설정 대화 상자의 선택한 권한 집합으로 이 응용 프로그램 디버깅 확인란은 선택된 상태로 비활성화되어 있습니다. 이는 브라우저에서 호스팅되는 응용 프로그램에 대해 영역 내 디버깅을 해제할 수 없기 때문입니다.

ClickOnce를 사용하여 WPF 웹 브라우저 응용 프로그램을 배포하면 해당 응용 프로그램에서 appname.exe.manifest 파일에 저장된 특정 권한 집합을 요청합니다. 이 권한 집합은 다음 두 개의 다른 권한 집합과 함께 코드 액세스 보안 인터넷 영역 권한 집합의 기본 권한입니다.

WebBrowserPermission

MediaPermission

기본 권한이 아닌 권한을 설정하면 Visual Studio에서는 응용 프로그램이 기본 권한이 아닌 권한이 필요하도록 구성되었음을 나타내는 경고를 표시합니다. 이때 보안 정책이 아직 대상 컴퓨터에 푸시되지 않았으면 설치가 실패합니다.

참고 항목

작업

방법: ClickOnce 보안 설정 사용

방법: ClickOnce 응용 프로그램의 보안 영역 설정

방법: ClickOnce 응용 프로그램에 대한 사용자 지정 권한 설정

방법: ClickOnce 응용 프로그램에 대한 권한 확인

방법: 제한된 권한으로 ClickOnce 응용 프로그램 디버깅

개념

ClickOnce 배포 및 보안

신뢰할 수 있는 응용 프로그램 배포 개요

참조

프로젝트 디자이너, 보안 페이지