디지털 서명을 사용하여 패키지 원본 확인
적용 대상: SQL Server Azure Data Factory의 SSIS Integration Runtime
Integration Services 패키지는 디지털 인증서로 서명하여 원본을 식별할 수 있습니다. 패키지가 디지털 인증서로 서명된 후에는 패키지를 로드하기 전에 Integration Services에서 디지털 서명을 확인하게 할 수 있습니다. Integration Services에서 서명을 확인하려면 SSDT(SQL Server Data Tools) 또는 dtexec 유틸리티(dtexec.exe)에서 옵션을 설정하거나 선택적 레지스트리 값을 설정합니다.
디지털 인증서를 사용하여 패키지 서명
디지털 인증서를 사용하여 패키지에 서명하려면 먼저 인증서를 가져오거나 만들어야 합니다. 인증서가 있으면 이 인증서를 사용하여 패키지에 서명할 수 있습니다. 인증서를 가져오고 해당 인증서를 사용하여 패키지에 서명하는 방법에 대한 자세한 내용은 디지털 인증서를 사용하여 패키지 서명(Sign a Package)을 참조하세요.
패키지 서명을 확인하는 옵션 설정
SSDT(SQL Server Data Tools) 및 dtexec 유틸리티 모두에는 서명된 패키지의 디지털 서명을 확인하도록 Integration Services를 구성하는 옵션이 있습니다. SSDT(SQL Server Data Tools) 또는 dtexec 유틸리티 중 무엇을 사용할지는 다음과 같이 모든 패키지를 확인할지 또는 특정 패키지만 확인할지에 따라 결정합니다.
디자인 타임에 패키지를 로드하기 전에 모든 패키지의 디지털 서명을 확인하려면 SSDT(SQL Server Data Tools)에서 패키지 옵션을 로드할 때 디지털 서명 확인을 설정합니다. 이 옵션은 SSDT(SQL Server Data Tools)의 모든 패키지에 대한 전역 설정입니다.
개별 패키지의 디지털 서명을 확인하려면 dtexec 유틸리티를 사용하여 패키지를 실행할 때 /VerifyS[igned] 옵션을 지정합니다. 자세한 내용은 dtexec Utility를 참조하세요.
패키지 서명을 확인하도록 레지스트리 값 설정
Integration Services에서는 서명되거나 서명되지 않은 패키지에 대한 조직의 정책을 관리하는 데 사용할 수 있는 선택적 레지스트리 값인 BlockedSignatureStates도 지원합니다. 레지스트리 값은 패키지가 서명되지 않거나 유효하지 않거나 신뢰할 수 없는 서명이 있는 경우 패키지 로드를 방지할 수 있습니다. 이 레지스트리 값을 설정하는 방법에 대한 자세한 내용은 레지스트리 값을 설정하여 서명 정책 구현을 참조하세요.
참고 항목
선택적 BlockedSignatureStates 레지스트리 값은 SSDT(SQL Server Data Tools) 또는 dtexec 명령줄에서 설정한 디지털 서명 옵션보다 더 제한적인 설정을 지정할 수 있습니다. 이 경우 더 제한적인 설정이 다른 설정보다 우선합니다.
레지스트리 값을 설정하여 서명 정책을 구현하세요.
서명되거나 서명되지 않은 패키지 로드에 대한 조직의 정책을 관리하는 데 선택적 레지스트리 값을 사용할 수 있습니다. 이 레지스트리 값을 사용하는 경우 Integration Services 패키지가 실행되고 정책을 적용하려는 각 컴퓨터에 이 레지스트리 값을 만들어야 합니다. 레지스트리 값이 설정되면 Integration Services는 패키지를 로드하기 전에 서명을 확인하거나 확인합니다.
이 문서의 절차에서는 선택적 BlockedSignatureStates DWORD 값을 HKLM\SOFTWARE\Microsoft\Microsoft SQL Server\150\SSIS\Setup\DTSPath 레지스트리 키에 추가하는 방법을 설명합니다.
참고 항목
150 미만의 레지스트리 위치는 SQL Server 2019를 나타내고, 140 미만은 SQL Server 2017을 나타내고, 130 미만은 SQL Server 2016을 나타내고, 120 미만은 SQL Server 2014를 나타내고, 110 미만은 SQL Server 2012를 나타냅니다.
BlockedSignatureStates의 데이터 값은 신뢰할 수 없는 서명이 있거나, 서명이 잘못되었거나, 서명되지 않은 경우 패키지를 차단해야 하는지 여부를 결정합니다.
패키지 서명에 사용되는 서명 상태와 관련해서 BlockedSignatureStates 레지스트리 값은 다음 정의를 사용합니다.
유효한 서명은 성공적으로 읽을 수 있는 서명입니다.
잘못된 서명은 암호가 해독된 체크섬(프라이빗 키로 암호화된 패키지 코드의 단방향 해시)이 Integration Services 패키지를 로드하는 프로세스의 일부로 계산된 암호 해독된 체크섬과 일치하지 않는 서명입니다.
신뢰할 수 있는 서명은 신뢰할 수 있는 루트 인증 기관에서 서명한 디지털 인증서를 사용하여 만든 서명입니다. 이 설정을 사용할 경우 서명자가 사용자의 신뢰할 수 있는 게시자 목록에 없어도 됩니다.
신뢰할 수 없는 서명은 신뢰할 수 있는 루트 인증 기관에서 발급한 것으로 확인할 수 없거나 현재 서명이 아닌 서명입니다.
다음 표에서는 DWORD 데이터의 유효한 값 및 연관된 정책을 나열합니다.
값 | 설명 |
---|---|
0 | 관리 제한이 없습니다. |
1 | 잘못된 서명을 차단합니다. 이 설정은 서명되지 않은 패키지를 차단하지 않습니다. |
2 | 유효하지 않은 서명과 신뢰할 수 없는 서명을 차단합니다. 이 설정은 서명되지 않은 패키지를 차단하지 않지만 자체 생성된 서명을 차단합니다. |
3 | 유효하지 않고 신뢰할 수 없는 서명 및 서명되지 않은 패키지 차단 이 설정은 자체 생성된 서명도 차단합니다. |
참고 항목
BlockedSignatureStates 에 대한 권장 설정은 3입니다. 이 설정은 유효하지 않거나 신뢰할 수 없는 서명 또는 서명에 대해 가장 큰 보호를 제공합니다. 그러나 권장 설정은 모든 상황에서 적절하지 않을 수 있습니다. 디지털 자산 서명에 대한 자세한 내용은 MSDN 라이브러리의 "코드 서명 소개" 항목을 참조하세요.
패키지에 대한 서명 정책을 구현하려면
시작 메뉴에서 실행을 클릭합니다.
실행 대화 상자에 Regedit를 입력한 다음 확인을 클릭합니다.
레지스트리 키, HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\100\SSIS를 찾습니다.
MSDTS를 마우스 오른쪽 단추로 클릭하고 새로 만들기를 가리킨 다음 DWORD 값을 클릭합니다.
새 값의 이름을 BlockedSignatureStates로 업데이트합니다.
BlockedSignatureStates를 마우스 오른쪽 단추로 클릭하고 수정을 클릭합니다.
DWORD 값 편집 대화 상자에서 값 0, 1, 2 또는 3을 입력합니다.
확인을 클릭합니다.
파일 메뉴에서 끝내기를 클릭합니다.
디지털 인증서를 사용하여 패키지 서명
이 항목에서는 디지털 인증서를 사용하여 Integration Services 패키지에 서명하는 방법을 설명합니다. 디지털 서명을 다른 설정과 함께 사용하여 유효하지 않은 패키지가 로드 및 실행되지 않도록 방지할 수 있습니다.
Integration Services 패키지에 서명하려면 먼저 다음 작업을 수행해야 합니다.
인증서와 연결할 프라이빗 키를 만들거나 가져오고 이 프라이빗 키를 로컬 컴퓨터에 저장합니다.
공용 인증 기관에서 신뢰할 수 있는 코드 서명 인증서를 가져올 수 있습니다. 다음 방법 중 하나를 사용하여 인증서를 만들거나 가져올 수 있습니다.
인증서를 발급하는 공용 상용 인증 기관에서 인증서를 가져옵니다.
조직에서 내부적으로 인증서를 발급할 수 있도록 하는 인증서 서버에서 인증서를 가져옵니다. 신뢰할 수 있는 루트 인증 기관 저장소에 인증서에 서명하는 데 사용되는 루트 인증서를 추가해야 합니다. 루트 인증서를 추가하려면 MMC(Microsoft Management Console)에 인증서 스냅인을 사용할 수 있습니다. 자세한 내용은 MSDN 라이브러리의 "인증서 서비스" 항목을 참조하세요.
테스트 목적으로만 고유한 인증서를 만듭니다. PowerShell 명령 New-SelfSignedCertificate는 테스트 목적으로 보안 해시 알고리즘을 사용하여 자체 서명된 새 인증서를 만들 수 있습니다. 예시:
$params = @{ Type = 'CodeSigningCert' Provider = 'Microsoft Enhanced RSA and AES Cryptographic Provider' Subject = 'CN=PS code signing Certificate 2' TextExtension = @( '2.5.29.37={text}1.3.6.1.5.5.7.3.3', '2.5.29.17={text}upn=yourupn' ) KeyExportPolicy = 'NonExportable' KeyUsage = 'DigitalSignature' KeyAlgorithm = 'RSA' KeyLength = 2048 CertStoreLocation = 'Cert:\CurrentUser\My' HashAlgorithm = 'sha512' } New-SelfSignedCertificate @params
'잘못된 알고리즘 지정됨'0x80090008 오류로 인해 패키지 서명이 실패했습니다.'라는 오류 메시지가 표시되면 인증서 해시 알고리즘이 안전하지 않음을 나타냅니다. 인증서를 SHA512와 같은 보다 안전한 해시 알고리즘으로 변경하고 CSP(암호화 서비스 공급자)를 사용하세요. .NET Framework가 SQL Server 2022의 경우 4.7.2로 업그레이드되고 SHA1이 더 이상 안전한 것으로 간주되지 않으므로 기본 SignedXML 알고리즘이 SHA256으로 변경됩니다. 자세한 내용은 이 문서를 참조하세요.
인증서에 대한 자세한 내용은 인증서 스냅인에 대한 온라라인 도움말을 참조하세요. 디지털 자산에 서명하는 방법에 대한 자세한 내용은 MSDN 라이브러리의 "Authenticode를 사용하여 코드 서명 및 확인" 항목을 참조하세요.
인증서가 코드 서명에 사용하도록 설정되어 있는지 확인합니다. 인증서가 코드 서명에 사용할 수 있는지 여부를 확인하려면 인증서 스냅인에서 인증서의 속성을 검토합니다.
개인 저장소에 인증서를 저장합니다.
이전 작업을 완료한 후 다음 절차를 사용하여 패키지에 서명할 수 있습니다.
패키지에 서명하려면
SSDT(SQL Server Data Tools)에서 서명할 패키지가 들어 있는 Integration Services 프로젝트를 엽니다.
솔루션 탐색기에서 패키지를 두 번 클릭하여 엽니다.
SSIS 디자자이너의 SSIS 메뉴에서 디지털 서명을 클릭합니다.
디지털 서명 대화 상자에서 서명을 클릭합니다.
인증서 선택 대화 상자에서 인증서를 선택합니다.
(선택 사항) 인증서 정보를 보려면 인증서 보기를 클릭합니다.
확인 을 클릭하여 인증서 선택 대화 상자를 닫습니다.
확인을 클릭하여 디지털 서명 대화 상자를 닫습니다.
업데이트된 패키지를 저장하려면 파일 메뉴에서 선택한 항목 저장을 클릭합니다.
패키지에 서명했더라도 패키지를 로드하기 전에 디지털 서명을 확인하도록 Integration Services를 구성해야 합니다.
디지털 서명 대화 상자 UI 참조
디지털 서명 대화 상자를 사용하여 디지털 서명으로 패키지에 서명하거나 서명을 제거할 수 있습니다. 디지털 서명 대화 상자는 SSDT(SQL Server Data Tools)의 SSIS 메뉴에 있는 디지털 서명 옵션에서 사용할 수 있습니다.
자세한 내용은 디지털 인증서를 사용하여 패키지 서명을 참조하세요.
옵션
서명
인증서 선택 대화 상자를 열고 사용할 인증서를 선택하려면 클릭합니다.
제거
제거 디지털 서명을 제거하려면 클릭합니다.