보안 개요(Integration Services)Security Overview (Integration Services)

SQL ServerSQL Server Integration ServicesIntegration Services 의 보안은 풍부하고 유연한 보안 환경을 제공하는 여러 계층으로 구성되어 있습니다.Security in SQL ServerSQL Server Integration ServicesIntegration Services consists of several layers that provide a rich and flexible security environment. 이러한 보안 계층에서는 디지털 서명, 패키지 속성, SQL ServerSQL Server 데이터베이스 역할 및 운영 체제 권한을 사용합니다.These security layers include the use of digital signatures, package properties, SQL ServerSQL Server database roles, and operating system permissions. 이러한 보안 기능은 대부분 ID 및 액세스 제어라는 범주에 해당합니다.Most of these security features fall into the categories of identity and access control.

위협 요소 및 취약성 완화Threat and Vulnerability Mitigation

Integration ServicesIntegration Services 에 다양한 보안 메커니즘이 있더라도 패키지와 패키지에서 만들고 사용하는 파일은 악의적인 목적으로 이용될 수 있습니다.Although Integration ServicesIntegration Services includes a variety of security mechanisms, packages and the files that packages create or use could be exploited for malicious purposes.

다음 표에서는 이러한 위험과 이러한 위험을 줄일 수 있는 자동 관리 단계에 대해 설명합니다.The following table describes these risks and the proactive steps that you can take to lessen the risks.

위협 요소 및 취약성Threat or vulnerability 정의Definition 완화 방법Mitigation
패키지 원본Package source 패키지 원본은 해당 패키지를 만든 개인이나 조직입니다.The source of a package is the individual or organization that created the package. 알 수 없거나 신뢰할 수 없는 원본의 패키지를 실행하는 것은 위험할 수 있습니다.Running a package from an unknown or untrusted source might be risky. 디지털 서명을 사용하여 패키지의 원본을 확인하고 신뢰할 수 있고 알려진 원본에서 제공되는 패키지만 실행합니다.Identify the source of a package by using a digital signature, and run packages that come from only known, trusted sources. 자세한 내용은 디지털 서명을 사용하여 패키지 원본 확인을 참조하세요.For more information, see Identify the Source of Packages with Digital Signatures.
패키지 내용Package contents 패키지 내용에는 패키지 요소와 패키지 요소의 속성이 포함됩니다.Package contents include the elements in the package and their properties. 이러한 속성에는 암호나 연결 문자열과 같은 중요한 데이터가 포함될 수 있습니다.The properties can contain sensitive data such as a password or a connection string. SQL 문과 같은 패키지 요소는 데이터베이스 구조를 노출시킬 수 있습니다.Package elements such as an SQL statement can reveal the structure of your database. 다음 단계를 수행하여 패키지와 패키지 내용에 대한 액세스를 제어합니다.Control access to a package and to the contents by doing the following steps:

1) 패키지 자체에 대한 액세스를 제어하려면 SQL ServerSQL Server 인스턴스의 msdb 데이터베이스에 저장되는 패키지에 SQL ServerSQL Server보안 기능을 적용합니다.1) To control access to the package itself, apply SQL ServerSQL Server security features to packages that are saved to the msdb database in an instance of SQL ServerSQL Server. 파일 시스템에 저장되는 패키지에는 ACL(액세스 제어 목록)과 같은 파일 시스템 보안 기능을 적용합니다.To packages that are saved in the file system, apply file system security features, such as access controls lists (ACLs).

2) 패키지 내용에 대한 액세스를 제어하려면 패키지의 보호 수준을 설정합니다.2) To control access to the package's contents, set the protection level of the package.

자세한 내용은 보안 개요(Integration Services)패키지의 중요한 데이터에 대한 액세스 제어를 참조하세요.For more information, see Security Overview (Integration Services) and Access Control for Sensitive Data in Packages.
패키지 출력Package output 구성, 검사점 및 로깅을 사용하도록 패키지를 구성한 경우 패키지는 패키지 외부에 이 정보를 저장합니다.When you configure a package to use configurations, checkpoints, and logging, the package stores this information outside the package. 패키지 외부에 저장되는 정보에는 중요한 데이터가 포함될 수도 있습니다.The information that is stored outside the package might contain sensitive data. 패키지가 SQL ServerSQL Server 데이터베이스 테이블에 저장하는 구성과 로그를 보호하려면 SQL ServerSQL Server 보안 기능을 사용합니다.To protect configurations and logs that the package saves to SQL ServerSQL Server database tables, use SQL ServerSQL Server security features.

