다음을 통해 공유


코드 액세스 권한 및 보안

.NET Framework에서는 코드 액세스 보안을 통해 보호된 리소스와 작업에 대한 코드의 액세스를 제한합니다.공용 언어 런타임 기능이 있는 모든 응용 프로그램은 공용 언어 런타임의 보안 시스템과 상호 작용해야 합니다.응용 프로그램이 실행될 경우 공용 언어 런타임에 의해 자동으로 평가되어 권한 집합이 부여됩니다.부여 받은 권한에 따라 응용 프로그램이 제대로 실행될 수도 있고 보안 예외가 생성될 수도 있습니다.

특정 컴퓨터의 로컬 보안 설정에 따라 코드에 부여되는 권한이 결정됩니다.이러한 설정은 컴퓨터마다 다르므로 실행하기에 충분한 권한이 항상 코드에 부여되는 것은 아닙니다.자세한 내용은 코드 액세스 보안 기본 사항을 참조하십시오.

코드 액세스 권한

코드 액세스 권한 개체는 리소스 및 작업이 무단으로 사용되지 않도록 보호하는 데 사용됩니다.이 권한은 공용 언어 런타임에서 관리 코드에 보안 관련 제한 사항을 적용하기 위한 메커니즘에서 기본적인 부분입니다.

코드 액세스 권한을 통해 사용자는 파일과 같이 보호되는 리소스에 액세스하거나 관리 코드에 대한 액세스 같이 보호되는 작업을 수행할 수 있습니다.모든 코드 액세스 권한은 부여된 권한이 런타임에 의해 결정되는지 여부와 관계없이 코드로 요청할 수 있습니다.각 코드 액세스 권한은 CodeAccessPermission 클래스에서 파생되므로 권한에는 일반적인 메서드인 Assert, Demand, Deny, PermitOnly, IsSubSetOf, Intersect 및 Union이 있습니다.

.NET Framework에서 제공되는 권한

이 표에서는 .NET Framework에서 제공하는 코드 액세스 권한을 보여 줍니다.

권한 클래스

허용 작업

AspNetHostingPermission

ASP.NET-호스팅 환경의 리소스에 액세스할 수 있는 권한

DirectoryServicesPermission

System.DirectoryServices 클래스에 액세스할 수 있는 권한

DnsPermission

네트워크의 DNS(Domain Name System)에 액세스할 수 있는 권한

EnvironmentPermission

환경 변수에서 읽거나 환경 변수에 쓸 수 있는 권한

EventLogPermission

이벤트 로그 서비스에서 읽거나 이벤트 로그 서비스에 쓸 수 있는 권한

FileDialogPermission

열기 대화 상자를 사용하여 파일에서 읽거나 파일에 쓸 수 있는 권한

FileIOPermission

파일 또는 디렉터리에서 읽거나 파일 또는 디렉터리에 쓸 수 있는 권한

IsolatedStorageFilePermission

격리된 저장소의 파일 또는 디렉터리에서 읽거나 파일 또는 디렉터리에 쓸 수 있는 권한

MessageQueuePermission

MSMQ라고도 하는 관리되는 메시지 큐 인터페이스를 사용하여 메시지 큐에 액세스할 수 있는 권한

OdbcPermission

ODBC(Open Database Connectivity) 데이터 소스에 액세스할 수 있는 권한

OleDbPermission

OLE DB를 사용하여 데이터베이스에 액세스할 수 있는 권한

OraclePermission

Oracle 데이터베이스에 액세스할 수 있는 권한

PerformanceCounterPermission

성능 카운터에 액세스할 수 있는 권한

PrintingPermission

프린터 액세스 권한

ReflectionPermission

런타임에 형식에 대한 정보 확인 권한

RegistryPermission

레지스트리 키 및 값의 읽기, 쓰기, 만들기 또는 삭제 권한

SecurityPermission

실행, 권한 어설션, 비관리 코드로의 호출, 유효성 검사 생략 및 기타 보안 관련 권한

ServiceControllerPermission

실행 중이거나 중지된 서비스에 액세스할 수 있는 권한

SocketPermission

전송 주소에 대해 연결을 만들거나 허용할 수 있는 권한

SqlClientPermission

SQL 데이터베이스에 액세스할 수 있는 권한

