호스트 보호 특성 및 CLR 통합 프로그래밍
CLR(공용 언어 런타임)은 SQL Server 2005부터 SQL Server 같은 CLR 호스트에 관심이 있을 수 있는 특정 특성을 사용하여 .NET Framework 일부인 관리형 API(애플리케이션 프로그래밍 인터페이스)에 주석을 추가하는 메커니즘을 제공합니다. 이러한 HPA(호스트 보호 특성)의 예는 다음과 같습니다.
SharedState
: API가 공유 상태(예: 정적 클래스 필드)를 만들거나 관리하는 기능을 노출하는지 여부를 나타냅니다.Synchronization
: API가 스레드 간 동기화 기능을 노출하는지 여부를 나타냅니다.ExternalProcessMgmt
: API가 호스트 프로세스 제어 기능을 노출하는지 여부를 나타냅니다.
이러한 특성을 고려할 때 SQL Server CAS(코드 액세스 보안)를 통해 호스트된 환경에서 허용되지 않는 HPA 목록을 지정합니다. CAS 요구 사항은 , EXTERNAL_ACCESS
또는 UNSAFE
의 세 가지 SQL Server 권한 집합 SAFE
중 하나로 지정됩니다. 이러한 세 보안 수준 중 하나는 CREATE ASSEMBLY
문을 사용하여 어셈블리를 서버에 등록할 때 지정됩니다. SAFE
또는 EXTERNAL_ACCESS
권한 집합 내에서 실행되는 코드는 System.Security.Permissions.HostProtectionAttribute
특성이 적용된 특정 유형이나 멤버를 사용해서는 안 됩니다. 자세한 내용은 어셈블리 만들기 및 CLR 통합 프로그래밍 모델 제한을 참조하세요.
HostProtectionAttribute
는 호스트가 허용하지 않는 특정 코드 구문을 유형이나 메서드로 식별한다는 점에서 안정성 향상 방법일 뿐 보안 권한은 아닙니다. HostProtectionAttribute
를 사용하면 호스트의 안정성을 보호하도록 돕는 프로그래밍 모델이 적용됩니다.
호스트 보호 특성
HPA는 호스트 프로그래밍 모델에 맞지 않고 다음과 같이 안정성 위협의 증가 수준을 나타내는 형식이나 멤버를 식별합니다.
심각하지 않습니다.
서버에서 관리하는 사용자 코드를 불안정하게 만들 수 있습니다.
서버 프로세스 자체를 불안정하게 만들 수 있습니다.
SQL Server , , , MayLeakOnAbort
SelfAffectingProcessMgmnt
Synchronization
SelfAffectingThreading
UI
SharedState
SecurityInfrastructure
ExternalThreading
또는 값으로 열거형을 지정 System.Security.Permissions.HostProtectionResource
하는 가 있는 형식 또는 멤버 HostProtectionAttribute
의 ExternalProcessMgmt
사용을 허용하지 않습니다. 이 때문에 어셈블리에서 공유 상태를 사용하도록 설정하거나, 동기화를 수행하거나, 종료 시 리소스 누수가 발생할 수 있거나, SQL Server 프로세스의 무결성에 영향을 주는 멤버를 호출할 수 없습니다.
허용되지 않는 유형 및 멤버
다음 topics 값이 HostProtectionResource
SQL Server 허용되지 않는 형식 및 멤버를 식별합니다.
참고
이러한 항목에 있는 목록은 지원되는 어셈블리에서 생성되었습니다. 자세한 내용은 Supported .NET Framework Libraries을 참조하세요.
섹션 내용
Microsoft.VisualBasic.dll에 허용되지 않는 유형 및 멤버
HPA 값이 허용되지 않는 Microsoft.VisualBasic.dll의 유형 및 멤버가 나열되어 있습니다.
mscorlib.dll에 허용되지 않는 유형 및 멤버
HPA 값이 허용되지 않는 mscorlib.dll의 유형 및 멤버를 표시합니다.
Disallowed Types and Members In System.dll
HPA 값이 허용되지 않는 System.dll의 유형 및 멤버를 표시합니다.
System.Data.dll에 허용되지 않는 유형 및 멤버
HPA 값이 허용되지 않는 System.Data.dll의 유형 및 멤버를 표시합니다.
System.Core.dll에 허용되지 않는 유형 및 멤버
HPA 값이 허용되지 않는 System.Core.dll의 유형 및 멤버를 표시합니다.