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

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

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

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

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

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

HostProtectionAttribute는 호스트가 허용하지 않는 특정 코드 구문을 유형이나 메서드로 식별한다는 점에서 안정성 향상 방법일 뿐 보안 권한은 아닙니다. HostProtectionAttribute를 사용하면 호스트의 안정성을 보호하도록 돕는 프로그래밍 모델이 적용됩니다.

호스트 보호 특성

HPA는 호스트 프로그래밍 모델에 맞지 않고 다음과 같이 안정성 위협의 증가 수준을 나타내는 형식이나 멤버를 식별합니다.

  • 심각하지 않습니다.

  • 서버에서 관리하는 사용자 코드를 불안정하게 만들 수 있습니다.

  • 서버 프로세스 자체를 불안정하게 만들 수 있습니다.

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

허용되지 않는 유형 및 멤버

다음 항목에서는 SQL Server에서 HostProtectionResource 값이 허용되지 않는 유형과 멤버를 식별합니다.

[!참고]

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

섹션 내용

참고 항목

개념

CLR 통합 코드 액세스 보안

CLR 통합 프로그래밍 모델 제한 사항

어셈블리 만들기