파일에 대한 액세스를 제어하려면 파일 시스템에서 제공하는 ACL(액세스 제어 목록)을 사용합니다.To control access to files, use the access control lists (ACLs) available in the file system.

자세한 내용은 패키지에서 사용되는 파일 액세스For more information, see Access to Files Used by Packages

ID 기능Identity Features

패키지에서 ID 기능을 구현하면 다음과 같은 목표를 달성할 수 있습니다.By implementing identity features in your packages, you can achieve the following goal:

출처를 신뢰할 수 있는 패키지만 열고 실행할 수 있습니다.Ensure that you only open and run packages from trusted sources.

출처를 신뢰할 수 있는 패키지만 열고 실행하려면 우선 패키지의 원래 출처를 식별해야 합니다.To ensure that you only open and run packages from trusted sources, you first have to identify the source of packages. 패키지를 인증서로 서명하면 원래 출처를 식별할 수 있습니다.You can identify the source by signing packages with certificates. 그런 다음 패키지를 열거나 실행할 때 Integration ServicesIntegration Services 에서 디지털 서명의 존재 여부와 유효성을 확인할 수 있습니다.Then, when you open or run the packages, you can have Integration ServicesIntegration Services check for the presence and the validity of the digital signatures. 자세한 내용은 디지털 서명을 사용하여 패키지 원본 확인을 참조하세요.For more information, see Identify the Source of Packages with Digital Signatures.

액세스 제어 기능Access Control Features

패키지에서 ID 기능을 구현하면 다음과 같은 목표를 달성할 수 있습니다.By implementing identity features in your packages, you can achieve the following goal:

권한 있는 사용자만 패키지를 열고 실행할 수 있습니다.Ensure that only authorized users open and run packages.

권한 있는 사용자만 패키지를 열고 실행할 수 있게 하려면 다음과 같은 정보에 대한 액세스를 제어해야 합니다.To ensure that only authorized users open and run packages, you have to control access to the following information:

  • 기밀 데이터를 비롯한 패키지의 콘텐츠Control access to the contents of packages, especially sensitive data.

  • SQL ServerSQL Server에 저장된 패키지 및 패키지 구성Control access to packages and package configurations that are stored in SQL ServerSQL Server.

  • 패키지 및 관련 파일(파일 시스템에 저장된 구성, 로그 및 검사점 파일)Control accesss to packages and to related files such as configurations, logs, and checkpoint files that are stored in the file system.

  • Integration ServicesIntegration Services 서비스 및 이 서비스에서 SQL Server Management StudioSQL Server Management Studio에 표시하는 패키지 관련 정보Control access to the Integration ServicesIntegration Services service and to the information about packages that the service displays in SQL Server Management StudioSQL Server Management Studio.

패키지 콘텐츠에 대한 액세스 제어Controlling Access to the Contents of Packages

패키지의 ProtectionLevel 속성을 설정하여 패키지를 암호화하면 패키지 콘텐츠에 대한 액세스를 제한하는 데 도움이 됩니다.To help restrict access to the contents of a package, you can encrypt packages by setting the ProtectionLevel property of the package. 이 속성을 패키지에 필요한 보호 수준으로 설정할 수 있습니다.You can set this property to the level of protection that your package requires. 예를 들어 팀 개발 환경에서는 패키지에 대한 작업을 수행하는 팀 멤버에게만 알려진 암호를 사용하여 패키지를 암호화할 수 있습니다.For example, in a team development environment, you can encrypt a package by using a password that is known only to the team members who work on the package.

