다음을 통해 공유


서버 구성 옵션: clr strict security

적용 대상: SQL Server

SQL Server에서 SAFE, EXTERNAL_ACCESS, 또는 UNSAFE 권한의 해석을 제어합니다. 권한에 대한 자세한 내용은 어셈블리 설계를 참조하세요.

설명
0 Disabled. 이전 버전과의 호환성을 위해 제공됩니다. 이 값을 0로 설정하는 것은 권장되지 않습니다.
1 Enabled. 데이터베이스 엔진 어셈블리에 대한 PERMISSION_SET 정보를 무시하고 항상 UNSAFE로 해석합니다. SQL Server 2017(14.x) 이상 버전에서, 1은 기본값입니다.

코드 액세스 보안이 지원되지 않음

CLR은 더 이상 보안 경계로 지원되지 않는 .NET Framework의 CAS(코드 액세스 보안)를 사용합니다. PERMISSION_SET = SAFE로 만든 CLR 어셈블리에서 외부 시스템 리소스에 액세스하고, 비관리 코드를 호출하고, sysadmin 권한을 얻을 수 있습니다. SQL Server 2017(14.x) 이상 버전에서는 clr strict securityUNSAFE로 표시된 것처럼 SAFEEXTERNAL_ACCESS 어셈블리로 처리합니다.

모든 어셈블리는 master 데이터베이스에서 UNSAFE ASSEMBLY 권한이 부여된 해당 로그인이 포함된 인증서 또는 비대칭 키로 서명하는 것이 좋습니다. 또한 SQL Server 관리자는 데이터베이스 엔진에서 신뢰해야 하는 어셈블리 목록에 어셈블리를 추가할 수도 있습니다. 자세한 내용은 sys.sp_add_trusted_assembly를 참조하세요.

설명

사용하도록 설정되면 CREATE ASSEMBLYALTER ASSEMBLY 문의 PERMISSION_SET 옵션은 런타임에서 무시되지만 PERMISSION_SET 옵션은 메타데이터에서 유지됩니다. 이 옵션을 무시하면 기존 코드 문의 중단을 최소화합니다.

CLR strict securityadvanced option입니다.

strict security(엄격한 보안)를 사용하도록 설정하면 서명되지 않은 어셈블리는 로드되지 않습니다. 서버에 대한 UNSAFE ASSEMBLY 권한이 있는 해당 로그인이 포함된 인증서 또는 비대칭 키로 서명되도록 각 어셈블리를 변경하거나 삭제한 다음 다시 만들어야 합니다.

사용 권한

이 옵션 변경

CONTROL SERVER 권한 또는 sysadmin 고정 서버 역할의 멤버 자격이 필요합니다.

CLR 어셈블리 만들기

CLR strict security를 사용할 때 CLR 어셈블리를 만드는 데 필요한 권한은 다음과 같습니다.

  • 사용자에게 CREATE ASSEMBLY 권한이 있어야 합니다.

  • 다음 조건 중 하나가 충족되어야 합니다.

    • 어셈블리는 서버에 대한 UNSAFE ASSEMBLY 권한이 있는 해당 로그인이 포함된 인증서 또는 비대칭 키로 서명됩니다. 어셈블리에 서명하는 것이 좋습니다.

    • 데이터베이스는 ON으로 설정된 TRUSTWORTHY 속성을 가지고 있고 서버에 대한 UNSAFE ASSEMBLY 권한이 있는 로그인으로 소유됩니다. 이 옵션은 권장되지 않습니다.

예제

다음 예시에서는 먼저 clr strict security 옵션의 현재 설정을 표시한 다음 옵션 값을 1(사용 가능)로 설정합니다.

EXEC sp_configure 'clr strict security';
GO
EXEC sp_configure 'clr strict security' , '1';
RECONFIGURE;
GO