Identyfikowanie źródła pakietów przy użyciu podpisów cyfrowych
Dotyczy:SQL Server SSIS Integration Runtime w ramach usługi Azure Data Factory
Pakiet usług Integration Services można podpisać przy użyciu certyfikatu cyfrowego, aby zidentyfikować jego źródło. Po podpisaniu pakietu przy użyciu certyfikatu cyfrowego możesz zlecić usłudze Integration Services sprawdzenie podpisu cyfrowego przed załadowaniem pakietu. Aby sprawdzić podpis usług Integration Services, należy skonfigurować opcję w ramach narzędzi SQL Server Data Tools (SSDT), w narzędziu dtexec (dtexec.exe) lub ustawić opcjonalną wartość w rejestrze.
Podpisywanie pakietu przy użyciu certyfikatu cyfrowego
Przed podpisaniem pakietu przy użyciu certyfikatu cyfrowego należy najpierw uzyskać lub utworzyć certyfikat. Po utworzeniu certyfikatu możesz użyć tego certyfikatu do podpisania pakietu. Aby uzyskać więcej informacji na temat uzyskiwania certyfikatu i podpisywania pakietu za pomocą tego certyfikatu, zobacz Podpisywanie pakietu przy użyciu certyfikatu cyfrowego.
Ustawianie opcji sprawdzania podpisu pakietu
Narzędzia SQL Server Data Tools (SSDT) i narzędzia dtexec mają możliwość skonfigurowania usług Integration Services w celu sprawdzenia podpisu cyfrowego podpisanego pakietu. Niezależnie od tego, czy używasz narzędzi SQL Server Data Tools (SSDT), czy narzędzia dtexec zależy od tego, czy chcesz sprawdzić wszystkie pakiety, czy tylko określone:
Aby sprawdzić podpis cyfrowy wszystkich pakietów przed ich załadowaniem w czasie projektowania, ustaw opcję Sprawdź podpis cyfrowy podczas ładowania pakietu w narzędziach SQL Server Data Tools (SSDT). Ta opcja jest ustawieniem globalnym dla wszystkich pakietów w narzędziach SQL Server Data Tools (SSDT).
Aby sprawdzić podpis cyfrowy pojedynczego pakietu, określ opcję /VerifyS[igned] podczas uruchamiania pakietu za pomocą narzędzia dtexec. Aby uzyskać więcej informacji, zobacz dtexec Utility.
Ustawianie wartości rejestru w celu sprawdzenia podpisu pakietu
Usługi Integration Services obsługują również opcjonalną wartość rejestru, BlockedSignatureStates, której można użyć do zarządzania zasadą organizacji dotyczącą ładowania podpisanych i niepodpisanych pakietów. Wartość rejestru może uniemożliwić ładowanie pakietów, jeśli pakiety są niepodpisane lub mają nieprawidłowe lub niezaufane podpisy. Aby uzyskać więcej informacji na temat ustawiania tej wartości rejestru, zobacz Implementowanie zasad podpisywania przez ustawienie wartości rejestru.
Notatka
Opcjonalna wartość rejestru BlockedSignatureStates może określać ustawienie bardziej restrykcyjne niż opcja podpisu cyfrowego ustawiona w SQL Server Data Tools (SSDT) lub w wierszu polecenia dtexec. W takiej sytuacji bardziej restrykcyjne ustawienie rejestru zastępuje inne ustawienia.
Wprowadź zasadę podpisywania przez ustawienie wartości rejestru
Możesz użyć opcjonalnej wartości rejestru do zarządzania zasadami organizacji na potrzeby ładowania podpisanych lub niepodpisanych pakietów. Jeśli używasz tej wartości rejestru, musisz utworzyć tę wartość rejestru na każdym komputerze, na którym będą uruchamiane pakiety usług Integration Services i na którym chcesz wymusić zasady. Po ustawieniu wartości rejestru usługi Integration Services będą sprawdzać lub weryfikować podpisy przed załadowaniem pakietów.
W procedurze opisanej w tym artykule opisano sposób dodawania opcjonalnej wartości BlockedSignatureStates DWORD do klucza rejestru HKLM\SOFTWARE\Microsoft\Microsoft SQL Server\150\SSIS\Setup\DTSPath.
Notatka
Lokalizacja rejestru poniżej 150 reprezentuje program SQL Server 2019, w obszarze 140 reprezentuje program SQL Server 2017, w obszarze 130 reprezentuje program SQL Server 2016, w obszarze 120 reprezentuje program SQL Server 2014, a poniżej 110 reprezentuje program SQL Server 2012.
Wartość danych w BlockedSignatureStates określa, czy pakiet powinien zostać zablokowany, jeśli ma niezaufany podpis, ma nieprawidłowy podpis lub jest niepodpisany.
W przypadku stanu podpisów używanych do podpisywania pakietów wartość rejestru BlockedSignatureStates używa następujących definicji:
Prawidłowy podpis to taki, który można pomyślnie odczytać.
Nieprawidłowy podpis to taki, dla którego odszyfrowana suma kontrolna (jednokierunkowy skrót kodu pakietu zaszyfrowanego za pomocą klucza prywatnego) nie zgadza się z odszyfrowaną sumą kontrolną obliczaną w ramach procesu ładowania pakietów Integration Services.
Zaufany podpis to taki, który jest tworzony przy użyciu certyfikatu cyfrowego podpisanego przez zaufany główny urząd certyfikacji. Ta opcja nie wymaga obecności podpisującego na liście zaufanych wydawców użytkownika.
niezaufanym podpisem jest taki, którego nie można zweryfikować jako wystawiony przez zaufany główny urząd certyfikacji lub podpis, który nie jest aktualny.
W poniższej tabeli wymieniono prawidłowe wartości danych DWORD i skojarzonych z nimi zasad.
Wartość | Opis |
---|---|
0 | Brak ograniczeń administracyjnych. |
1 | Blokuj nieprawidłowe podpisy. To ustawienie nie blokuje niepodpisanych pakietów. |
2 | Blokuj nieprawidłowe i niezaufane podpisy. To ustawienie nie blokuje niepodpisanych pakietów, ale blokuje podpisy generowane samodzielnie. |
3 | Blokuj nieprawidłowe i niezaufane podpisy i niepodpisane pakiety To ustawienie blokuje również podpisy generowane samodzielnie. |
Notatka
Zalecane ustawienie dla BlockedSignatureStates wynosi 3. To ustawienie zapewnia największą ochronę przed niepodpisanymi pakietami lub podpisami, które są nieprawidłowe lub niezaufane. Jednak zalecane ustawienie może nie być odpowiednie we wszystkich okolicznościach. Aby uzyskać więcej informacji na temat podpisywania zasobów cyfrowych, zobacz temat "Wprowadzenie do podpisywania kodu", w bibliotece MSDN.
Aby zaimplementować politykę podpisywania dla pakietów
W menu Start kliknij Uruchom.
W oknie dialogowym Uruchamianie wpisz Regedit, a następnie kliknij przycisk OK.
Znajdź klucz rejestru HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\100\SSIS.
Kliknij prawym przyciskiem myszy MSDTS, wskaż polecenie Nowy, a następnie kliknij DWORD wartość.
Zaktualizuj nazwę nowej wartości na BlockedSignatureStates.
Kliknij prawym przyciskiem myszy BlockedSignatureStates i wybierz Modyfikuj.
W oknie dialogowym Edytuj wartość DWORD wpisz wartość 0, 1, 2 lub 3.
Kliknij przycisk OK.
W menu Plik kliknij pozycję Zakończ.
Podpisywanie pakietu przy użyciu certyfikatu cyfrowego
W tym temacie opisano sposób podpisywania pakietu usług Integration Services przy użyciu certyfikatu cyfrowego. Możesz użyć podpisu cyfrowego wraz z innymi ustawieniami, aby zapobiec ładowaniu i uruchamianiu pakietu, który jest nieprawidłowy.
Przed podpisaniem pakietu usług Integration Services należy wykonać następujące zadania:
Utwórz lub uzyskaj klucz prywatny do skojarzenia z certyfikatem i zapisz ten klucz prywatny na komputerze lokalnym.
Uzyskaj certyfikat na potrzeby podpisywania kodu z zaufanego urzędu certyfikacji. Aby uzyskać lub utworzyć certyfikat, możesz użyć jednej z następujących metod:
Uzyskaj certyfikat z publicznego komercyjnego urzędu certyfikacji wystawiającego certyfikaty.
Uzyskaj certyfikat z serwera certyfikatów, który umożliwia organizacji wewnętrzne wystawianie certyfikatów. Należy dodać certyfikat główny (root), którego użyto do podpisania certyfikatu, do magazynu Zaufanych głównych urzędów certyfikacji. Aby dodać certyfikat główny, możesz użyć przystawki Certyfikaty dla programu Microsoft Management Console (MMC). Aby uzyskać więcej informacji, zobacz temat "Certificate Services"" w bibliotece MSDN.
Utwórz własny certyfikat tylko do celów testowych. Polecenie programu PowerShell New-SelfSignedCertificate może utworzyć nowy certyfikat z podpisem własnym z bezpiecznym algorytmem skrótu na potrzeby testowania. Na przykład:
$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
Jeśli zostanie wyświetlony komunikat o błędzie "Podpisywanie pakietu nie powiodło się z powodu błędu 0x80090008 "Określono nieprawidłowy algorytm"., oznacza to, że algorytm wyznaczania wartości skrótu certyfikatu nie jest bezpieczny, zmień certyfikat na bardziej bezpieczny algorytm wyznaczania wartości skrótu, taki jak SHA512, i użyj dostawcy usług kryptograficznych( CSP). Ponieważ platforma .NET jest uaktualniana do wersji 4.7.2 dla programu SQL Server 2022, a domyślny algorytm SignedXML został zmieniony na SHA256, ponieważ algorytm SHA1 nie jest już uważany za bezpieczny. Szczegółowe informacje można znaleźć w tym artykule.
Aby uzyskać więcej informacji na temat certyfikatów, skorzystaj z pomocy online przystawki "Certyfikaty". Aby uzyskać więcej informacji na temat podpisywania zasobów cyfrowych, zobacz temat "Podpisywanie i sprawdzanie kodu przy użyciu technologii Authenticode", w bibliotece MSDN.
Upewnij się, że certyfikat został włączony do podpisywania kodu. Aby określić, czy certyfikat jest aktywny do podpisywania kodu, przejrzyj właściwości certyfikatu w przystawce Certyfikaty.
Zapisz certyfikat w magazynie osobistym.
Po ukończeniu poprzednich zadań możesz użyć poniższej procedury, aby podpisać pakiet.
Aby podpisać pakiet
W narzędziu SQL Server Data Tools (SSDT) otwórz projekt usług Integration Services zawierający pakiet do podpisania.
W Eksploratorze rozwiązań kliknij dwukrotnie pakiet, aby go otworzyć.
W programie SSIS Designer w menu
SSIS kliknij podpisywania cyfrowego. W oknie dialogowym podpis cyfrowy kliknij Podpisz.
W oknie dialogowym Wybierz certyfikat wybierz certyfikat.
(Opcjonalnie) Kliknij Wyświetl certyfikat, aby wyświetlić informacje o certyfikacie.
Kliknij przycisk OK, aby zamknąć okno dialogowe Wybierz certyfikat.
Kliknij przycisk
OK , aby zamknąć okno dialogowe podpisywania cyfrowego. Aby zapisać zaktualizowany pakiet, kliknij Zapisz wybrane elementy w menu Plik.
Mimo że pakiet został podpisany, należy teraz skonfigurować usługi Integration Services, aby sprawdzić lub zweryfikować podpis cyfrowy przed załadowaniem pakietu.
Dokumentacja interfejsu użytkownika okna dialogowego podpisywania cyfrowego
Użyj okna dialogowego podpisywania cyfrowego
Aby uzyskać więcej informacji, zobacz Podpisywanie pakietu przy użyciu certyfikatu cyfrowego.
Opcje
znak
Kliknij, aby otworzyć okno dialogowe Wybierz certyfikat, a następnie wybierz certyfikat do użycia.
Usuń
Kliknij, aby usunąć podpis cyfrowy.
Zobacz też
pakiety Integration Services (SSIS)
Przegląd Bezpieczeństwa (Integration Services)