보안 개요(Integration Services)
적용 대상: SQL Server Azure Data Factory의 SSIS Integration Runtime
SQL Server Integration Services의 보안은 풍부하고 유연한 보안 환경을 제공하는 여러 계층으로 구성됩니다. 이러한 보안 계층에는 디지털 서명, 패키지 속성, SQL Server 데이터베이스 역할 및 운영 체제 권한의 사용이 포함됩니다. 이러한 보안 기능의 대부분은 ID 및 액세스 제어 범주에 속합니다.
위협 요소 및 취약성 완화
Integration Services에 다양한 보안 메커니즘이 있더라도 패키지와 패키지에서 만들고 사용하는 파일은 악의적인 목적으로 악용될 수 있습니다.
다음 표에서는 이러한 위험 및 위험을 줄이는 데 취할 수 있는 사전 대응 단계를 설명합니다.
위협 요소 및 취약성 | 정의 | 완화 방법 |
---|---|---|
패키지 원본 | 패키지 원본은 해당 패키지를 만든 개인이나 조직입니다. 알 수 없거나 신뢰할 수 없는 원본의 패키지를 실행하는 것은 위험할 수 있습니다. | 디지털 서명을 사용하여 패키지의 원본을 식별하고 알려진 신뢰할 수 있는 원본에서만 제공되는 패키지를 실행합니다. 자세한 내용은 디지털 서명을 사용하여 패키지 원본 확인을 참조하세요. |
패키지 콘텐츠 | 패키지 내용에는 패키지 요소와 패키지 요소의 속성이 포함됩니다. 속성에는 암호 또는 연결 문자열 같은 중요한 데이터가 포함될 수 있습니다. SQL 문과 같은 패키지 요소는 데이터베이스의 구조를 표시할 수 있습니다. | 다음 단계를 수행하여 패키지와 패키지 내용에 대한 액세스를 제어합니다. 1) 패키지 자체에 대한 액세스를 제어하려면 SQL Server 인스턴스의 msdb 데이터베이스에 저장된 패키지에 SQL Server 보안 기능을 적용합니다. 파일 시스템에 저장된 패키지에 ACL(액세스 제어 목록)와 같은 파일 시스템 보안 기능을 적용합니다. 2) 패키지의 콘텐츠에 대한 액세스를 제어하려면 패키지의 보호 수준을 설정합니다. 자세한 내용은 보안 개요(Integration Services) 및 패키지의 중요한 데이터에 대한 액세스 제어를 참조하세요. |
패키지 출력 | 구성, 검사점 및 로깅을 사용하도록 패키지를 구성한 경우 패키지는 패키지 외부에 이 정보를 저장합니다. 패키지 외부에 저장되는 정보에는 중요한 데이터가 포함될 수도 있습니다. | 패키지가 SQL Server 데이터베이스 테이블에 저장하는 구성 및 로그를 보호하려면 SQL Server 보안 기능을 사용합니다. 파일에 대한 액세스를 제어하려면 파일 시스템에서 사용할 수 있는 ACL(액세스 제어 목록)을 사용합니다. 자세한 내용은 패키지에서 사용하는 파일에 대한 액세스를 참조하세요. |
ID 기능
패키지에서 ID 기능을 구현하여 다음 목표를 달성할 수 있습니다.
신뢰할 수 있는 원본에서만 패키지를 열고 실행해야 합니다.
신뢰할 수 있는 원본에서만 패키지를 열고 실행하려면 먼저 패키지 원본을 식별해야 합니다. 인증서를 사용하여 패키지에 서명하여 원본을 식별할 수 있습니다. 그런 다음 패키지를 열거나 실행할 때 Integration Services에서 디지털 서명의 현재 상태와 유효성을 확인할 수 있습니다. 자세한 내용은 디지털 서명을 사용하여 패키지 원본 확인을 참조하세요.
액세스 제어 기능
패키지에서 ID 기능을 구현하여 다음 목표를 달성할 수 있습니다.
권한 있는 사용자만 패키지를 열고 실행해야 합니다.
권한이 있는 사용자만 패키지를 열고 실행하도록 하려면 다음 정보에 대한 액세스를 제어해야 합니다.
패키지의 콘텐츠, 특히 중요한 데이터에 대한 액세스를 제어합니다.
SQL Server에 저장된 패키지 및 패키지 구성에 대한 액세스를 제어합니다.
패키지 및 관련 파일(예: 파일 시스템에 저장된 구성, 로그, 검사점 파일)
Integration Services 서비스 및 서비스가 SQL Server Management Studio에 표시하는 패키지에 대한 정보를 제어합니다.
패키지 콘텐츠에 대한 액세스 제어
패키지의 콘텐츠에 대한 액세스를 제한하기 위해 패키지의 ProtectionLevel 속성을 설정하여 패키지를 암호화할 수 있습니다. 이 속성을 패키지에 필요한 보호 수준으로 설정할 수 있습니다. 예를 들어 팀 개발 환경에서는 패키지에 대한 작업을 수행하는 팀 멤버에게만 알려진 암호를 사용하여 패키지를 암호화할 수 있습니다.
패키지의 ProtectionLevel 속성을 설정하면 Integration Services에서 자동으로 중요한 속성을 감지하고 지정된 패키지 보호 수준에 따라 이러한 속성을 처리합니다. 예를 들어 패키지의 ProtectionLevel 속성을 암호로 중요한 정보를 암호화하는 수준으로 설정합니다. Integration Services에서 자동으로 모든 중요 속성의 값을 암호화하고, 정확한 암호를 입력하지 않으면 해당 데이터가 표시되지 않습니다.
일반적으로 Integration Services에서는 암호나 연결 문자열 등의 정보가 들어 있거나 변수 또는 태스크 생성 XML 노드에 해당하는 속성을 중요한 속성으로 식별합니다. 특정 속성이 Integration Services에서 중요한 속성으로 간주되는지 여부는 연결 관리자나 태스크와 같은 구성 요소의 개발자가 속성을 중요한 것으로 지정했는지 여부에 따라 달라집니다. 사용자는 중요한 것으로 간주되는 속성 목록에 속성을 추가할 수 없으며 속성을 제거할 수 없습니다. 사용자 지정 작업, 연결 관리자 또는 데이터 흐름 구성 요소를 작성하는 경우 Integration Services에서 중요한 속성으로 처리해야 하는 속성을 지정할 수 있습니다.
자세한 내용은 Access Control for Sensitive Data in Packages을 참조하세요.
패키지에 대한 액세스 제어
Integration Services 패키지를 SQL Server 인스턴스의 msdb 데이터베이스 또는 파일 시스템에 .dtsx 파일 이름 확장명이 있는 XML 파일로 저장할 수 있습니다. 자세한 내용은 패키지 저장을 참조하세요.
msdb 데이터베이스에 패키지 저장
msdb 데이터베이스에 패키지를 저장하면 서버, 데이터베이스 및 테이블 수준에서 보안을 제공할 수 있습니다. msdb 데이터베이스에서 Integration Services 패키지는 sysssispackages 테이블에 저장됩니다. 패키지는 msdb 데이터베이스의 sysssispackages 및 sysdtspackages 테이블에 저장되므로 msdb 데이터베이스를 백업할 때 패키지가 자동으로 백업됩니다.
msdb 데이터베이스에 저장된 SQL Server 패키지는 Integration Services 데이터베이스 수준 역할을 적용하여 보호할 수도 있습니다. Integration Servicies에는 패키지에 대한 액세스를 제어하기 위한 3가지 고정 데이터베이스 수준 역할인 db_ssisadmin, db_ssisltduser 및 db_ssisoperator가 있습니다. 판독기 및 기록기 역할은 각 패키지와 연결할 수 있습니다. Integration Services 패키지에서 사용할 사용자 지정 데이터베이스 수준 역할을 정의할 수도 있습니다. 역할은 SQL Server 인스턴스의 msdb 데이터베이스에 저장된 패키지에서만 구현할 수 있습니다. 자세한 내용은 Integration Services 역할(SSIS 서비스)을 참조하세요.
파일 시스템에 패키지를 저장하고 있습니다.
패키지를 msdb 데이터베이스 대신 파일 시스템에 저장하는 경우 패키지 파일 및 패키지 파일이 들어 있는 폴더에 대한 보안을 설정해야 합니다.
패키지에서 사용되는 파일의 액세스를 제어하고 있습니다.
구성, 검사점 및 로깅을 사용하도록 구성된 패키지는 패키지 외부에 저장된 정보를 생성합니다. 이 정보는 중요할 수 있으며 보호해야 합니다. 검사점 파일은 파일 시스템에만 저장할 수 있지만 구성 및 로그는 파일 시스템 또는 SQL Server 데이터베이스의 테이블에 저장할 수 있습니다. SQL Server에 저장된 구성 및 로그에는 SQL Server 보안이 적용되지만 파일 시스템에 기록된 정보에는 추가 보안이 필요합니다.
자세한 내용은 패키지에서 사용하는 파일에 대한 액세스를 참조하세요.
패키지 구성을 안전하게 저장하고 있습니다.
패키지 구성은 데이터베이스의 테이블이나 파일 시스템에 저장할 수 있습니다.
msdb 데이터베이스뿐 아니라 모든 데이터베이스에 구성을 저장할 수 있습니다. 따라서 패키지 구성의 리포지토리 역할을 하는 데이터베이스를 지정할 수 있습니다. 구성을 포함할 테이블의 이름을 지정할 수도 있으며 Integration Services는 올바른 구조로 테이블을 자동으로 만듭니다. 구성을 테이블에 저장하면 서버, 데이터베이스 및 테이블 수준에서 보안을 제공할 수 있습니다. 또한 SQL Server에 저장된 구성은 데이터베이스를 백업할 때 자동으로 백업됩니다.
구성을 SQL Server 대신 파일 시스템에 저장하는 경우 패키지 구성 파일이 들어 있는 폴더에 대한 보안을 설정해야 합니다.
구성 컴파일에 대한 자세한 내용은 패키지 구성을 참조하세요.
Integration Services 서비스 액세스를 제어중입니다.
SQL Server Management Studio는 SQL Server 서비스를 사용하여 저장된 패키지를 나열합니다. 로컬 및 원격 컴퓨터에 저장된 패키지에 대한 정보를 무단으로 열람하여 개인 정보를 습득할 수 없게 하려면 SQL Server 서비스를 실행하는 컴퓨터에 대한 액세스를 제한해야 합니다.
자세한 내용은 Integration Services 서비비스에 액세스를 참조하세요.
패키지에서 사용되는 파일 액세스
패키지 보호 수준은 패키지 외부에 저장된 파일을 보호하지 않습니다. 이러한 파일은 다음과 같습니다.
구성 파일
검사점 파일
로그 파일
이러한 파일은 특히 중요한 정보를 포함하는 경우 별도로 보호해야 합니다.
구성 파일
로그인 및 암호 정보와 같은 중요한 정보가 구성에 있는 경우 SQL Server에 구성을 저장하거나 ACL(액세스 제어 목록)을 사용하여 파일을 저장하는 위치 또는 폴더에 대한 액세스를 제한하고 특정 계정에 대한 액세스만 허용해야 합니다. 일반적으로 패키지를 실행하도록 허용할 계정이나 구성, 검사점 및 로그 파일의 내용에 대한 검토를 비롯하여 패키지를 관리하고 문제를 해결하는 계정에 대해 액세스 권한을 부여합니다. SQL Server는 서버 및 데이터베이스 수준에서 보호하므로 보다 안전한 스토리지를 제공합니다. SQL Server에 구성을 저장하려면 SQL Server 구성 유형을 사용합니다. 파일 시스템에 저장하려면 XML 구성 형식을 사용합니다.
자세한 내용은 패키지 구성, 패키지 구성 만들 및 SQL Server 설치에 대한 보안 고려 사항을 참조하세요.
검사점 파일
마찬가지로 패키지에서 사용하는 검사점 파일에 중요한 정보가 포함된 경우 ACL(액세스 제어 목록)을 사용하여 파일을 저장하는 위치 또는 폴더를 보호해야 합니다. 검사점 파일은 패키지의 진행률과 변수의 현재 값에 대한 현재 상태 정보를 저장합니다. 예를 들어 패키지에는 전화 번호가 포함된 사용자 지정 변수가 포함될 수 있습니다. 자세한 내용은 검사점을 사용하여 패키지 다시 시작을 참조하세요.
로그 파일
파일 시스템에 기록된 로그 항목도 ACL(액세스 제어 목록)을 사용하여 보호해야 합니다. 로그 항목은 SQL Server 테이블에 저장하고 SQL Server 보안으로 보호할 수도 있습니다. 로그 항목에는 중요한 정보가 포함될 수 있습니다. 예를 들어 패키지에 전화 번호를 참조하는 SQL 문을 생성하는 SQL 실행 태스크가 포함된 경우 SQL 문의 로그 항목에는 전화 번호가 포함됩니다. SQL 문은 데이터베이스의 테이블 및 열 이름에 대한 개인 정보를 표시할 수도 있습니다. 자세한 내용은 SSIS(Integration Services) 로깅을 참조하세요.
Integration Services 서비스 액세스
패키지 보호 수준은 패키지를 편집하고 실행할 수 있는 사용자를 제한할 수 있습니다. 서버에서 현재 실행 중인 패키지 목록을 볼 수 있는 사용자와 SQL Server Management Studio에서 현재 실행 중인 패키지를 중지할 수 있는 사용자를 제한하려면 추가 보호가 필요합니다.
SQL Server Management Studio는 SQL Server 서비스를 사용하여 실행 중인 패키지를 나열합니다. Windows Administrators 그룹의 구성원은 현재 실행 중인 모든 패키지를 보고 중지할 수 있습니다. Administrators 그룹의 구성원이 아닌 사용자는 시작한 패키지만 보고 중지할 수 있습니다.
SQL Server 서비스를 실행하는 컴퓨터, 특히 원격 폴더를 열거할 수 있는 SQL Server 서비스에 대한 액세스를 제한하는 것이 중요합니다. 인증된 사용자는 패키지 열거를 요청할 수 있습니다. 서비스에서 패키지를 찾지 못하더라도 서비스는 폴더를 열거합니다. 이러한 폴더 이름은 악의적인 사용자에게 유용할 수 있습니다. 관리자가 원격 컴퓨터에서 폴더를 열거하도록 서비스를 구성한 경우 사용자는 일반적으로 볼 수 없는 폴더 이름을 볼 수도 있습니다.
관련 작업
다음 목록에는 보안과 관련된 특정 태스크를 수행하는 방법을 보여 주는 항목에 대한 링크가 나와 있습니다.