SQL Server에 저장된 DTS 패키지 보안 설정

MicrosoftSQL Server 2000 DTS(데이터 변환 서비스)에서 만들어 msdb 데이터베이스에 저장한 패키지에는 잠재적인 보안 문제가 있습니다. 이 문제는 주로 이러한 DTS 패키지에 대한 가장 일반적인 태스크를 수행하는 시스템 저장 프로시저와 관련되어 있습니다. 일반적인 태스크를 수행하는 시스템 저장 프로시저의 예로는 msdb 데이터베이스에 저장된 DTS 패키지를 나열하는 sp_enum_dtspackages 저장 프로시저가 있습니다. 다른 예로는 DTS 패키지를 클라이언트 응용 프로그램에 로드하는 sp_get_dtspackage 시스템 저장 프로시저가 있습니다. SQL Server 2000 엔터프라이즈 관리자, SQL Server Management Studio 및 DTS API는 모두 이러한 저장 프로시저를 사용하여 일반적인 태스크를 수행합니다.

DTS 시스템 저장 프로시저와 관련된 잠재적인 보안 문제를 이해한 후 즉시 적절한 조치를 취하여 이러한 문제를 해결할 수 있습니다.

중요 정보중요

DTS(데이터 변환 서비스)는 더 이상 사용되지 않습니다. 자세한 내용은 DTS(데이터 변환 서비스)를 참조하십시오.

잠재적인 보안 문제 이해

SQL Server 2008 이전의 SQL Server 버전에서는 일부 DTS 시스템 저장 프로시저의 실행 권한이 PUBLIC으로 부여됩니다. 이러한 설정으로 인해 msdb 데이터베이스에 로그온할 수 있는 모든 사용자가 다음과 같은 태스크를 수행할 수 있습니다.

  • DTS 패키지 목록 가져오기

  • 패키지 자체를 검색

  • 새 패키지 저장

그러나 패키지의 소유자만 패키지의 새 버전을 저장하여 기존 패키지를 수정하거나 기존 패키지를 삭제할 수 있습니다. DTS에서는 패키지의 새 버전을 저장하여 패키지를 수정하며, 패키지의 현재 버전을 덮어쓰지 않습니다.

응용 프로그램에서 DTS 패키지를 소유하는 로그인을 사용하여 SQL Server에 연결하는 경우 잠재적인 보안 문제가 발생합니다. 이 시나리오에서는 SQL 삽입 공격으로 기존 패키지가 수정되거나 삭제될 위험이 있습니다.

영향을 받는 DTS 시스템 저장 프로시저

다음 목록은 실행 권한이 PUBLIC으로 부여되어 잠재적인 보안 문제가 발생할 수 있는 DTS 시스템 저장 프로시저의 목록입니다.

  • sp_add_dtspackage

  • sp_drop_dtspackage

  • sp_dump_dtslog_all

  • sp_dump_dtspackagelog

  • sp_dump_dtssteplog

  • sp_dump_dtstasklog

  • sp_enum_dtspackagelog

  • sp_enum_dtspackages

  • sp_enum_dtssteplog

  • sp_enum_dtstasklog

  • sp_get_dtspackage

  • sp_get_dtsversion

  • sp_log_dtspackage_begin

  • sp_log_dtspackage_end

  • sp_log_dtsstep_begin

  • sp_log_dtsstep_end

  • sp_log_dtstask

  • sp_make_dtspackagename

  • sp_reassign_dtspackageowner

영향을 받지 않는 DTS 시스템 저장 프로시저

다음은 실행 권한이 PUBLIC으로 부여되지 않는 DTS 시스템 저장 프로시저의 목록입니다.

  • sp_add_dtscategory

  • sp_drop_dtscategory

  • sp_enum_dtscategories

  • sp_modify_dtscategory

  • sp_reassign_dtspackagecategory

이러한 시스템 저장 프로시저는 이름에 "dts"가 포함되어 있지만 이 항목에서 설명하는 잠재적인 보안 문제를 일으키지 않습니다.

잠재적인 보안 문제 해결

