코드 액세스 보안 기본 사항
공용 언어 런타임 기능이 있는 모든 응용 프로그램, 즉 모든 관리되는 응용 프로그램은 공용 언어 런타임의 보안 시스템과 상호 작용해야 합니다. 관리되는 응용 프로그램이 로드되면 해당 호스트가 자동으로 권한 집합을 부여합니다. 이러한 권한은 호스트의 로컬 보안 설정 또는 응용 프로그램이 있는 샌드박스에 따라 결정됩니다. 이러한 권한에 따라 응용 프로그램이 제대로 실행될 수도 있고 보안 예외가 생성될 수도 있습니다.
데스크톱 응용 프로그램의 기본 호스트는 코드를 완전 신뢰로 실행하도록 허용합니다. 따라서 응용 프로그램이 데스크톱에서 사용되는 경우 무제한 권한 집합을 가집니다. 다른 호스트 또는 샌드박스에서는 제한된 권한 집합을 응용 프로그램에 제공합니다. 권한 집합은 호스트마다 변경될 수 있으므로 대상 호스트에서 허용하는 권한 집합만 사용하도록 응용 프로그램을 디자인해야 합니다.
다음과 같은 코드 액세스 보안 개념을 잘 알고 있어야 공용 언어 런타임 기능이 있는 응용 프로그램을 효율적으로 작성할 수 있습니다.
형식 안전 코드 작성: 코드에서 코드 액세스 보안의 장점을 활용하려면 확인할 수 있는 형식 안전 코드를 생성하는 컴파일러를 사용해야 합니다. 자세한 내용은 확인할 수 있는 형식 안전 코드 작성을 참조하십시오.
명령적 및 선언적 구문: 공용 언어 런타임 보안 시스템과의 상호 작용은 명령적 및 선언적 보안 호출을 사용하여 수행됩니다. 선언적 호출은 특성을 사용하여 수행되며 명령적 호출은 코드 내의 클래스의 새 인스턴스를 사용하여 수행됩니다. 명령적으로만 수행될 수 있는 호출도 있으며 선언적으로만 수행될 수 있는 호출도 있습니다. 일부 호출은 두 가지 방법을 모두 사용하여 수행할 수 있습니다. 자세한 내용은 보안 구문을 참조하십시오.
보안 클래스 라이브러리 사용: 클래스 라이브러리는 코드 액세스 보안을 사용하여 클래스 라이브러리에 액세스할 때 필요한 권한을 지정합니다. 코드가 사용하는 라이브러리에 액세스할 때 필요한 권한을 파악해야 합니다.
투명 코드: .NET Framework 버전 4 이상에서는 특정 권한을 식별해야 할 뿐 아니라 코드를 보안 투명으로 실행해야 하는지도 결정해야 합니다. 보안 투명 코드는 보안에 중요한 것으로 식별된 형식이나 멤버를 호출할 수 없습니다. 이 규칙은 완전 신뢰 응용 프로그램과 부분 신뢰 응용 프로그램에 모두 적용됩니다. 자세한 내용은 보안 클래스 라이브러리 사용 및 보안 투명 코드를 참조하십시오.