보안 – 보안 레벨에 따른 암호화 수준
안녕하세요 강성욱 입니다.(www.sqltag.org, www.sqler.com, http://jevida.blog.me)
이번 시간에는 [보안] 에 대해서 알아 보겠습니다.
SSIS는 패키기 수준에서 강력한 보안을 제공 합니다. SSIS에서 제공하는 보안과 관련된 사항은 다음과 같습니다.
- 패키지의 ProtectionLevel 설정에 따라 패키지의 암호화를 설정할 수 있습니다. 데이터베이스 암호나 연결 문자열 등과 같은 중요한 데이터를 포함시키지 않도록 설정하거나 암호화 수준을 설정할 수 있습니다.
- ProtectionLevel 및 PackagePassword 속성을 이용하여 패키지의 보안을 설정할 수 있습니다. 암호를 이용하거나 개인 키를 이용하여 보안을 설정할 수 있습니다.
- 보안과 관련된 사항을 SQL Server가 담당하도록 지정할 수 있습니다. ProtectionLevel을 ServeStorage로 설정한 후 패키지를 SQL Server의 msdb에 직접 저장하면 패키지의 보안 관련된 사항은 모두 SQL Server에서 관리하게 됩니다.
중요한 데이터란 DB 연결정보, 암호, MXL노드 정보 등과 같은 연결 정보입니다.
[BIDS]를 실행하여 [Integration Services 프로젝트]를 실행 합니다.
[제어 흐름]탭에서 [SQL 실행 태스크]를 마우스를 이용하여 드래그 앤 드롭으로 끌어다 놓습니다.
[속성]창에서 [ProtectionLevel]을 선택 합니다. [EncryptionAllWithPassword]를 선택 합니다.
[Protection Level]
설정값 | 상세 설명 |
DontSaveSensitive (중요한 정보 저장 안함) | 패키지를 저장할 때 중요한 정보 제외. 암호화는 사용하지 않지만 중요한 것으로 표시된 속성이 패키지로 저장되는 것을 방지. 사용자가 중요한 데이터를 사용하지 못하도록 함. 이 설정은 동일한 사용자가 패키지를 저장하여 닫은 후 다시 여는 경우라도 저장이 되지 않기 때문에 매번 패키지를 열 때마다 중요한 정보를 다시 지정해야 함. |
EncryptAllWithPassword (암호로 모두 암호화) | 암호를 사용하여 전체 패키지를 암호화. 패키지를 만들거나 내보낼 때 사용자가 입력한 암호를 사용하여 패키지를 암호화 함. 사용자는 SSIS 디자이너에서 패키지를 열거나 dtexec명령프롬프트 유틸리티에서 패키지를 실행 할 때 패키지 암호를 입력해야 함. 암호를 입력하지 않을 시 패키지 실행이 불가능 함. 이 설정을 적용할 경우 PackagePassword 항목에 적절한 암호를 지정한 후 패키지를 저장해야 합니다. |
EncryptAllWithUserKey (사용자 키로 모두 암호화) | 사용자 프로필을 기반으로 하는 암호를 사용하여 전체 패키지를 암호화 함. 동일한 프로필을 사용하는 동일한 사용자만 패키지를 로드 할 수 있음. 패키지를 만들거나 내보낸 사용자를 기반으로 하는 키를 사용하여 패키지를 암호화 함. 패키지를 만들거나 내보낸 사용자만 SSIS 디자이너에서 패키지를 열거나 dtexec 명령프롬프트 유틸리티를 사용하여 패키지를 실행 할 수 있음. |
EncryptSensitiveWithPassword (암호로 중요한 정보 암호화) | 암호를 사용하여 패키지 내의 중요한 정보를 암호화. 암호화에는 DPAPI가 사용. 중요한 데이터는 패키지의 일부로 저장되지만 패키지를 만들거나 내보낼 때 사용자가 입력한 암호를 사용하여 암호화 됨. SSIS 디자이너에서 패키지를 열려면 패키지 암호를 입력해야 합니다. 암호를 입력하지 않으면 패키지의 중요한 정보 부분에 값을 입력해야 합니다. 암호를 입력하지 않으면 패키지를 실행 할 수 없습니다. 이 설정을 적용할 경우 PackagePassword 항목에 적절한 암호를 지정한 후 패키지를 저장해야 합니다. |
EncryptSensitiveWithUserKey (사용자키로 중요정보 암호화) | 현재 사용자를 기반으로 하는 키를 사용하여 패키지 내의 중요한 정보를 암호화. 동일한 프로필을 사용하는 동일한 사용자만 패키지를 로드할 수 있음. 다른 사용자가 패키지를 여는 경우 중요한 정보는 빈칸으로 대체되므로 현재 사용자가 중요한 데이터에 새 값을 지정해야 합니다. 사용자가 패키지를 실행하려고 시도하는 경우 패키지 실행이 실패 합니다. 암호화는 DPAPI가 사용 됩니다. |
ServerStorage (암호화에 서버 저장소 사용) | SQL Server 데이터베이스 역할을 사용하여 전체 패키지를 보호. 이 옵션은 패키지를 SQL Server msdb데이터베이스에 저장할 때만 지원됨. BIDS에서 파일 시스템에 패키지를 저장하는 경우에는 지원되지 않습니다. |
[PackagePassword]를 클릭하여 암호를 입력 합니다.
[BIDS]를 재실행 하여 실습한 [보안] 프로젝트를 불러오기 합니다.
아래 그림과 같이 패키지 암호를 입력하는 창이 나타납니다.
[취소]를 클릭하여 암호 입력을 하지 않습니다.
패키지를 로드 할 수 없다는 오류와 함께 패키지 조회가 불가능 합니다.
ProtectionLevel이 Sensitive인 경우에는 중요 정보만 확인할 수 없으며 나머지 패키지의 개체는 조회가 가능 합니다. All인 경우에는 암호가 다르면 패키지의 조회도 불가능 합니다.
'SQL Server > SSIS 강좌' 카테고리의 다른 글
배포 및 배포 마법사 (0) | 2015.07.16 |
---|---|
로깅 – SSIS의 실행 정보를 로깅하자 (0) | 2015.07.16 |
트랜잭션 – 패키지에서 트랜잭션을 제어하자 (0) | 2015.07.16 |
스크립트 작업 및 ActiveX 스크립트 작업 (0) | 2015.07.16 |
SQL 실행 작업 (0) | 2015.07.16 |