보안 정책 관리 개요

중요중요

.NET Framework 버전 4에서 CLR(공용 언어 런타임)은 더 이상 컴퓨터의 보안 정책을 제공하지 않습니다.Microsoft는 CLR 보안 정책 대신 Windows 소프트웨어 제한 정책을 사용하는 것을 권장합니다.이 항목의 내용은 .NET Framework 버전 3.5 및 이전 버전에만 적용되고 버전 4 및 이후 버전에는 적용되지 않습니다.이 변경 내용 및 다른 변경 내용에 대한 자세한 내용은 .NET Framework 4의 보안 변경 내용을 참조하십시오.

.NET Framework 보안 시스템은 보안 정책이라는 구성 가능한 규칙 집합에 의해 제어됩니다. 이 정책을 통해 최종 사용자나 관리자는 액세스가 허용되는 리소스 코드를 파악하고 그 결과 궁극적으로 실행 가능한 코드를 결정하는 설정을 조정합니다.

예를 들어, 엔터프라이즈 설정 관리자가 특정 회사의 소프트웨어를 신뢰하지 않는 경우를 가정해 봅니다. 회사에서는 직원들이 흥미를 가질만한 소프트웨어를 생산하고 있지만 이러한 소프트웨어들로 인해 네트워크 트래픽이 증가하고 워크스테이션이 불안정해지는 경우도 있습니다. 이 경우, 특정 암호화 강력한 이름(프로젝트의 고유한 식별자)을 가진 소프트웨어가 컴퓨터 리소스에 액세스하는 권한을 제한하는 엔터프라이즈 수준 보안 정책을 설정할 수 있습니다. 이 게시자의 소프트웨어를 실행하지 못하게 하는 보안 정책을 설정할 수도 있습니다.

이 항목에서는 보안 정책 관리에 대한 개요를 제공합니다. 자세한 내용은 보안 정책 관리를 참조하십시오.

증명 정보, 코드 그룹 및 권한 집합

공용 언어 런타임을 대상으로 하는 코드는 어셈블리라는 단위로 배포됩니다. 로드 시 공용 언어 런타임은 코드 작성자의 디지털 서명 및 코드가 발생한 위치 등 어셈블리에 대한 정보를 식별하는 증명 정보를 각 어셈블리에서 조사합니다. 증명 정보를 기초로 공용 언어 런타임 보안 관리자는 보안 정책에 따라 어셈블리를 코드 그룹에 매핑합니다. 코드 그룹은 특정 형식의 증명 정보를 테스트하기 위해 정의되며 연결된 권한 집합이 있습니다. 코드 그룹에 속하는 어셈블리에는 연결된 권한 집합에서 정의하는 권한이 부여됩니다. 증명 정보, 코드 그룹 및 권한 집합에 대한 자세한 내용은 보안 정책 모델을 참조하십시오.

권한

권한은 보호된 리소스에 액세스할 수 있는 권한을 나타내는 개체입니다. 권한은 구성할 수 있으 단일 권한 개체가 여러 가지 형식으로 나타날 수 있습니다. 예를 들어 FileIOPermission은 로컬 하드 디스크에 있는 파일에 대한 액세스, 만들기, 읽기, 쓰기 또는 수정 권한을 나타냅니다. 권한이 의미를 갖기 위해서는 나타내는 액세스 형식에 대한 특정 정보가 포함되어 있어야 합니다. FileIOPermission을 구성하여 하나의 특정 파일을 읽거나, 하나의 특정 파일을 읽고 쓰거나, 전체 디렉터리에서 여러 파일을 읽을 수 있는 권한을 나타낼 수 있습니다. 컴퓨터 관리자는 권한이 나타내고 해당 어셈블리에 부여되는 권한을 전부 구성할 수 있습니다. 응용 프로그램은 권한 개체를 다른 개체와 마찬가지로 작성하고 구성할 수는 있지만 응용 프로그램에 권한을 부여할 수 있는 것은 보안 정책 뿐입니다. 실제로는 관리자가 권한을 부여합니다. 공용 권한의 목록에 대한 자세한 내용은 코드 액세스 권한을 참조하십시오.

보안 정책 수준

