다음을 통해 공유


호스트 보호 특성 및 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 , , , MayLeakOnAbortSelfAffectingProcessMgmntSynchronizationSelfAffectingThreadingUISharedStateSecurityInfrastructureExternalThreading또는 값으로 열거형을 지정 System.Security.Permissions.HostProtectionResource 하는 가 있는 형식 또는 멤버 HostProtectionAttributeExternalProcessMgmt사용을 허용하지 않습니다. 이 때문에 어셈블리에서 공유 상태를 사용하도록 설정하거나, 동기화를 수행하거나, 종료 시 리소스 누수가 발생할 수 있거나, 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의 유형 및 멤버를 표시합니다.

참고 항목

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