다음을 통해 공유


패키지의 중요한 데이터에 대한 액세스 제어

적용 대상: SQL Server Azure Data Factory의 SSIS Integration Runtime

Integration Services 패키지의 데이터를 보호하려면 중요한 데이터 또는 패키지의 모든 데이터를 보호하는 데 도움이 되는 보호 수준을 설정할 수 있습니다. 또한 암호 또는 사용자 키로 이 데이터를 암호화하거나 데이터베이스를 사용하여 데이터를 암호화할 수 있습니다. 또한 패키지에 사용하는 보호 수준이 반드시 정적인 것은 아니지만 패키지의 수명 주기 동안 변경됩니다. 개발 중에는 보호 수준을 설정하고 패키지를 배포하는 즉시 다른 보호 수준을 설정하는 경우가 많습니다.

참고 항목

이 항목에 설명된 보호 수준 외에도 고정 데이터베이스 수준 역할을 사용하여 Integration Services 서버에 저장된 패키지를 보호할 수 있습니다.

중요한 정보의 정의

Integration Services 패키지에서 다음 정보는 중요한 정보로 정의됩니다.

  • 연결 문자열 암호 부분입니다. 그러나 전체 암호화 옵션을 선택할 경우 연결 문자열 전체가 중요한 정보로 간주됩니다.

  • 중요한 정보라는 태그가 지정된 태스크 생성 XML 노드. XML 노드의 태그 지정은 Integration Services에서 제어되며 사용자가 변경할 수 없습니다.

  • 중요한 것으로 표시된 모든 변수입니다. 변수 표시는 Integration Services에서 제어됩니다.

특정 속성이 Integration Services에서 중요한 속성으로 간주되는지 여부는 연결 관리자나 태스크와 같은 구성 요소의 개발자가 속성을 중요한 것으로 지정했는지 여부에 따라 달라집니다. 사용자는 중요한 것으로 간주되는 속성 목록에서 속성을 추가하거나 제거할 수 없습니다.

암호화

패키지 보호 수준에서 사용되는 암호화는 CryptoAPI(Cryptography API)의 일부인 Microsoft DPAPI(Data Protection API)를 사용하여 수행됩니다.

암호를 사용하여 패키지를 암호화하는 패키지 보호 수준에는 암호도 제공해야 합니다. 암호를 사용하지 않는 수준에서 암호로 보호 수준을 변경하는 경우 암호를 입력하라는 메시지가 표시됩니다.

또한 암호를 사용하는 보호 수준의 경우 Integration Services는 .NET Framework 클래스 라이브러리(FCL)에서 사용할 수 있는 키 길이가 192비트인 Triple DES 암호 알고리즘을 사용합니다.

보호 수준

다음 표에서는 Integration Services가 제공하는 보호 수준에 대해 설명합니다. 괄호 안의 값은 DTSProtectionLevel 열거형의 값입니다. 이러한 값은 SSDT(SQL Server Data Tools)에서 패키지를 사용할 때 패키지의 속성을 구성하는 데 사용하는 속성 창 표시됩니다.

보호 수준 설명
민감도 저장 안 함(DontSaveSensitive) 패키지를 저장할 때 중요한 속성의 값을 패키지에서 제외합니다. 이 보호 수준은 암호화되지 않지만, 대신 중요한 것으로 표시된 속성이 패키지와 함께 저장되지 않도록 하므로 중요한 데이터를 다른 사용자가 사용할 수 없게 만듭니다. 다른 사용자가 패키지를 열면 중요한 정보가 공백으로 대체되고 사용자가 중요한 정보를 제공해야 합니다.

utility (dtutil.exe) 유틸리티에서 사용할 경우 이 보호 수준은 값 0에 해당합니다.
암호로 모두 암호화(EncryptAllWithPassword) 암호를 사용하여 전체 패키지를 암호화합니다. 패키지는 패키지를 만들거나 내보낼 때 사용자가 제공하는 암호를 사용하여 암호화됩니다. SSIS 디자이너에서 패키지를 열거나 dtexec 명령 프롬프트 유틸리티를 사용하여 패키지를 실행하려면 사용자가 패키지 암호를 제공해야 합니다. 암호를 입력하지 않으면 패키지를 실행할 수 없습니다.

