서버 구성: 데이터베이스 간 소유권 체인

적용 대상:SQL Server

cross db ownership chaining 옵션을 사용하여 SQL Server 인스턴스에 대한 데이터베이스 간 소유권 체인을 구성합니다.

이 서버 옵션을 사용하면 데이터베이스 수준에서 데이터베이스 간 소유권 체인을 제어하거나 모든 데이터베이스의 데이터베이스 간 소유권 체인을 제어할 수 있습니다.

  • 인스턴스에서 cross db ownership chaining가 꺼져(0) 있으면 모든 데이터베이스에서 데이터베이스 간 소유권 체인이 비활성화됩니다.

  • 인스턴스에 대해 cross db ownership chaining가 켜져 있으면(1), 모든 데이터베이스에서 데이터베이스 간 소유권 체인이 켜집니다.

  • ALTER DATABASE 문의 SET 절을 사용하여 개별 데이터베이스에 대해 데이터베이스 간 소유권 체인을 설정할 수 있습니다. 새 데이터베이스를 만드는 경우 문을 사용하여 CREATE DATABASE 새 데이터베이스에 대한 데이터베이스 간 소유권 체인 옵션을 설정할 수 있습니다.

    모든 데이터베이스가 해당 SQL Server 인스턴스에서 호스팅되며 데이터베이스 간 소유권 체이닝에 참여해야 하고, 이 설정의 보안 영향을 알고 있는 경우가 아니라면 cross db ownership chaining을(를) 1(으)로 설정하는 것은 권장되지 않습니다.

데이터베이스 간 소유권 체인의 상태 확인

데이터베이스 간 소유권 체인의 현재 상태 확인하려면 다음 쿼리를 실행합니다.

SELECT is_db_chaining_on,
       name
FROM sys.databases;

결과가 1이면 데이터베이스 간 소유권 체인이 사용하도록 설정되어 있음을 나타냅니다.

데이터베이스 간 소유권 체인 제어

데이터베이스 간 소유권 체인을 설정하거나 해제하기 전에:

  • 데이터베이스 간 소유권 체인을 설정하거나 해제하려면 sysadmin 고정 서버 역할의 멤버여야 합니다.

  • 프로덕션 서버에서 데이터베이스 간 소유권 체인을 해제하기 전에 타사 애플리케이션을 비롯한 모든 애플리케이션을 완전히 테스트하여 변경 내용이 애플리케이션 기능에 영향을 주지 않도록 합니다.

  • sp_configure와 함께 RECONFIGURE을 지정하면 서버가 실행되는 동안 cross db ownership chaining 옵션을 변경할 수 있습니다.

  • 데이터베이스 간 소유권 체인이 필요한 데이터베이스가 있는 경우, 권장되는 방법은 sp_configure을 사용하여 인스턴스의 cross db ownership chaining 옵션을 해제한 다음, ALTER DATABASE 문을 사용하여 이 기능이 필요한 개별 데이터베이스에 대해 데이터베이스 간 소유권 체인을 사용하는 것입니다.

보안 위험

SQL Server에서 데이터베이스 간 소유권 체인을 사용하도록 설정하면 잠재적인 보안 취약성이 발생합니다. 이 기능이 활성화되면 상승된 권한을 가진 로컬 데이터베이스 사용자가 소유권 체인을 활용하여 권한을 에스컬레이션하고 잠재적으로 sysadmin 액세스 권한을 얻을 수 있습니다.

인스턴스 수준에서 데이터베이스 간 소유권 체인을 사용하도록 설정하지 말고 해당 사용을 신뢰할 수 있는 관련 데이터베이스로만 제한해야 합니다.