패키지의 ProtectionLevel 속성을 설정하면 Integration ServicesIntegration Services 에서 자동으로 중요한 속성을 감지하고 지정된 패키지 보호 수준에 따라 이러한 속성을 처리합니다.When you set the ProtectionLevel property of a package, Integration ServicesIntegration Services automatically detects sensitive properties and handles these properties according to the specified package protection level. 예를 들어 암호를 사용하여 중요한 정보를 암호화하는 수준으로 패키지의 ProtectionLevel 속성을 설정하면For example, you set the ProtectionLevel property for a package to a level that encrypts sensitive information with a password. Integration ServicesIntegration Services 에서 자동으로 모든 중요 속성의 값을 암호화하고, 정확한 암호를 입력하지 않으면 해당 데이터가 표시되지 않습니다.For this package, Integration ServicesIntegration Services automatically encrypts the values of all sensitive properties and will not display the corresponding data without the correct password being supplied.

일반적으로 Integration ServicesIntegration Services 에서는 암호나 연결 문자열 등의 정보가 들어 있거나 변수 또는 태스크 생성 XML 노드에 해당하는 속성을 중요한 속성으로 식별합니다.Typically, Integration ServicesIntegration Services identifies properties as sensitive if those properties contain information, such as a password or a connection string, or if those properties correspond to variables or task-generated XML nodes. 특정 속성이 Integration ServicesIntegration Services 에서 중요한 속성으로 간주되는지 여부는 연결 관리자나 태스크와 같은 Integration ServicesIntegration Services 구성 요소의 개발자가 속성을 중요한 것으로 지정했는지 여부에 따라 달라집니다.Whether Integration ServicesIntegration Services considers a property sensitive depends on whether the developer of the Integration ServicesIntegration Services component, such as a connection manager or task, has designated the property as sensitive. 사용자는 중요한 것으로 간주되는 속성 목록에서 속성을 추가하거나 제거할 수 없습니다. 사용자 지정 태스크, 연결 관리자 또는 데이터 흐름 구성 요소를 작성하는 경우에는 Integration ServicesIntegration Services 에서 중요한 것으로 취급할 속성을 지정할 수 있습니다.Users cannot add properties to, nor can they remove properties from, the list of properties that are considered sensitive.If you write custom tasks, connection managers, or data flow components, you can specify which properties Integration ServicesIntegration Services should treat as sensitive.

자세한 내용은 Access Control for Sensitive Data in Packages을 참조하세요.For more information, see Access Control for Sensitive Data in Packages.

패키지에 대한 액세스 제어Controlling Access to Packages

Integration ServicesIntegration Services 패키지를 SQL ServerSQL Server인스턴스의 msdb 데이터베이스에 저장할 수도 있고, 파일 이름 확장명이 .dtsx인 XML 파일로 파일 시스템에 저장할 수도 있습니다.You can save Integration ServicesIntegration Services packages to the msdb database in an instance of SQL ServerSQL Server, or to the file system as XML files that have the .dtsx file name extension. 자세한 내용은 패키지 저장을 참조하세요.For more information, see Save Packages.

패키지를 msdb 데이터베이스에 저장Saving Packages to the msdb Database

패키지를 msdb 데이터베이스에 저장하면 서버, 데이터베이스 및 테이블 수준에서 보안이 제공됩니다.Saving the packages to the msdb database helps provide security at the server, database, and table levels. msdb 데이터베이스에서 Integration ServicesIntegration Services 패키지는 sysssispackages 테이블에 저장됩니다.In the msdb database, Integration ServicesIntegration Services packages are stored in the sysssispackages table. 패키지는 msdb 데이터베이스의 sysssispackages 및 sysdtspackages 테이블에 저장되므로 msdb 데이터베이스를 백업하면 패키지가 자동으로 백업됩니다.Because the packages are saved to the sysssispackages and sysdtspackages tables in the msdb database, the packages are automatically backed up when you backup the msdb database.