dtutil 유틸리티에서 사용할 경우 이 보호 수준은 값 3에 해당합니다.
사용자 키로 모두 암호화(EncryptAllWithUserKey) 현재 사용자 프로필을 기반으로 하는 키를 사용하여 패키지에서 중요한 속성의 값만 암호화합니다. SSIS 디자이너에서 패키지를 열거나 dtexec 명령 프롬프트 유틸리티를 사용하여 패키지를 실행하려면 사용자가 패키지 암호를 제공해야 합니다.

dtutil 유틸리티에서 사용할 경우 이 보호 수준은 값 4에 해당합니다.

참고: 사용자 키를 사용하는 보호 수준의 경우 Integration Services는 DPAPI 표준을 사용합니다. DPAPI에 대 한 자세한 내용은 https://msdn.microsoft.com/library, MSDN Library를 참조 합니다.
암호로 중요한 데이터 암호화(EncryptSensitiveWithPassword) 암호를 사용하여 패키지에서 중요한 속성의 값만 암호화합니다. 이 암호화에는 DPAPI가 사용됩니다. 중요한 데이터는 패키지의 일부로 저장되지만 해당 데이터는 패키지를 만들거나 내보낼 때 현재 사용자가 제공하는 암호를 사용하여 암호화됩니다. SSIS 디자이너에서 패키지를 열려면 사용자가 패키지 암호를 제공해야 합니다. 임호를 입력하지 않으면 패키지의 중요한 정보가 제외되며 현재 사용자가 중요한 정보에 새 값을 입력해야 합니다. 사용자가 암호를 제공하지 않고 패키지를 실행하려고 하면 패키지 실행이 실패합니다. 암호 및 명령줄 실행에 대한 자세한 내용은 dtexec Utility를 참조하십시오.

dtutil 유틸리티에서 사용할 경우 이 보호 수준은 값 2에 해당합니다.
사용자 키로 중요한 데이터 암호화(EncryptAllWithUserKey) 현재 사용자 프로필을 기반으로 하는 키를 사용하여 패키지에서 중요한 속성의 값만 암호화합니다. 동일한 프로필을 사용하는 동일한 사용자만 패키지를 로드할 수 있습니다. 다른 사용자가 패키지를 열면 중요한 정보가 공백으로 대체되고 현재 사용자가 중요한 데이터에 대한 새 값을 제공해야 합니다. 사용자가 패키지를 실행하려고 하면 패키지 실행이 실패합니다. 이 암호화에는 DPAPI가 사용됩니다.

dtutil 유틸리티에서 사용할 경우 이 보호 수준은 값 1에 해당합니다.

참고: 사용자 키를 사용하는 보호 수준의 경우 Integration Services는 DPAPI 표준을 사용합니다. DPAPI에 대 한 자세한 내용은 https://msdn.microsoft.com/library, MSDN Library를 참조 합니다.
암호화에 서버 스토리지 사용(ServerStorage) SQL Server 데이터베이스 역할을 사용하여 전체 패키지를 보호합니다. 이 옵션은 패키지가 SQL Server msdb 데이터베이스에 저장될 때 지원됩니다. 또한, SSISDB 카탈로그에서는 ServerStorage 보호 수준을 사용합니다.

패키지가 SSDT(SQL Server Data Tools)에서 파일 시스템에 저장되는 경우 이 옵션은 지원되지 않습니다.

SSISDB 카탈로그 및 보호 수준 설정

SSISDB 카탈로그에서는 ServerStorage 보호 수준을 사용합니다. Integration Services 프로젝트를 통합 서비스 서버에 배포하는 경우 카탈로그에서 패키지 데이터와 중요한 값을 자동으로 암호화합니다. 또한 카탈로그는 데이터를 검색할 때 자동으로 암호를 해독합니다.