DTS 패키지의 보안을 강화하기 위해 SQL Server 2008에서는 다음과 같은 경우의 기본 설정이 변경되었습니다.

  • 새 설치. SQL Server 2008을 새로 설치하면 DTS 시스템 저장 프로시저의 PUBLIC 실행 권한이 취소됩니다. DTS 패키지를 관리하고 실행할 수 있는 권한은 다음과 같은 Integration Services 데이터베이스 수준 역할에만 부여되며 이러한 역할을 통해서만 부여될 수 있습니다.

    • db_ssisadmin

    • db_ssisltduser

    • db_ssisoperator

    나중에 이 SQL Server 2008 인스턴스의 msdb 데이터베이스로 DTS 패키지를 가져오면 이러한 Integration Services 역할에 속하는 계정만 DTS 패키지를 성공적으로 관리하고 실행할 수 있습니다.

  • 업그레이드. 이전 버전의 SQL Server를 SQL Server 2008로 업그레이드하면 DTS 시스템 저장 프로시저의 PUBLIC 실행 권한이 취소되지 않습니다. 따라서 기존 응용 프로그램과의 호환성이 유지됩니다. 또한 앞에서 나열한 세 가지 Integration Services 데이터베이스 수준 역할에 실행 권한이 부여됩니다. 시스템 관리자는 다음 섹션에서 설명하는 저장 프로시저를 즉시 실행하여 PUBLIC 실행 권한을 취소해야 합니다.

Integration Services 역할에 대한 자세한 내용은 Integration Services 역할 사용을 참조하십시오.

새 저장 프로시저인 sp_dts_secure 사용

SQL Server 2008에는 DTS 패키지의 보안을 관리하는 새로운 시스템 저장 프로시저인 sp_dts_secure가 포함되어 있습니다. 이 프로시저에는 필수 입력 매개 변수가 하나 있으며 이 매개 변수는 DTS 시스템 저장 프로시저의 PUBLIC 실행 권한을 취소하거나 부여합니다.

  • PUBLIC 실행 권한을 취소하고 Integration Services 데이터베이스 수준 역할에만 액세스 권한을 부여하려면 매개 변수를 1로 설정하여 sp_dts_secure 프로시저를 실행합니다.

    sp_dts_secure 1

    권한 있는 사용자만 DTS 저장 프로시저에 액세스할 수 있도록 제한하려면 업그레이드 및 Integration Services 데이터베이스 수준 역할 적용 후 이 프로시저를 즉시 실행합니다.

    [!참고]

    SQL Server 2008을 새로 설치하는 경우 설치 프로그램에서는 DTS 시스템 저장 프로시저에 대해 두 가지 작업을 수행합니다. 우선 PUBIC 사용 권한을 취소하고, 앞에서 나열한 Integration Services 데이터베이스 수준 역할에 실행 권한을 부여합니다. 그러나 sp_dts_secure 1을 수동으로 실행할 때는 DTS 시스템 저장 프로시저의 PUBLIC 실행 권한이 취소되기만 합니다. Integration Services 데이터베이스 수준 역할은 별도로 적용해야 합니다.

  • DTS 저장 프로시저의 PUBLIC 실행 권한을 부여하려면 매개 변수를 0으로 설정하여 sp_dts_secure 프로시저를 실행합니다.

    sp_dts_secure 0

    새로 설치하면서 기존 응용 프로그램과의 호환성을 유지해야 하는 경우 이 프로시저를 사용할 수 있습니다. 그러나 언제든지 보안 제한을 다시 활성화할 수 있도록 준비해야 합니다.

Integration Services 아이콘(작은 아이콘) Integration Services 관련 최신 정보 얻기

Microsoft의 최신 다운로드, 아티클, 예제 및 비디오와 커뮤니티의 정선된 솔루션을 보려면 MSDN 또는 TechNet의 Integration Services 페이지를 방문하십시오.

이러한 업데이트에 대한 자동 알림을 받으려면 해당 페이지에서 제공하는 RSS 피드를 구독하십시오.