SQL ServerSQL Server msdb 데이터베이스에 저장된 패키지는 Integration ServicesIntegration Services 데이터베이스 수준 역할을 적용하여 보호될 수도 있습니다. packages stored in the msdb database can also be protected by applying the Integration ServicesIntegration Services database-level roles. Integration ServicesIntegration Services 에는 패키지에 대한 액세스를 제어하기 위한 3가지 고정 데이터베이스 수준 역할인 db_ssisadmin, db_ssisltduser 및 db_ssisoperator가 있습니다. includes three fixed database-level roles db_ssisadmin, db_ssisltduser, and db_ssisoperator for controlling access to packages. 읽기 및 쓰기 역할을 각 패키지와 연결할 수 있습니다.A reader and a writer role can be associated with each package. Integration ServicesIntegration Services 패키지에서 사용할 데이터베이스 수준 사용자 지정 역할을 정의할 수도 있습니다.You can also define custom database-level roles to use in Integration ServicesIntegration Services packages. SQL ServerSQL Server 인스턴스의 msdb 데이터베이스에 저장된 패키지에만 역할을 구현할 수 있습니다.Roles can be implemented only on packages that are saved to the msdb database in an instance of SQL ServerSQL Server. 자세한 내용은 Integration Services 역할(SSIS Service)을 참조하세요.For more information, see Integration Services Roles (SSIS Service).

파일 시스템에 패키지 저장Saving Packages to the File System

패키지를 msdb 데이터베이스 대신 파일 시스템에 저장하는 경우 패키지 파일 및 패키지 파일이 들어 있는 폴더에 대한 보안을 설정해야 합니다.If you store packages to the file system instead of in the msdb database, make sure to secure the package files and the folders that contain package files.

패키지에서 사용되는 파일에 대한 액세스 제어Controlling Access to Files Used by Packages

구성, 검사점 및 로깅을 사용하도록 구성된 패키지는 패키지 외부에 저장되는 정보를 생성합니다.Packages that have been configured to use configurations, checkpoints, and logging generate information that is stored outside the package. 이 정보는 중요할 수 있으므로 보호되어야 합니다.This information might be sensitive and should be protected. 검사점 파일은 파일 시스템에만 저장할 수 있지만 구성과 로그는 파일 시스템 또는 SQL ServerSQL Server 데이터베이스의 테이블에 저장할 수 있습니다.Checkpoint files can be saved only to the file system, but configurations and logs can be saved to the file system or to tables in a SQL ServerSQL Server database. SQL ServerSQL Server 에 저장된 구성 및 로그에는 SQL ServerSQL Server 보안이 적용되지만 파일 시스템에 기록된 정보에는 추가 보안이 필요합니다.Configurations and logs that are saved to SQL ServerSQL Server are subject to SQL ServerSQL Server security, but information written to the file system requires additional security.

자세한 내용은 패키지에서 사용되는 파일 액세스를 참조하세요.For more information, see Access to Files Used by Packages.

안전한 패키지 구성 저장Storing Package Configurations Securely

패키지 구성은 SQL ServerSQL Server 데이터베이스의 테이블이나 파일 시스템에 저장할 수 있습니다.Package configurations can be saved to a table in a SQL ServerSQL Server database or to the file system.

msdb 데이터베이스뿐 아니라 모든 SQL ServerSQL Server 데이터베이스에 구성을 저장할 수 있습니다.Configurations can be saved to any SQL ServerSQL Server database, not just the msdb database. 따라서 패키지 구성의 리포지토리로 사용할 데이터베이스를 지정할 수 있습니다.Thus, you are able to specify which database serves as the repository of package configurations. 또한 구성을 포함할 테이블의 이름을 지정하면 Integration ServicesIntegration Services 가 올바른 구조를 갖춘 테이블을 자동으로 만듭니다.You can also specify the name of the table that will contain the configurations, and Integration ServicesIntegration Services automatically creates the table with the correct structure. 구성을 테이블에 저장하면 서버, 데이터베이스 및 테이블 수준에서 보안을 제공할 수 있습니다.Saving the configurations to a table makes it possible to provide security at the server, database, and table levels. 또한 SQL ServerSQL Server 에 저장된 구성은 해당 데이터베이스를 백업할 때 자동으로 백업됩니다.In addition, configurations that are saved to SQL ServerSQL Server are automatically backed up when you back up the database.

