다음을 통해 공유


호스트 보호 특성 및 CLR 통합 프로그래밍

적용 대상: SQL Server

CLR(공용 언어 런타임)은 SQL Server 2005(9.x)부터 SQL Server와 같은 CLR 호스트에 관심이 있을 수 있는 특정 특성을 사용하여 .NET Framework의 일부인 관리되는 API(애플리케이션 프로그래밍 인터페이스)에 주석을 추가하는 메커니즘을 제공합니다. 이러한 HPA(호스트 보호 특성)의 예는 다음과 같습니다.

  • SharedState는 API가 공유 상태(예: 정적 클래스 필드)를 만들거나 관리하는 기능을 노출하는지 여부를 나타냅니다.

  • 동기화는 API가 스레드 간에 동기화를 수행하는 기능을 노출하는지 여부를 나타냅니다.

  • ExternalProcessMgmt는 API가 호스트 프로세스를 제어하는 방법을 노출하는지 여부를 나타냅니다.

이러한 특성을 고려할 때 SQL Server는 CAS(코드 액세스 보안)를 통해 호스트된 환경에서 허용되지 않는 HPA 목록을 지정합니다. CAS 요구 사항은 SAFE, EXTERNAL_ACCESS 또는 UNSAFE의 세 가지 SQL Server 권한 집합 중 하나로 지정됩니다. 이러한 세 가지 보안 수준 중 하나는 CREATE ASSEMBLY 문을 사용하여 어셈블리가 서버에 등록될 때 지정됩니다. SAFE 또는 EXTERNAL_ACCESS 권한 집합 내에서 실행되는 코드는 System.Security.Permissions.HostProtectionAttribute 특성이 적용된 특정 형식 또는 멤버를 피해야 합니다. 자세한 내용은 어셈블리CLR 통합 프로그래밍 모델 제한 만들기를 참조하세요.

HostProtectionAttribute는 호스트에서 허용하지 않을 수 있는 특정 코드 구문(형식 또는 메서드)을 식별한다는 측면에서 안정성을 향상시키는 방법만큼 보안 권한이 아닙니다. HostProtectionAttribute사용하면 호스트의 안정성을 보호하는 데 도움이 되는 프로그래밍 모델이 적용됩니다.

호스트 보호 특성

HPA는 호스트 프로그래밍 모델에 맞지 않는 형식 또는 멤버를 식별하고 다음과 같은 안정성 위협 수준을 나타냅니다.

  • 달리 유해하지 않습니다.

  • 서버에서 관리하는 사용자 코드가 불안정해질 수 있습니다.

  • 서버 프로세스 자체가 불안정해질 수 있습니다.

SQL Server는 ExternalProcessMgmt 값으로 System.Security.Permissions.HostProtectionResource 열거형을 지정하는 HostProtectionAttribute가 있는 형식 또는 멤버사용을 허용하지 않습니다. ExternalThreading, MayLeakOnAbort, SecurityInfrastructure, SelfAffectingProcessMgmnt, SelfAffectingThreading, SharedState, Synchronization 또는 UI. 이 때문에 어셈블리에서 공유 상태를 사용하도록 설정하거나, 동기화를 수행하거나, 종료 시 리소스 누수가 발생할 수 있거나, SQL Server 프로세스의 무결성에 영향을 주는 멤버를 호출할 수 없습니다.

허용되지 않는 형식 및 멤버

다음 항목에서는 SQL Server에서 HostProtectionResource 값을 허용하지 않는 형식 및 멤버를 식별합니다.

참고 항목

이러한 항목의 목록은 지원되는 어셈블리에서 생성되었습니다. 자세한 내용은 지원되는 .NET Framework 라이브러리를 참조 하세요.

섹션 내용

Microsoft.VisualBasic.dll 형식 및 멤버 허용 안 함
HPA 값이 허용되지 않는 Microsoft.VisualBasic.dll 형식 및 멤버를 나열합니다.

mscorlib.dll 형식 및 멤버 허용 안 함
HPA 값이 허용되지 않는 mscorlib.dll의 유형 및 멤버를 표시합니다.

System.dll 형식 및 멤버 허용 안 함
HPA 값이 허용되지 않는 System.dll의 유형 및 멤버를 표시합니다.

System.Data.dll 형식 및 멤버 허용 안 함
HPA 값이 허용되지 않는 System.Data.dll 형식 및 멤버를 나열합니다.

System.Core.dll에 허용되지 않는 형식 및 멤버
HPA 값이 허용되지 않는 System.Core.dll 형식 및 멤버를 나열합니다.

참고 항목

CLR 통합 코드 액세스 보안
CLR 통합 프로그래밍 모델 제한 사항
어셈블리 만들기