보안 모델에는 서로 다른 관리 및 호스팅 시나리오에 대응하는 네 가지의 보안 정책 수준이 정의되어 있습니다. 다음 표는 각 수준에 대해 설명합니다. 엔터프라이즈 정책 수준이 가장 높은 수준이고 응용 프로그램 도메인 수준이 가장 낮은 수준입니다.

정책 수준

설명

엔터프라이즈 정책

엔터프라이즈 도메인의 정책을 설정하는 엔터프라이즈 관리자가 정의합니다.

컴퓨터 정책

단일 컴퓨터의 정책을 설정하는 컴퓨터 관리자가 정의합니다.

사용자 정책

단일 로그온 계정에 대한 정책을 설정하는 사용자가 정의합니다.

응용 프로그램 도메인 정책

로드 시간 정책을 설정하기 위해 공용 언어 런타임 호스트(공용 언어 런타임을 호스팅하는 응용 프로그램)가 정의합니다. 이 수준은 관리할 수 없습니다.

각 정책 수준은 코드 그룹의 계층 구조로 구성되어 있습니다. 각 정책 수준의 관리자는 자신의 코드 그룹 및 연결된 권한 집합을 만들 수 있습니다. 로드 시 코드 액세스 보안 시스템은 모든 정책 수준을 검사하여 각 수준에서 허용되는 모든 권한의 교집합을 권한으로 부여합니다. 하위 정책 수준의 관리자는 상위 수준에서 결정한 정책을 낮출 수는 없지만 원하는 만큼 높일 수는 있습니다. 기본 보안 정책은 컴퓨터 정책 수준에 있습니다.

기본 보안 설정은 다음과 같습니다.

  • 사용자 수준과 엔터프라이즈 수준은 무제한으로 설정되어 있습니다.

  • 컴퓨터 수준에는 특정 정책 설정과 제한 사항이 포함되어 있습니다.

  • 세 수준 모두에서 정의된 설정이 기본 설정을 구성합니다.

무제한 사용자 수준 및 엔터프라이즈 수준이라고 해서 어셈블리에 무제한 권한을 부여하지는 않습니다. 컴퓨터 수준은 몇 가지 제한 사항을 정의하며, 세 수준 모두 전반적으로 고려되기 때문에 무제한의 권한은 부여되지 않습니다. 자세한 내용은 보안 정책 모델을 참조하십시오.

권한 집합에 코드 그룹 매핑

관리하는 정책 수준에서 코드 그룹을 권한 집합에 매핑하여 정책을 관리합니다.

코드 그룹에는 멤버 조건, 권한 집합 연결 및 코드 그룹 특성이 포함됩니다. 어셈블리가 공용 언어 런타임에 제공하는 증명 정보를 코드 그룹에 지정한 멤버 조건과 비교합니다. 멤버 조건과 일치하는 증명 정보를 어셈블리가 제공하면 코드 그룹에 넣을 수 있습니다. 관리자는 멤버 조건을 지정하고 해당 코드 그룹에 권한 집합을 할당하여 어셈블리를 코드 그룹으로 식별하고 분류합니다. 선택적으로, 권한을 할당할 때 코드 그룹 특성을 사용하여 현재 정책 수준 아래의 정책 수준을 고려하거나 현재 코드 그룹 이외의 코드 그룹을 고려해서는 안 된다는 것을 지정할 수 있습니다.

다음의 기본 제공 증명 정보 형식을 멤버 조건으로 사용할 수 있습니다.

  • 응용 프로그램의 설치 디렉터리

  • 어셈블리의 암호화 해시

  • 어셈블리 게시자의 디지털 서명

  • 어셈블리가 발생된 사이트

  • 어셈블리의 암호화 강력한 이름

  • 어셈블리가 발생된 URL

  • 어셈블리가 발생된 영역

이러한 멤버 조건의 조합을 기준으로 어셈블리의 권한을 늘리거나 줄일 수 있습니다. 사용자 지정 멤버 조건을 만들 수도 있기 때문에 앞의 목록이 모든 가능성을 다 나타내는 것은 아닙니다. 자세한 내용은 증명 정보를 참조하십시오.

참고 항목

개념

코드 액세스 보안

기타 리소스

최선의 보안 정책 구현 방법

보안 정책 구성

보안 정책 관리