UIPermission

사용자 인터페이스 기능에 액세스할 수 있는 권한

WebPermission

웹 주소에 대해 연결을 만들거나 허용할 수 있는 권한

사용자 정의 권한 만들기

.NET Framework는 .NET Framework에 의해 노출된 리소스를 중심으로, 특정 리소스 및 작업 집합을 보호하도록 설계된 코드 액세스 권한 클래스 집합을 제공합니다.대부분의 환경에서는 기본 제공 코드 액세스 권한만으로도 충분합니다.그러나 사용자 고유의 코드 액세스 권한 클래스를 정의하는 것이 좋을 때도 있습니다.자세한 내용은 사용자 고유의 코드 액세스 권한 만들기를 참조하십시오.

ID 권한

ID 권한은 어셈블리를 식별하는 특징을 나타냅니다.공용 언어 런타임에서는 입수한 어셈블리에 대한 정보에 따라 어셈블리가 로드될 때 해당 어셈블리에 ID 권한을 부여합니다.자세한 내용은 ID 권한을 참조하십시오.

역할 기반 권한

종종 업무용 응용 프로그램을 사용하여 사용자가 제공하는 자격 증명에 따라 데이터 또는 리소스에 액세스할 수 있습니다.일반적으로 이러한 응용 프로그램에서는 사용자의 역할을 확인한 후 해당 역할에 따라 리소스에 대한 액세스 권한을 제공합니다.공용 언어 런타임에서는 Windows 계정 또는 사용자 지정 ID에 따라 역할 기반 권한을 지원합니다.자세한 내용은 역할 기반 보안을 참조하십시오.

보안 작업

다음 표에서는 권한 및 보안 관련 작업을 보여 줍니다.

작업

참조

비관리 코드에 액세스하는 권한 요청

방법: 비관리 코드 액세스 권한 요청

선택적 권한 요청

방법: RequestOptional 플래그를 사용하여 선택적 권한 요청

명명된 권한 집합에 대한 권한 요청

방법: 명명된 권한 집합에 대한 권한 요청

XML로 인코딩된 권한 요청

XML로 인코딩된 권한 요청

권한 거부

방법: RequestRefuse 플래그를 사용하여 권한 거부

간접적인 보안 검사 수행

방법: 명령적 보안 검사 수행

선언적 보안 검사 수행

선언적 보안 검사 수행

보안 검사 재정의

보안 검사 재정의

부분 신뢰 코드로 라이브러리 공유

부분 신뢰 코드로 라이브러리 공유

AllowPartiallyTrustedCallersAttribute 어셈블리의 형식에 대한 완전 신뢰 필요

AllowPartiallyTrustedCallersAttribute 어셈블리에서 형식에 대한 완전 신뢰 요청

WindowsIdentityWindowsPrincipal 개체 만들기

방법: WindowsPrincipal 개체 만들기

GenericPrincipalGenericIdentity 개체 만들기

방법: GenericPrincipal 및 GenericIdentity 개체 만들기

.NET Framework 보안 정책 모델

.NET Framework 보안 정책 모델은 5개의 요소로 구성됩니다.여기에 해당하는 항목은 다음과 같습니다.

  • 보안 정책 수준: 엔터프라이즈, 컴퓨터, 사용자 및 응용 프로그램 도메인

  • 엔터프라이즈, 컴퓨터 및 사용자 정책 수준 내의 계층 구조인 코드 그룹

  • 각 코드 그룹과 연결된 명명된 권한 집합

  • 코드 ID에 대한 정보를 제공하는 증명 정보

  • 코드에 대한 증명 정보를 공용 언어 런타임에 제공하는 응용 프로그램 도메인 호스트

보안 정책 수준

.NET Framework는 어셈블리 또는 응용 프로그램 도메인에 부여되는 권한을 산정하는 4개의 보안 정책 수준을 제공합니다.각 수준별로 자체 코드 그룹 및 권한 집합의 계층 구조가 있습니다.런타임에서는 허용되는 권한 집합을 정책에 참여하는 모든 수준에서 허용되는 권한의 합계로 계산합니다.