구성을 SQL ServerSQL Server대신 파일 시스템에 저장하는 경우 패키지 구성 파일이 들어 있는 폴더에 대한 보안을 설정해야 합니다.If you store configurations in the file system instead of in SQL ServerSQL Server, make sure to secure the folders that contain the package configuration files.

구성에 대한 자세한 내용은 Package Configurations을 참조하십시오.For more information about configurations, see Package Configurations.

Integration Services 서비스에 대한 액세스 제어Controlling Access to the Integration Services Service

SQL Server Management StudioSQL Server Management Studio 에서는 SQL ServerSQL Server 서비스를 사용하여 저장된 패키지를 나열합니다. uses the SQL ServerSQL Server service to list stored packages. 로컬 및 원격 컴퓨터에 저장된 패키지에 대한 정보를 무단으로 열람하여 개인 정보를 습득할 수 없게 하려면 SQL ServerSQL Server 서비스를 실행하는 컴퓨터에 대한 액세스를 제한해야 합니다.To prevent unauthorized users from viewing information about packages that are stored on local and remote computers, and thereby learning private information, restrict access to computers that run the SQL ServerSQL Server service.

자세한 내용은 Integration Services 서비스 액세스를 참조하세요.For more information, see Access to the Integration Services Service.

패키지에서 사용되는 파일 액세스 Access to Files Used by Packages

패키지 보호 수준은 패키지 외부에 저장된 파일을 보호하지 않습니다.The package protection level does not protect files that are stored outside the package. 이러한 파일은 다음과 같습니다.These files include the following:

  • 구성 파일Configuration files

  • 검사점 파일Checkpoint files

  • 로그 파일Log files

    이러한 파일은 특히 중요한 정보를 포함하고 있을 경우 별도로 보호해야 합니다.These files must be protected separately, especially if they include sensitive information.

구성 파일Configuration Files

구성에 로그인 및 암호 정보와 같은 중요한 정보가 포함된 경우 구성을 SQL ServerSQL Server에 저장하거나 ACL(액세스 제어 목록)을 사용하여 파일이 저장된 위치나 폴더에 대한 액세스를 제한하고 특정 계정에만 액세스할 수 있도록 해야 합니다.If you have sensitive information in a configuration, such as login and password information, you should consider saving the configuration to SQL ServerSQL Server, or use an access control list (ACL) to restrict access to the location or folder where you store the files and allow access only to certain accounts. 일반적으로 패키지를 실행하도록 허용할 계정이나 구성, 검사점 및 로그 파일의 내용에 대한 검토를 비롯하여 패키지를 관리하고 문제를 해결하는 계정에 대해 액세스 권한을 부여합니다.Typically, you would grant access to the accounts that you permit to run packages, and to the accounts that manage and troubleshoot packages, which may include reviewing the contents of configuration, checkpoint, and log files. SQL ServerSQL Server 는 서버 및 데이터베이스 수준에서 보호하므로 보다 안전한 저장소를 제공합니다. provides the more secure storage because it offers protection at the server and database levels. 구성을 SQL ServerSQL Server에 저장하려면 SQL ServerSQL Server 구성 유형을 사용하고To save configurations to SQL ServerSQL Server, you use the SQL ServerSQL Server configuration type. 파일 시스템을 저장하려면 XML 구성 유형을 사용합니다.To save to the file system, you use the XML configuration type.

자세한 내용은 패키지 구성, 패키지 구성 만들기SQL Server 설치에 대한 보안 고려 사항을 참조하세요.For more information, see Package Configurations, Create Package Configurations, and Security Considerations for a SQL Server Installation.

검사점 파일Checkpoint Files

이와 비슷하게 패키지에서 사용되는 검사점 파일에 중요한 정보가 들어 있는 경우 ACL(액세스 제어 목록)을 사용하여 파일 저장 위치 또는 폴더를 보호해야 합니다.Similarly, if the checkpoint file that the package uses includes sensitive information, you should use an access control list (ACL) to secure the location or folder where you store the file. 검사점 파일은 패키지 진행 중에 현재 상태 정보와 현재 변수 값을 저장합니다.Checkpoint files save current state information on the progress of the package as well as the current values of variables. 예를 들어 패키지에는 전화 번호가 포함된 사용자 지정 변수가 포함될 수 있습니다.For example, the package may include a custom variable that contains a telephone number. 자세한 내용은 Restart Packages by Using Checkpoints을 참조하세요.For more information, see Restart Packages by Using Checkpoints.

