코드 액세스 보안

업데이트: 2007년 11월

오늘날 복잡하게 연결된 컴퓨터 시스템은 출처를 알 수 없는 다양한 시스템에서 발생한 코드를 자주 사용합니다. 이러한 코드는 전자 메일에 첨부되거나, 문서에 포함되거나, 인터넷을 통해 다운로드됩니다. 불행하게도, 많은 컴퓨터 사용자들은 데이터를 손상시키거나 파괴하는 바이러스나 웜 등 악의적인 이식 가능한 코드로 인한 피해를 직접 경험했으며 이를 복구하기 위해 시간과 비용을 들여야 했습니다.

대부분의 공통 보안 메커니즘에서는 암호 등의 사용자 로그온 자격 증명에 따라 사용자에게 권한을 부여하며, 사용자가 액세스할 수 있는 디렉터리나 파일 등의 리소스를 제한합니다. 그러나 이러한 접근 방식으로는 몇 가지 문제를 해결할 수 없습니다. 사용자는 다양한 출처에서 코드를 가져오며 이러한 코드 중에는 신뢰할 수 없는 코드, 악의적인 코드에 의해 악용될 수 있는 취약한 부분 또는 버그가 있는 코드, 사용자도 모르는 작업을 실행할 수 있는 코드도 있습니다. 따라서 신중하고 신뢰할 수 있는 사용자라 할지라도 악의적이거나 오류가 많은 소프트웨어를 실행하면 컴퓨터 시스템이 손상되고 개인 데이터가 노출될 수 있습니다. 대부분의 운영 체제 보안 메커니즘에서는 웹 페이지의 스크립트만 제외하고, 실행되는 모든 코드가 완전히 신뢰되는 코드여야 합니다. 따라서, 두 시스템 간에 신뢰 관계가 없을지라도 한 시스템에서 발생한 코드를 다른 시스템에서도 안전하게 실행할 수 있도록, 광범위하게 적용할 수 있는 보안 메커니즘이 있어야 합니다.

악의적인 이식 가능한 코드로부터 시스템을 보호하고, 알 수 없는 출처에서 가져온 코드를 안전하게 실행하고, 신뢰된 코드가 실수 또는 의도적으로 보안을 손상시키지 않도록 .NET Framework에서는 코드 액세스 보안이라는 보안 메커니즘을 사용합니다. 코드 액세스 보안은 코드 발생 위치 및 코드 ID의 다른 측면에 따라 다양한 수준으로 코드를 신뢰할 수 있습니다. 또한, 코드 액세스 보안은 코드에 다양한 신뢰 수준을 적용하여, 실행하기 위해 완전히 신뢰되어야 하는 코드 분량을 최소화합니다. 코드 액세스 보안을 사용하면 악의적이거나 오류가 많은 코드에 의해 사용자 코드가 오용될 가능성이 적습니다. 사용자는 코드가 수행할 수 있는 작업 집합과 수행할 수 없는 작업 집합을 지정할 수 있으므로 위험 부담을 줄일 수 있습니다. 또한 코드 액세스 보안은 코드의 보안상 약점으로 인해 생길 수 있는 손상을 최소화합니다.

공용 언어 런타임 기능이 있는 모든 관리 코드는 코드 액세스 보안을 전혀 호출하지 않아도 코드 액세스 보안의 장점을 활용할 수 있습니다. 그러나, 모든 응용 프로그램은 코드 액세스 보안 기본 사항에서 설명하는 것처럼 코드 액세스 요청을 해야 합니다.

단원 내용

관련 단원

  • 주요 보안 개념
    .NET Framework 보안 시스템에서 사용하는 중요한 용어와 개념을 개략적으로 설명합니다.

  • 역할 기반 보안
    역할에 따라 보안을 통합하는 방법에 대해 설명합니다.

  • 암호화 서비스
    암호화 기법을 응용 프로그램에 통합하는 방법에 대해 설명합니다.

  • 보안 정책 관리
    보안 정책을 관리하는 방법을 설명합니다.

  • 보안 도구
    .NET Framework 보안 시스템을 구현하고 관리하는 데 사용하는 도구에 대해 설명합니다.