.NET Framework CLR(공용 언어 런타임)의 보안 모델은 Transact-SQL 문 또는 서버에서 실행되는 다른 CLR 개체 내에서 실행되는 여러 유형의 CLR과 비 CLR 개체 간의 액세스를 관리하고 보호합니다. 개체 간의 호출을 링크라고 합니다. 이러한 개체에 대해 수행되는 보안 검사의 유형은 관련된 링크의 유형에 따라 다릅니다.
CLR 통합 보안 모델에는 다음과 같은 목표가 있습니다.
기본적으로 SQL Server에서 관리되는 사용자 코드를 실행합니다. SQL Server의 견고성을 손상시킬 수 있는 작업을 수행하는 작업은 적절한 높은 수준의 권한으로 보호되어야 합니다.
관리되는 사용자 코드는 데이터베이스의 사용자 데이터 또는 다른 사용자 코드에 무단으로 액세스해서는 안 됩니다. 사용자 정의 코드는 호출한 사용자 세션의 보안 컨텍스트와 해당 보안 컨텍스트에 대한 올바른 권한으로 실행되어야 합니다.
로컬 데이터 액세스 및 계산을 위해 엄격하게 사용하여 사용자 코드가 서버 외부의 리소스에 액세스하지 못하도록 제한하는 컨트롤이 있어야 합니다.
사용자 정의 코드는 SQL Server 프로세스에서 실행하여 시스템 리소스에 대한 무단 액세스를 얻을 수 없습니다.
CLR의 코드 액세스 기반 보안 모델을 사용하는 SQL Server입니다. 이러한 통합된 보안 방법의 일부 이점에 대해 이 섹션에서 설명합니다.
다음 표에서는 이 섹션의 항목을 나열합니다.
CLR 통합 코드 액세스 보안
관리 코드에 대한 CAS(코드 액세스 보안) 모델에 대해 설명합니다.
호스트 보호 특성 및 CLR 통합 프로그래밍
SAFE 및 EXTERNAL_ACCESS 어셈블리에서 허용되지 않는 HPA(호스트 보호 특성) 값에 대한 정보를 제공합니다.
CLR 통합 보안의 링크
사용자 코드 조각이 SQL Server에서 서로 호출하는 방법을 설명합니다.
가장 및 CLR 통합 보안
관리 코드가 가장을 사용하여 외부 리소스에 액세스하는 방법을 설명합니다.
부분적으로 신뢰할 수 있는 호출자 허용
관리되는 메서드가 다른 어셈블리에 포함된 클래스에서 메서드를 호출할 때 발생하는 문제를 설명합니다.
애플리케이션 도메인 및 CLR 통합 보안
어셈블리가 애플리케이션 도메인에 로드되는 방법을 설명합니다.