프로젝트(.ispac 파일)를 Integration Services 서버에서 파일 시스템으로 내보내는 경우 보호 수준이 EncryptSensitiveWithUserKey로 자동으로 변경됩니다. SSDT(SQL Server Data Tools)에서 Integration Services 프로젝트 가져오기 마법사를 사용하여 프로젝트를 가져오는 경우 속성 창ProtectionLevel 속성에 EncryptSensitiveWithUserKey 값이 표시됩니다.

패키지 수명 주기에 따른 보호 수준 설정

SSDT(SQL Server Data Tools)에서 처음 개발할 때 SQL Server Integration Services 패키지의 보호 수준을 설정합니다. 나중에 패키지가 SQL Server Management Studio의 Integration Services에서 배포, 가져오기 또는 내보내거나 SSDT(SQL Server Data Tools)에서 SQL Server, SSIS 패키지 저장소 또는 파일 시스템으로 복사되는 경우 패키지 보호 수준을 업데이트할 수 있습니다. 예를 들어 사용자 키 보호 수준 옵션 중 하나를 사용하여 사용자 컴퓨터에 패키지를 만들고 저장한 경우 해당 패키지를 다른 사용자에게 전달하기 전에 보호 수준을 변경해야 합니다. 그렇지 않으면 패키지를 열 수 없습니다.

일반적으로 다음 단계에 나열된 대로 보호 수준을 변경합니다.

  1. 개발하는 동안 패키지의 보호 수준을 기본값인 EncryptSensitiveWithUserKey로 설정합니다. 이 설정을 사용하면 개발자만 패키지에서 중요한 값을 볼 수 있습니다. 또는 EncryptAllWithUserKey또는 DontSaveSensitive를 사용할 수도 있습니다.

  2. 패키지를 배포할 때는 보호 수준을 개발자의 사용자 키가 필요 없는 보호 수준으로 변경해야 합니다. 따라서 일반적으로 EncryptSensitiveWithPassword 또는 EncryptAllWithPassword를 선택해야 합니다. 프로덕션 환경의 운영 팀도 알고 있는 임시 강력한 암호를 할당하여 패키지를 암호화합니다.

  3. 프로덕션 환경에 패키지가 배포된 후에는 운영 팀이 자신들만 알고 있는 강력한 암호를 할당하여 배포된 패키지를 다시 암호화할 수 있습니다. 또는 EncryptSensitiveWithUserKey 또는 EncryptAllWithUserKey를 선택하고 패키지를 실행할 계정의 로컬 자격 증명을 사용하여 배포된 패키지를 암호화할 수 있습니다.

패키지 보호 수준 설정 또는 변경

패키지 내용과 패키지에 포함된 중요한 값(예: 암호)에 대한 액세스를 제어하려면 ProtectionLevel 속성의 값을 설정합니다. 프로젝트를 빌드하려면 프로젝트에 포함된 패키지의 보호 수준이 프로젝트와 동일해야 합니다. 프로젝트에서 ProtectionLevel 속성을 변경한 경우 패키지에 대한 프록시 설정을 수동으로 업데이트해야 합니다.

Integration Services의 보안 기능에 대한 개요는 보안 개요(Integration Services)를 참조하세요.

이 항목의 절차에서는 SSDT(SQL Server Data Tools) 또는 dtutil 명령 프롬프트 유틸리티를 사용하여 ProtectionLevel 속성을 변경하는 방법을 설명합니다.

참고 항목

이 항목의 절차 외에도 일반적으로 패키지를 가져오거나 내보낼 때 패키지의 ProtectionLevel 속성을 설정하거나 변경할 수 있습니다. 또한 SQL Server 가져오기 및 내보내기 마법사를 사용하여 패키지를 저장할 때도 패키지의 속성 ProtectionLevel을 변경할 수 있습니다.

