코드 액세스 보안
Code Access SecurityCode Access Security(CAS; 코드액세스 시큐러티)를 참조해 주세요.NET 프레임워크는 신뢰할 수 없는 코드가 특권 액션을 수행하지 못하도록 하는 마이크로소프트의 솔루션입니다.CLR은 어셈블리를 로드하면 어셈블리의 증거를 취득하고 이를 사용하여 어셈블리가 속한 코드 그룹을 식별합니다.코드 그룹에는 권한 세트(1개 이상의 권한)가 포함되어 있습니다.특권 액션을 실행하는 코드에 의해 CLR이 콜스택을 기동하여 콜스택 내의 각 메서드의 어셈블리에 부여된 권한 세트를 조사합니다.코드 그룹 및 권한 세트는 보안 정책을 정의하는 시스템의 관리자가 결정합니다.Microsoft 에서는, CAS 를 낡은 것으로 간주해, 사용을 [1]금하고 있습니다.에서는 사용할 수 없습니다.NET Core 및.그물.
증거
증거는 어셈블리와 관련된 모든 정보일 수 있습니다.에서 사용되는 기본 증거입니다.NET 코드 액세스 보안은 다음과 같습니다.
- 응용 프로그램 디렉토리: 어셈블리가 상주하는 디렉토리.
- 게시자: 어셈블리의 게시자의 디지털 서명(Authenticode를 통해 어셈블리에 서명해야 함).
- URL: 어셈블리가 시작된 전체 URL
- 사이트: URL/리모트 도메인/VPN의 호스트명.
- 영역: 어셈블리가 상주하는 보안 영역
- 해시: 어셈블리의 암호화 해시. 특정 버전을 식별합니다.
- 강력한 이름: 어셈블리 이름, 버전 및 어셈블리 서명에 사용되는 서명 키의 공용 키 조합입니다.서명 키는 X.509 증명서가 아니라 강력한 이름 지정 도구인 SN에 의해 생성된 사용자 지정 키 쌍입니다.EXE 또는 Visual Studio를 참조하십시오.
개발자는 커스텀증거(일명 어셈블리증거)를 사용할 수 있지만 이를 위해서는 보안 어셈블리와 버전 1.1에서[clarification needed] 작성해야 합니다.NET 이 기능은 동작하지 않습니다.
어셈블리의 해시에 근거한 증거는 코드로 간단하게 취득할 수 있다.예를 들어 C#에서는 다음과 같은 code 절에 의해 증거를 얻을 수 있다.
이것..Get Type (Get Type)().어셈블리.증거 정책.
정책은 증거를 사용하여 코드 그룹 구성원을 결정하는 식 집합입니다.코드 그룹은 해당 그룹 내의 어셈블리에 대한 권한 세트를 제공합니다.에는 4가지 정책이 있습니다.네트워크:
- 엔터프라이즈: Active Directory 설치의 일부인 시스템 패밀리에 대한 정책입니다.
- Machine: 현재 시스템에 대한 정책입니다.
- 사용자: 로그온한 사용자의 정책입니다.
- AppDomain: 실행 중인 응용 프로그램 도메인에 대한 정책입니다.
처음 3개의 정책은 XML 파일에 저장되며 를 통해 관리됩니다.NET Configuration Tool 1.1 (mscorcfg.msc)최종 정책은 현재 응용 프로그램 도메인의 코드를 통해 관리됩니다.
코드 액세스 보안은 어셈블리의 증거를 각 정책에 제시하고 교차로(즉 생성된 모든 권한 세트에 공통 권한)를 어셈블리에 부여된 권한으로 사용합니다.
기본적으로 Enterprise, User 및 AppDomain 정책은 완전한 신뢰(즉, 모든 어셈블리에 모든 권한을 부여할 수 있음)를 제공하며 시스템 정책은 더 제한적입니다.교차로가 사용되므로 최종 권한 세트는 시스템 정책에 따라 결정됩니다.
정책 시스템은 에서 삭제되어 있습니다.NET Framework 4.0.[2]
코드 그룹
코드 그룹은 명명된 권한 세트에 증거를 연결합니다.관리자는 를 사용합니다.특정 유형의 증거(사이트 등)와 해당 증거의 특정 값(www.mysite.com 등)을 지정하고 코드 그룹이 부여하는 권한 세트를 식별하기 위한 NET 구성 도구입니다.
요구 사항
일부 권한 있는 작업을 수행하는 코드는 하나 이상의 권한을 요구합니다.이 요구에 따라 CLR은 콜스택을 워크하게 되며 각 메서드에 대해 요구된 권한이 메서드의 어셈블리에 부여된 권한에 포함되도록 합니다.권한이 부여되지 않으면 보안 예외가 발생합니다.이로 인해 다운로드된 코드가 특권 액션을 수행할 수 없습니다.예를 들어 어셈블리가 신뢰할 수 없는 사이트에서 다운로드된 경우 어셈블리에 파일 IO 권한이 없기 때문에 이 어셈블리가 파일에 액세스하려고 하면 콜을 차단하는 예외가 발생합니다.
