호스트 보호 특성 및 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 형식 및 멤버를 나열합니다.