다음을 통해 공유


CLR 통합 보안

적용 대상: SQL Server

.NET Framework CLR(공용 언어 런타임)과 SQL Server 통합의 보안 모델은 다양한 유형의 CLR과 SQL Server 내에서 실행되는 비 CLR 개체 간의 액세스를 관리하고 보호합니다. 이러한 개체는 서버에서 실행되는 Transact-SQL 문이나 다른 CLR 개체에서 호출할 수 있습니다. 개체 간의 호출을 링크라고 합니다. 이러한 개체에 대해 수행되는 보안 검사의 유형은 관련된 링크의 유형에 따라 다릅니다.

CLR 통합 보안 모델에는 다음과 같은 목표가 있습니다.

  • 기본적으로 SQL Server에서 관리되는 사용자 코드를 실행해도 SQL Server의 무결성과 안정성이 손상되지 않아야 합니다. SQL Server의 견고성을 손상시킬 수 있는 작업을 수행하는 작업은 적절한 높은 수준의 권한으로 보호되어야 합니다.

  • 관리되는 사용자 코드에서 데이터베이스의 사용자 데이터나 다른 사용자 코드에 무단으로 액세스하지 못하도록 해야 합니다. 사용자 정의 코드는 호출한 사용자 세션의 보안 컨텍스트와 해당 보안 컨텍스트에 대한 올바른 권한으로 실행되어야 합니다.

  • 로컬 데이터 액세스 및 계산을 위해 엄격하게 사용하여 사용자 코드가 서버 외부의 리소스에 액세스하지 못하도록 제한하는 컨트롤이 있어야 합니다.

  • 사용자 정의 코드는 SQL Server 프로세스에서 실행하여 시스템 리소스에 대한 무단 액세스를 얻을 수 없습니다.

이제 SQL Server는 SQL Server의 사용자 기반 보안 모델을 CLR의 코드 액세스 기반 보안 모델과 통합합니다. 이러한 통합된 보안 방법의 일부 이점에 대해 이 섹션에서 설명합니다.

다음 표에서는 이 섹션의 항목을 나열합니다.

CLR 통합 코드 액세스 보안
관리 코드에 대한 CAS(코드 액세스 보안) 모델에 대해 설명합니다.

호스트 보호 특성 및 CLR 통합 프로그래밍
SAFE 및 EXTERNAL_ACCESS 어셈블리에서 허용되지 않는 HPA(호스트 보호 특성) 값에 대한 정보를 제공합니다.

CLR 통합 보안의 링크
사용자 코드 조각이 SQL Server에서 서로 호출하는 방법을 설명합니다.

가장 및 CLR 통합 보안
관리 코드가 가장을 사용하여 외부 리소스에 액세스하는 방법을 설명합니다.

관리되는 메서드에서 다른 어셈블리에 포함된 클래스의 메서드를 호출할 때 발생하는 문제를 설명합니다.

애플리케이션 도메인 및 CLR 통합 보안
어셈블리가 애플리케이션 도메인에 로드되는 방법을 설명합니다.

참고 항목

CLR 통합 어셈블리 관리