다음을 통해 공유


ClickOnce 애플리케이션에 대한 코드 액세스 보안

ClickOnce 애플리케이션은 .NET Framework를 기반으로 하며 코드 액세스 보안 제약 조건이 적용됩니다. 이러한 이유로 코드 액세스 보안의 의미를 이해하고 그에 따라 ClickOnce 애플리케이션을 작성하는 것이 중요합니다.

코드 액세스 보안은 코드가 보호된 리소스 및 작업에 대한 액세스를 제한하는 데 도움이 되는 .NET Framework의 메커니즘입니다. 애플리케이션 설치 관리자의 위치에 적합한 영역을 사용하도록 ClickOnce 애플리케이션에 대한 코드 액세스 보안 권한을 구성해야 합니다. 대부분의 경우 제한된 사용 권한 집합의 인터넷 영역을 선택하거나 더 큰 사용 권한 집합에 대한 로컬 인트라넷 영역을 선택할 수 있습니다.

비고

.NET Core 및 .NET 5 이상용 ClickOnce에서는 코드 액세스 보안이 지원되지 않습니다. .NET Framework에서 코드 액세스 보안의 사용은 모범 사례가 아니며 권장되지 않습니다.

기본 ClickOnce 코드 액세스 보안

기본적으로 ClickOnce 애플리케이션은 클라이언트 컴퓨터에 설치되거나 실행될 때 완전 신뢰 권한을 받습니다.

  • 완전 신뢰 권한이 있는 애플리케이션은 파일 시스템 및 레지스트리와 같은 리소스에 무제한으로 액세스할 수 있습니다. 이렇게 하면 애플리케이션(및 최종 사용자의 시스템)이 악성 코드에 의해 악용될 수 있습니다.

  • 애플리케이션에 완전 신뢰 권한이 필요한 경우 최종 사용자에게 애플리케이션에 권한을 부여하라는 메시지가 표시될 수 있습니다. 즉, 애플리케이션이 실제로 ClickOnce 환경을 제공하지 않으며 프롬프트가 경험이 적은 사용자에게 혼동될 수 있습니다.

    비고

    CD-ROM과 같은 이동식 미디어에서 애플리케이션을 설치할 때 사용자에게 메시지가 표시되지 않습니다. 또한 네트워크 관리자는 신뢰할 수 있는 원본에서 애플리케이션을 설치할 때 사용자에게 메시지가 표시되지 않도록 네트워크 정책을 구성할 수 있습니다. 자세한 내용은 신뢰할 수 있는 애플리케이션 배포 개요참조하세요.

    ClickOnce 애플리케이션에 대한 권한을 제한하려면 애플리케이션에 필요한 권한에 가장 적합한 영역을 요청하도록 애플리케이션에 대한 코드 액세스 보안 권한을 수정할 수 있습니다. 대부분의 경우 애플리케이션이 배포되는 영역을 선택할 수 있습니다. 예를 들어 애플리케이션이 엔터프라이즈 애플리케이션인 경우 로컬 인트라넷 영역을 사용할 수 있습니다. 애플리케이션이 인터넷 애플리케이션인 경우 인터넷 영역을 사용할 수 있습니다.

보안 권한 구성

코드 액세스 보안 권한을 제한하도록 적절한 영역을 요청하도록 항상 ClickOnce 애플리케이션을 구성해야 합니다. 프로젝트 디자이너의 보안 페이지에서 보안 권한을 구성할 수 있습니다.

프로젝트 디자이너보안 페이지에는 ClickOnce 보안 설정 사용 확인란이 포함되어 있습니다. 이 확인란을 선택하면 애플리케이션의 배포 매니페스트에 보안 권한 요청이 추가됩니다. 설치 시 요청된 사용 권한이 애플리케이션이 배포된 영역에 대한 기본 사용 권한을 초과하는 경우 사용자에게 사용 권한을 부여하라는 메시지가 표시됩니다. 자세한 내용은 방법: ClickOnce 보안 설정 사용을 참조하세요.

다른 위치에서 배포된 애플리케이션에는 메시지를 표시하지 않고 다양한 수준의 사용 권한이 부여됩니다. 예를 들어 애플리케이션이 인터넷에서 배포되면 매우 제한적인 권한 집합을 받습니다. 로컬 인트라넷에서 설치되면 더 많은 권한을 받고 CD-ROM에서 설치되면 완전 신뢰 권한을 받습니다.

사용 권한을 구성하기 위한 시작점으로 보안 페이지의 영역 목록에서 보안 영역을 선택할 수 있습니다. 애플리케이션이 둘 이상의 영역에서 배포될 가능성이 있는 경우 최소 권한으로 영역을 선택합니다. 자세한 내용은 방법: ClickOnce 애플리케이션에 대한 보안 영역 설정을 참조하세요.

설정할 수 있는 속성은 사용 권한 집합에 따라 다릅니다. 모든 권한 집합에 구성 가능한 속성이 있는 것은 아닙니다. 애플리케이션에서 요청할 수 있는 사용 권한의 전체 목록에 대한 자세한 내용은 다음을 참조하세요 System.Security.Permissions. 사용자 지정 영역에 대한 사용 권한을 설정하는 방법에 대한 자세한 내용은 방법: ClickOnce 애플리케이션에 대한 사용자 지정 권한 설정을 참조하세요.

권한이 제한된 애플리케이션 디버그

개발자는 완전 신뢰 권한이 있는 개발 컴퓨터를 실행할 가능성이 높습니다. 따라서 사용자가 제한된 권한으로 애플리케이션을 실행할 때 볼 수 있는 애플리케이션을 디버그할 때 동일한 보안 예외가 표시되지 않습니다.

이러한 예외를 catch하려면 최종 사용자와 동일한 권한으로 애플리케이션을 디버그해야 합니다. 제한된 사용 권한으로 디버깅은 프로젝트 디자이너보안 페이지에서 사용할 수 있습니다.

제한된 권한으로 애플리케이션을 디버그하면 보안 페이지에서 사용하도록 설정되지 않은 코드 보안 요구 사항에 대해 예외가 발생합니다. 예외를 방지하기 위해 코드를 수정하는 방법에 대한 제안을 제공하는 예외 도우미가 나타납니다.

또한 코드를 작성할 때 코드 편집기에서 IntelliSense 기능은 구성한 보안 권한에 포함되지 않은 멤버를 사용하지 않도록 설정합니다.

자세한 내용은 방법: 제한된 사용 권한으로 ClickOnce 애플리케이션 디버그를 참조하세요.

브라우저 호스팅 애플리케이션에 대한 보안 권한

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

  • WPF Windows 애플리케이션

  • WPF 웹 브라우저 애플리케이션

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

  • WPF 서비스 라이브러리

    이러한 프로젝트 유형 중 WPF 웹 브라우저 애플리케이션만 웹 브라우저에서 호스트되므로 특별한 배포 및 보안 설정이 필요합니다. 이러한 애플리케이션에 대한 기본 보안 설정은 다음과 같습니다.

  • ClickOnce 보안 설정 사용

  • 부분 신뢰 애플리케이션입니다.

  • 인터넷 영역 (WPF 웹 브라우저 애플리케이션에 대한 기본 사용 권한 집합이 선택됨)

    고급 보안 설정 대화 상자에서 선택한 사용 권한 집합 확인란을 사용하여 이 애플리케이션 디버그를 선택하고 사용하지 않도록 설정합니다. 브라우저 호스팅 애플리케이션에 대해 영역 내 디버그를 해제할 수 없기 때문입니다.