다음을 통해 공유


부분 신뢰 코드에서 라이브러리 사용

업데이트: 2007년 11월

런타임 코드 액세스 보안 시스템에서 완전 신뢰 수준보다 낮은 신뢰를 받는 응용 프로그램은 라이브러리 작성자가 AllowPartiallyTrustedCallersAttribute 클래스를 사용하여 특별히 허용하지 않는 한 관리되는 공유 라이브러리를 호출할 수 없습니다. 따라서 일부 라이브러리는 부분적으로 신뢰할 수 있는 컨텍스트에서 사용할 수 없다는 점을 응용 프로그램 작성자는 알고 있어야 합니다. 기본적으로 로컬 인트라넷이나 인터넷 영역에서 실행되는 모든 코드는 부분적으로 신뢰할 수 있습니다. 코드가 부분적으로 신뢰할 수 있는 컨텍스트에서 실행되지 않도록 하거나 부분적으로 신뢰할 수 있는 코드에 의해 호출되지 않도록 하려는 경우에는 이 단원의 내용에 대해 신경 쓰지 않아도 됩니다. 그러나 부분적으로 신뢰할 수 있는 코드와 상호 작용해야 하거나 부분적으로 신뢰할 수 있는 컨텍스트에서 실행되어야 하는 코드를 작성할 경우에는 다음 요소를 고려해야 합니다.

  • 라이브러리는 강력한 이름으로 서명되어야만 여러 응용 프로그램에서 공유할 수 있습니다. 강력한 이름을 사용하면 코드를 전역 어셈블리 캐시에 넣을 수 있으며 소비자는 이식 가능한 특정 코드가 실제로 사용자로부터 온 것임을 확인할 수 있습니다.

  • 기본적으로 강력한 이름의 공유 라이브러리는 자동으로 완전 신뢰에 대한 암시적 LinkDemand를 수행하므로 라이브러리 작성자가 별도로 수행해야 하는 작업이 없습니다.

  • 완전히 신뢰할 수 없는 호출자가 이러한 라이브러리를 호출하려고 하면 런타임에서는 SecurityException을 throw하며 호출자는 라이브러리에 링크할 수 없습니다.

  • 자동 LinkDemand를 비활성화하고 예외가 throw되지 않게 하려면 공유 라이브러리의 어셈블리 범위에 AllowPartiallyTrustedCallersAttribute 특성을 포함시키면 됩니다. 이 특성을 사용하면 부분 신뢰되는 관리 코드에서 해당 라이브러리를 호출할 수 있습니다.

  • 이 특성을 사용함으로써 라이브러리에 액세스할 수 있는 권한을 부여받은 부분 신뢰 코드는 여전히 로컬 컴퓨터 정책에 정의된 추가 제한 조건을 따라야 합니다.

  • AllowPartiallyTrustedCallersAttribute 특성이 없는 라이브러리를 부분 신뢰 코드에서 프로그래밍 방식으로 호출할 수는 없습니다. 응용 프로그램이 기본적으로 완전 신뢰를 받지 않는 경우 이러한 라이브러리를 호출할 수 있도록 하려면 관리자는 보안 정책을 수정하고 응용 프로그램에 완전 신뢰를 부여해야 합니다.

특정 응용 프로그램 전용인 라이브러리에는 강력한 이름이나 AllowPartiallyTrustedCallersAttribute 특성이 필요하지 않으며 응용 프로그램 외부에서 악성 코드에 의해 참조될 수 없습니다. 개발자나 관리자가 별도의 작업을 수행하지 않아도 이러한 코드는 이식 가능한 부분 신뢰 코드에서 고의 또는 실수로 악용할 수 없도록 보호됩니다.

다음과 같은 코드 형식의 경우에는 부분 신뢰 코드에서 사용할 수 있도록 명시적으로 설정하는 것이 좋습니다.

  • 보안상 약점에 대해 충분히 테스트되었으며 보안 코딩 지침에 설명된 지침을 따르는 코드

  • 부분적으로 신뢰할 수 있는 경우를 위해 특별히 작성된 강력한 이름의 코드 라이브러리

  • 인터넷이나 로컬 인트라넷에서 다운로드되는 이식 가능 코드에서 호출되며 강력한 이름으로 서명된 모든 구성 요소. 여기에는 부분적으로 신뢰할 수 있는 구성 요소나 완전히 신뢰할 수 있는 구성 요소가 모두 포함됩니다. 이러한 구성 요소는 기본 보안 정책에서 이식 가능 코드가 부분적인 신뢰를 받기 때문에 영향을 받습니다.

  • 기본 정책이 수정된 경우 보안 정책에서 완전 신뢰보다 낮은 신뢰 수준을 부여한 모든 코드

    참고:

    .NET Framework 클래스 라이브러리에서 제공되는 일부 클래스에는 AllowPartiallyTrustedCallersAttribute 특성이 없으므로 부분 신뢰 코드에서 해당 클래스를 호출할 수 없습니다. 부분 신뢰 코드에서 호출할 수 있는 클래스의 목록은 AllowPartiallyTrustedCallersAttribute로 표시된 .NET Framework 어셈블리를 참조하십시오.

참고 항목

기타 리소스

코드 액세스 보안