보안
SSIS에서는 강력한 패키지 보안 수준을 제공합니다. 기본적으로 SSIS에서 제공하는 보안과 관련된 사항은 다음과 같습니다.
Ÿ 패키지의 ProtectionLevel 설정에 따라 패키지의 암호화를 설정할 수 있습니다. 데이터베이스 암호나 연결 문자열 등과 같은 중요한 데이터를 포함시키지 않도록 설정하거나 암호화할 수준을 설정할 수 있습니다.
Ÿ ProtectionLevel 및 PackagePassword 속성을 이용하여 패키지의 보안을 설정할 수 있습니다. 패스워드를 이용하거나 개인 키를 이용하여 보안을 설정할 수 있습니다.
Ÿ 보안과 관련된 사항을 SQL Server가 담당하도록 지정할 수 있습니다. ProtectionLevel을 ServerStorage로 설정한 후, 패키지를 서버의 msdb에 직접 저장하게 되면 패키지의 보안 관련된 사항은 모두 SQL Server에서 관리하게 됩니다.
패키지의 속성 중 ProtectionLevel과 PackagePassword를 이용하여 보안 설정을 구성할 수 있습니다.
설정값 |
상세 설명 |
DontSaveSensitive (중요한 정보 저장 안 함) |
패키지를 저장할 때 중요한 정보를 제외합니다. 이 보호 수준은 암호화는 사용하지 않지만 중요한 것으로 표시된 속성이 패키지로 저장되는 것을 방지하여 사용자가 중요한 데이터를 사용하지 못하도록 합니다. 이 설정은 동일한 사용자가 패키지를 저장하여 닫은 후, 다시 여는 경우라도 저장이 되지 않기 때문에 매번 패키지를 열 때마다 중요한 정보를 다시 지정해줘야 합니다. |
EncryptAllWithPassword (암호로 모두 암호화) |
암호를 사용하여 전체 패키지를 암호화합니다. 패키지를 만들거나 내보낼 때 사용자가 입력한 암호를 사용하여 패키지를 암호화합니다. 사용자는 SSIS 디자이너에서 패키지를 열거나 dtexec 명령 프롬프트 유틸리티를 사용하여 패키지를 실행할 때 패키지 암호를 입력해야 합니다. 암호를 입력하지 않으면 패키지를 실행할 수 없습니다. 이 설정을 적용할 경우, PackagePassword 항목에 적절한 암호를 지정한 후 패키지를 저장해야 합니다. |
EncryptAllWithUserKey (사용자 키로 모두 암호화) |
사용자 프로필을 기반으로 하는 암호를 사용하여 전체 패키지를 암호화합니다. 동일한 프로필을 사용하는 동일한 사용자만 패키지를 로드할 수 있습니다. 패키지를 만들거나 내보낸 사용자를 기반으로 하는 키를 사용하여 패키지를 암호화합니다. 패키지를 만들거나 내보낸 사용자만 SSIS 디자이너에서 패키지를 열거나 dtexec 명령 프롬프트 유틸리티를 사용하여 패키지를 실행할 수 있습니다. |
EncryptAllWithPassword (암호로 중요한 정보 암호화) |
암호를 사용하여 패키지 내의 중요한 정보를 암호화합니다. 이 암호화에는 DPAPI가 사용됩니다. 중요한 데이터는 패키지의 일부로 저장되지만 패키지를 만들거나 내보낼 때 사용자가 입력한 암호를 사용하여 암호화됩니다. SSIS 디자이너에서 패키지를 열려면 패키지 암호를 입력해야 합니다. 암호를 입력하지 않으면 패키지의 중요한 정보가 제외되며 패키지를 실행시키기 위해서는 사용자가 중요한 정보 부분에 값을 입력해야 합니다. 암호를 입력하지 않으면 패키지를 실행할 수 없습니다. 이 설정을 적용할 경우, PackagePassword 항목에 적절한 암호를 지정한 후 패키지를 저장해야 합니다. |
EncryptSensitiveWithUserKey (사용자 키로 중요 정보 암호화) |
현재 사용자를 기반으로 하는 키를 사용하여 패키지 내의 중요한 정보를 암호화합니다. 동일한 프로필을 사용하는 동일한 사용자만 패키지를 로드할 수 있습니다. 다른 사용자가 패키지를 여는 경우 중요한 정보는 빈칸으로 대체되므로 현재 사용자가 중요한 데이터에 새 값을 지정해야 합니다. 사용자가 패키지를 실행하려고 시도하는 경우 패키지 실행이 실패합니다. 이 암호화에는 DPAPI가 사용됩니다. |
ServerStorage (암호화에 서버 저장소 사용) |
SQL Server 데이터베이스 역할을 사용하여 전체 패키지를 보호합니다. 이 옵션은 패키지를 SQL Server msdb 데이터베이스에 저장할 때만 지원됩니다. Business Intelligence Development Studio 에서 파일 시스템에 패키지를 저장하는 경우에는 지원되지 않습니다. |
SSIS에서의 중요한 데이터(Sensitive Data)는 암호, 연결 문자열 등을 지칭합니다.
만약 EntryptAllWithUserKey 또는 EncryptSensitiveWithUserKey로 설정된 패키지를 다른 사용자의 프로필 환경에 열 경우 다음과 같은 오류가 발생합니다.
EncryptSensitiveWithUserKey 또는 EncryptSensitiveWithPassword로 설정된 패키지의 경우, 다른 사용자의 프로필 환경에서 열 경우 또는 암호가 틀릴 경우에는 중요한 데이터만 사용할 수 없으며, 나머지 패키지의 개체는 조회 가능합니다. 하지만, EncryptAllWithUserKey 또는 EncryptAllWithPassword 등으로 설정된 경우, 사용자 프로필이 다르거나 암호가 다르게 되면 다음과 같이 패키지의 개체 조회까지 불가능합니다.
패키지 운영 방안
다수의 개발자가 패키지의 내용을 조회하고 운영해야 하는 실제 운영 환경에서 SSIS 패키지를 개발하고 운영하기 위해서는 다음과 같은 운영 형태를 고려할 수 있습니다.
1. 모든 개발 패키지를 EncryptSensitiveWithPassword 또는 EncryptAllWithPassword로 설정한 후, 패키지의 암호를 공유합니다. 이 경우, 개인 키를 기반으로 하지 않기 때문에 패키지의 암호를 아는 사용자는 누구든지 접근이 가능하며 실행할 수 있습니다.
2. 개발자는 각 패키지를 개발한 후 최종 버전을 서버의 msdb에 저장합니다. 이 때 ProtectionLevel을 ServerStorage로 설정한 후, Visual Studio의 상단 메뉴 중 [파일] à [다른 이름으로 … .dtsx의 복사본 저장]을 선택한 후, 패키지 위치를 SQL Server로 설정하여 직접 SQL 서버에 저장합니다.
저장한 패키지를 다른 사용자가 수정하거나 조회해야 할 경우, 개발 환경의 솔루션 탐색기에서 기존 패키지 추가(X) 메뉴를 이용하여 SQL Server의 msdb에 저장된 패키지를 불러오는 방식으로 운영할 수 있습니다.
'연구개발 > DTS & SSIS' 카테고리의 다른 글
기본 강좌 50 - SSIS 기타 사항 (기본 강좌 끝) (0) | 2009.06.20 |
---|---|
기본 강좌 49 - 배포 및 배포 마법사 (0) | 2009.06.20 |
기본 강좌 47 - 로깅 (0) | 2009.06.20 |
기본 강좌 46 - 트랜잭션 처리 (0) | 2009.06.20 |
기본 강좌 45 - 이벤트 및 이벤트 처리기 (0) | 2009.06.20 |