사용자 고유의 코드 액세스 권한 만들기

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

권한이 없는 코드로부터 보호해야 하지만 기본 제공 권한 클래스만으로는 충분하지 않은 리소스에 액세스하는 구성 요소나 클래스 라이브러리를 정의하는 경우 사용자 지정 코드 액세스 권한 클래스를 만들 수 있습니다. 사용자 지정 권한에 대한 선언적 요구를 작성하려면 해당 권한에 대해 attribute 클래스도 정의해야 합니다. 클래스 라이브러리 내에서 권한에 대한 요구를 작성하고 이러한 클래스를 제공하면 공용 언어 런타임은 권한이 없는 코드가 해당 리소스에 액세스하지 못하게 하며 관리자는 액세스 권한을 구성할 수 있습니다.

사용자 지정 권한을 사용하는 것이 좋은 경우는 또 있습니다. 기본 제공 코드 액세스 권한 클래스가 리소스를 보호하지만 리소스에 대한 액세스를 충분히 제어하지 않는 경우 사용자 지정 코드 액세스 권한이 필요합니다. 예를 들어, 각 직원 레코드가 개별 파일에 저장된 인사 레코드를 응용 프로그램에서 사용하는 경우, 직원 데이터 형식별로 읽기 및 쓰기 권한을 별도로 제어할 수 있습니다. 내부 관리 도구에 권한을 부여하여 직원 인사 파일의 특정 부분을 읽을 수는 있지만 해당 부분을 수정할 수는 없습니다. 사실, 일부분을 읽는 것도 허용되지 않을 수 있습니다.

기본 제공 권한이 있긴 하지만 리소스를 적절하게 보호할 수 있는 방식으로 정의되지 않은 경우 사용자 지정 코드 액세스 권한을 유용하게 사용할 수 있습니다. 예를 들어, 메뉴를 만들 수 있는 기능 등과 같이 보호되어야 하는 UI 기능이 있지만 기본 제공 UIPermission 클래스에 의해 보호되지 않는 경우가 있을 수 있습니다. 이런 경우, 사용자 지정 권한을 만들어 메뉴 작성 기능을 보호할 수 있습니다.

가능한 한 권한은 겹쳐서는 안 됩니다. 한 리소스를 보호하는 권한이 둘 이상이면 관리자에게 심각한 문제가 발생합니다. 관리자는 해당 리소스에 액세스하는 권한을 구성할 때마다 겹치는 모든 권한을 적절하게 처리해야 합니다.

사용자 지정 코드 액세스 권한을 구현하려면 다음과 같은 단계를 거칩니다. 일부 단계는 선택적입니다. 각 단계에 대해서는 별도의 항목에서 설명합니다.

  1. Permission 클래스 설계

  2. IPermissionIUnrestrictedPermission 인터페이스 구현

  3. 성능 향상 또는 특별한 데이터 형식의지원을 위해 필요한 경우 ISerializable 인터페이스 구현

  4. XML 인코딩 및 디코딩 처리

  5. Attribute 클래스를 구현하여 선언적 보안 지원 추가

  6. 필요한 경우 권한에 대한 사용자 지정 권한 요구

참고 항목

참조

FileIOPermission

UIPermission

IPermission

IUnrestrictedPermission

ISerializable

개념

코드 액세스 보안

보안 권한

특성을 사용하여 메타데이터 확장

권한 설계

선언적 보안 지원 추가

사용자 지정 권한 요구