호스트 보호 특성 및 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 값이 ExternalProcessMgmtSystem.Security.Permissions.HostProtectionResource 열거형을 지정하는 HostProtectionAttribute가 있는 형식 또는 멤버의 사용을 허용하지 않습니다. ExternalThreading, MayLeakOnAbort, SecurityInfrastructure, SelfAffectingProcessMgmnt, SelfAffectingThreading, SharedState, Synchronization 또는 UI . 이 때문에 어셈블리에서 공유 상태를 사용하도록 설정하거나, 동기화를 수행하거나, 종료 시 리소스 누수가 발생할 수 있거나, 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 통합 프로그래밍 모델 제한 사항
어셈블리 만들기