어셈블리를 빌드할 때 어셈블리를 실행하는 데 필요한 사용 권한 집합을 지정할 수 있습니다. 증거를 기반으로 어셈블리에 특정 권한이 부여되는지 여부가 결정됩니다.
증거가 사용되는 방법에는 두 가지가 있습니다.
입력 증거는 로더가 수집한 증거와 병합되어 정책 해결에 사용되는 최종 증거 집합을 만듭니다. 이 의미 체계를 사용하는 메서드에는 Assembly.Load, Assembly.LoadFrom 및 Activator.CreateInstance가 포함됩니다.
입력 증거는 정책 해결에 사용되는 최종 증거 집합으로 변환되지 않고 사용됩니다. 이 의미 체계를 사용하는 메서드에는 Assembly.Load(byte[]) 및 AppDomain.DefineDynamicAssembly()가 포함됩니다.
어셈블리가 실행되는 컴퓨터의 보안 정책 집합에서 선택적 권한을 부여할 수 있습니다. 코드가 모든 잠재적 보안 예외를 처리하도록 하려면 다음 중 하나를 수행할 수 있습니다.
코드에 있어야 하는 모든 권한에 대한 사용 권한 요청을 삽입하고 권한이 부여되지 않은 경우 발생하는 로드 시간 오류를 미리 처리합니다.
사용 권한 요청을 사용하여 코드에 필요할 수 있는 권한을 가져오지 말고 권한이 부여되지 않은 경우 보안 예외를 처리하도록 준비해야 합니다.
비고
보안은 복잡한 영역이며 선택할 수 있는 많은 옵션이 있습니다. 자세한 내용은 주요 보안 개념을 참조하세요.
로드 시 어셈블리의 증거는 보안 정책에 대한 입력으로 사용됩니다. 보안 정책은 엔터프라이즈 및 컴퓨터의 관리자뿐만 아니라 사용자 정책 설정에 의해 설정되며 실행 시 모든 관리 코드에 부여되는 사용 권한 집합을 결정합니다. 어셈블리 게시자(서명 도구에서 생성된 서명이 있는 경우), 어셈블리가 다운로드된 웹 사이트 및 영역(Internet Explorer 개념) 또는 어셈블리의 강력한 이름에 대해 보안 정책을 설정할 수 있습니다. 예를 들어 컴퓨터 관리자는 웹 사이트에서 다운로드하고 지정된 소프트웨어 회사에서 서명한 모든 코드가 컴퓨터의 데이터베이스에 액세스할 수 있도록 허용하는 보안 정책을 설정할 수 있지만 컴퓨터의 디스크에 쓸 수 있는 액세스 권한을 부여하지는 않습니다.
강력한 이름의 어셈블리 및 서명 도구
경고
보안을 위해 강력한 이름을 사용하지 마세요. 고유한 ID만 제공합니다.
강력한 이름을 사용하거나 SignTool.exe(서명 도구)를 사용하여 서로 다르지만 보완적인 두 가지 방법으로 어셈블리에 서명할 수 있습니다. 강력한 이름으로 어셈블리에 서명하면 어셈블리 매니페스트가 포함된 파일에 공개 키 암호화가 추가됩니다. 강력한 이름 서명은 이름 고유성을 확인하고, 이름 스푸핑을 방지하며, 참조가 확인될 때 호출자에게 ID를 제공하는 데 도움이 됩니다.
강력한 이름과 연결된 신뢰 수준이 없으므로 SignTool.exe(서명 도구) 가 중요합니다. 두 서명 도구를 사용하려면 게시자가 해당 ID를 타사 기관에 증명하고 인증서를 획득해야 합니다. 그러면 이 인증서가 파일에 포함되며 관리자가 코드의 신뢰성을 신뢰할지 여부를 결정하는 데 사용할 수 있습니다.
강력한 이름과SignTool.exe(서명 도구)를 사용하여 만든 디지털 서명을 어셈블리에 모두 지정하거나 단독으로 사용할 수 있습니다. 두 서명 도구는 한 번에 하나의 파일만 서명할 수 있습니다. 다중 파일 어셈블리의 경우 어셈블리 매니페스트가 포함된 파일에 서명합니다. 강력한 이름은 어셈블리 매니페스트를 포함하는 파일에 저장되지만 SignTool.exe(서명 도구) 를 사용하여 만든 서명은 어셈블리 매니페스트를 포함하는 PE(이식 가능한 실행 파일) 파일의 예약된 슬롯에 저장됩니다. SignTool.exe(서명 도구) 생성된 서명을 사용하는 트러스트 계층 구조가 이미 있거나 정책에서 키 부분만 사용하고 신뢰 체인을 확인하지 않는 경우 SignTool.exe(서명 도구)를 사용하여 어셈블리 서명(강력한 이름 포함 또는 제외)을 사용할 수 있습니다.
비고
어셈블리에서 강력한 이름과 서명 도구 서명을 모두 사용하는 경우 먼저 강력한 이름을 할당해야 합니다.
공용 언어 런타임은 해시 확인도 수행합니다. 어셈블리 매니페스트에는 매니페스트가 빌드될 때 존재했던 각 파일의 해시를 포함하여 어셈블리를 구성하는 모든 파일 목록이 포함됩니다. 각 파일이 로드될 때 해당 콘텐츠는 해시되고 매니페스트에 저장된 해시 값과 비교됩니다. 두 해시가 일치하지 않으면 어셈블리가 로드되지 않습니다.
SignTool.exe(서명 도구)를 사용하는 강력한 명명 및 서명은 디지털 서명 및 인증서를 통한 무결성을 보장합니다. 언급된 모든 기술, 즉 해시 확인, 강력한 이름 지정 및 SignTool.exe(서명 도구)를 사용한 서명은 어셈블리가 어떤 방식으로도 변경되지 않았는지 확인하기 위해 함께 작동합니다.
참고하십시오
.NET