SQL Server Data Tools에서 패키지의 보호 수준을 설정하거나 변경하려면

  1. 보호 수준 섹션에서 ProtectionLevel 속성, Protection Levels에 사용할 수 있는 값을 검토하고, 패키지에 적합한 값을 결정합니다.

  2. SSDT(SQL Server Data Tools)에서 원하는 패키지가 들어 있는 Integration Services 프로젝트를 엽니다.

  3. SSIS 디자이너에서 패키지를 엽니다.

  4. 속성 창 패키지의 속성이 표시되지 않으면 디자인 화면을 클릭합니다.

  5. 속성 창의 보안 그룹에서 ProtectionLevel 속성에 적합한 값을 선택합니다.

    암호가 필요한 보호 수준을 선택하는 경우 PackagePassword 속성 값으로 암호를 입력합니다.

  6. 업데이트된 패키지를 저장하려면 파일 메뉴에서 선택한 항목 저장을 선택합니다.

명령 프롬프트에서 패키지 보호 수준 설정 또는 변경

  1. 보호 수준 섹션에서 ProtectionLevel 속성, Protection Levels에 사용할 수 있는 값을 검토하고, 패키지에 적합한 값을 결정합니다.

  2. dtutil Utility Encrypt 항목 옵션에 대한 매핑을 검토하고 선택한 ProtectionLevel 속성의 값으로 사용하기에 적합한 정수를 결정합니다.

  3. 명령 프롬프트 창을 엽니다.

  4. 명령 프롬프트에서 ProtectionLevel 속성을 설정할 패키지, 패키지가 들어 있는 폴더로 이동합니다.

    다음 단계에 표시된 구문 예제에서는 이 폴더가 현재 폴더라고 가정합니다.

  5. 다음 예제 중 하나와 유사한 명령을 사용하여 패키지 또는 패키지의 보호 수준을 설정하거나 변경합니다.

    • 다음 명령은 파일 시스템에 있는 개별 패키지의 ProtectionLevel 속성을 수준 2, "암호로 중요한 데이터 암호화"로 설정하고 암호로 "strongpassword"를 사용합니다.

      dtutil.exe /file "C:\Package.dtsx" /encrypt file;"C:\Package.dtsx";2;strongpassword

    • 다음 명령은 파일 시스템의 특정 폴더에 있는 모든 패키지의 ProtectionLevel 속성을 수준 2, "암호로 중요한 데이터 암호화"로 설정하고 암호로 "strongpassword"를 사용합니다.

      for %f in (*.dtsx) do dtutil.exe /file %f /encrypt file;%f;2;strongpassword

      일괄 처리 파일에서 비슷한 명령을 사용하는 경우 일괄 처리 파일에 파일 자리 표시자 "%f"를 "%%f"로 입력합니다.

패키지 프로젝트 보호 수준 대화 상자

패키지 보호 수준 대화 상자를 사용해서 패키지 보호 수준을 업데이트합니다. 보호 수준은 보호 방법, 암호 또는 사용자 키 및 패키지 보호 범위를 결정합니다. 보호에는 모든 데이터 또는 중요한 데이터만 포함될 수 있습니다.

패키지 보안의 요구 사항과 옵션을 이해하려면 보안 개요(Integration Services)를 참조하세요.

옵션

패키지 보호 수준
목록에서 보호 수준을 선택합니다.

암호
암호로 중요한 데이터 암호화 또는 암호 보호 수준으로 모든 데이터를 암호화하고 암호를 입력합니다.

암호 다시 입력
암호를 다시 입력합니다.

패키지 암호 대화 상자

패키지 암호 대화 상자를 사용하여 암호로 암호화된 패키지의 패키지 암호를 제공합니다. 패키지가 암호로 중요한 데이터를 암호화 또는 암호 보호 수준으로 모두 암호화하는 데 사용하는 경우 암호를 제공해야 합니다.

옵션

암호
암호를 입력합니다.

참고 항목

Integration Services(SSIS) 패키지
보안 개요(Integration Services)
dtutil 유틸리티