로그 파일Log Files

파일 시스템에 기록된 로그 항목도 ACL(액세스 제어 목록)을 사용하여 보호되어야 합니다.Log entries that are written to the file system should also be secured using an access control list (ACL). 로그 항목을 SQL ServerSQL Server 테이블에 저장하고 SQL ServerSQL Server 보안으로 보호할 수도 있습니다.Log entries can also be stored in SQL ServerSQL Server tables and protected by SQL ServerSQL Server security. 로그 항목에는 중요한 정보가 포함될 수 있습니다. 예를 들어 패키지에 전화 번호를 참조하는 SQL 문을 구성하는 SQL 실행 태스크가 포함되는 경우 SQL 문에 대한 로그 항목에는 전화 번호가 포함됩니다.Log entries may include sensitive information, For example, if the package contains an Execute SQL task that constructs an SQL statement that refers to a telephone number, the log entry for the SQL statement includes the telephone number. SQL 문은 또한 데이터베이스에 있는 테이블 및 열 이름에 대한 개인 정보를 제공합니다.The SQL statement may also reveal private information about table and column names in databases. 자세한 내용은 Integration Services(SSIS) 로깅을 참조하세요.For more information, see Integration Services (SSIS) Logging.

Integration Services 서비스 액세스 Access to the Integration Services Service

패키지 보호 수준으로 패키지를 편집 및 실행할 수 있는 사용자를 제한할 수 있지만,Package protection levels can limit who is allowed to edit and execute a package. 현재 서버에서 실행 중인 패키지 목록을 볼 수 있는 사용자 및 SQL Server Management StudioSQL Server Management Studio에서 현재 실행 중인 패키지를 중지할 수 있는 사용자를 제한하려면 보다 높은 수준의 보호가 필요합니다.Additional protection is needed to limit who can view the list of packages currently running on a server and who can stop currently executing packages in SQL Server Management StudioSQL Server Management Studio.

SQL Server Management StudioSQL Server Management StudioSQL ServerSQL Server 서비스를 사용하여 실행 중인 패키지를 나열합니다. uses the SQL ServerSQL Server service to list running packages. Windows Administrators 그룹의 멤버는 현재 실행 중인 모든 패키지를 보고 중지할 수 있습니다.Members of the Windows Administrators group can view and stop all currently running packages. Administrators 그룹의 멤버가 아닌 사용자는 자신이 시작한 패키지만 보고 중지할 수 있습니다.Users who are not members of the Administrators group can view and stop only packages that they started.

SQL ServerSQL Server 서비스, 특히 원격 폴더를 열거할 수 있는 SQL ServerSQL Server 서비스를 실행하는 컴퓨터에 대한 액세스를 제한하는 것이 중요합니다.It is important to restrict access to computers that run an SQL ServerSQL Server service, especially an SQL ServerSQL Server service that can enumerate remote folders. 허가 받은 사용자는 패키지의 열거를 요청할 수 있습니다.Any authenticated user can request the enumeration of packages. 서비스에서 패키지를 찾지 못하더라도 서비스는 폴더를 열거합니다.Even if the service does not find the service, the service enumerates folders. 이 폴더 이름은 악의적인 사용자에 의해 악용될 수 있습니다.These folder names may be useful to a malicious user. 관리자가 원격 컴퓨터에서 폴더를 열거하도록 서비스를 구성한 경우 사용자는 일반적으로 볼 수 없는 폴더 이름도 볼 수 있습니다.If an administrator has configured the service to enumerate folders on a remote machine, users may also be able to see folder names that they would normally not be able to see.

다음 목록에는 보안과 관련된 특정 태스크를 수행하는 방법을 보여 주는 항목에 대한 링크가 나와 있습니다.The following list contains links to topics that show you how to perform a certain task pertaining to the security.