수준은 다음과 같습니다.

  • 엔터프라이즈 정책.엔터프라이즈 구성 파일이 배포되는 엔터프라이즈 설정 내의 모든 관리 코드에 적용합니다.

  • 컴퓨터 정책.컴퓨터의 모든 관리 코드에 적용합니다.

  • 사용자 정책.공용 언어 런타임이 시작될 때 현재 운영 체제 사용자와 연관된 모든 프로세스 내의 코드에 적용합니다.

  • 응용 프로그램 도메인 정책.호스트 응용 프로그램 도메인 내의 관리 코드에 적용합니다.

자세한 내용은 보안 정책 수준을 참조하십시오.

코드 그룹

코드 그룹은 멤버 조건이 지정되어 있는 논리적인 코드 그룹입니다.멤버 자격 조건을 충족시키는 코드는 모두 그룹에 포함됩니다.코드 그룹에는 정책을 부여하는 동안 평가되는 각 권한 집합이 연결됩니다.자세한 내용은 코드 그룹을 참조하십시오.

명명된 권한 집합

명명된 권한 집합은 관리자가 코드 그룹에 연결할 수 있는 권한 집합입니다.명명된 권한 집합은 하나 이상의 권한과 해당 집합의 이름 및 설명으로 구성되어 있습니다.특정 권한 집합에 둘 이상의 코드 그룹을 연결할 수 있습니다.

이 표에서는 공용 언어 런타임에서 제공하는 명명된 권한 집합을 보여 줍니다.

이름

설명

Nothing

권한 없음(코드를 실행할 수 없음)

Execution

실행 권한은 있지만, 보호된 리소스를 사용할 권한은 없음.

Internet

출처를 알 수 없는 콘텐츠에 적합한 기본 정책 권한 집합

Local Intranet

엔터프라이즈 내의 기본 정책 권한 집합

Everything

확인을 건너뛸 권한만을 제외한 모든 표준(기본 제공) 권한

FullTrust

모든 리소스에 대한 모든 액세스 권한

자세한 내용은 명명된 권한 집합을 참조하십시오.

증명 정보

증명 정보는 공용 언어 런타임이 보안 정책을 기준으로 결정할 때 사용하는 정보입니다.증명 정보는 코드의 특징이 특별하다는 것을 공용 언어 런타임에게 알려 주며 응용 프로그램 디렉터리, 게시자, 사이트 및 URL을 포함할 수 있습니다.자세한 내용은 증명 정보를 참조하십시오.

응용 프로그램 도메인 호스트

각 .NET Framework 응용 프로그램은 응용 프로그램 도메인 내에서 호스트의 제어를 받으며 실행되는데, 이 호스트는 응용 프로그램 도메인을 만들어 이 안으로 어셈블리를 로드합니다.응용 프로그램 도메인은 다음과 같습니다.

  • 브라우저 호스트.웹 사이트 컨텍스트 내에서 코드를 실행합니다.

  • 사용자 지정 호스트.도메인을 만들고 동적 어셈블리를 비롯한 어셈블리를 도메인에 로드합니다.

  • 서버 호스트. 서버에 제출된 요청을 처리하는 코드를 실행합니다.

  • 셸 호스트.셸에서 응용 프로그램(.exe 파일)을 시작합니다.

이 표에서는 응용 프로그램 도메인과 관련된 작업을 보여 줍니다.

작업

참조

응용 프로그램 도메인 만들기

방법: 응용 프로그램 도메인 만들기

응용 프로그램 도메인 수준의 보안 정책 설정

응용 프로그램 도메인 수준 보안 정책 설정

응용 프로그램 도메인 구성

방법: 응용 프로그램 도메인 구성

특정 응용 프로그램 도메인에서 함수 호출

Calling Functions in a Specific Application Domain

응용 프로그램 도메인에서 설치 정보 검색

응용 프로그램 도메인에서 설치 정보 검색

응용 프로그램 도메인 언로드

방법: 응용 프로그램 도메인 언로드

자세한 내용은 AppDomain, 응용 프로그램 도메인 호스트응용 프로그램 도메인으로 프로그래밍을 참조하십시오.

참고 항목

작업

코드 액세스 보안 예외 문제 해결

참조

Mscorcfg.msc(.NET Framework 구성 도구)

개념

사용자, 도메인 및 어셈블리별 격리

기타 리소스

코드 액세스 보안 정책 도구(Caspol.exe)를 사용하여 보안 정책 구성