Определение источника пакетов с помощью цифровых подписей
Область применения: среда выполнения интеграции SSIS SQL Server в Фабрика данных Azure
Пакет служб Integration Services можно подписать с помощью цифрового сертификата для идентификации источника. После подписания пакета с цифровым сертификатом можно проверить цифровую подпись служб Integration Services перед загрузкой пакета. Чтобы службы Integration Services проверили подпись, установите параметр в SQL Server Data Tools (SSDT) или в служебной программе dtexec (dtexec.exe) или задайте необязательное значение реестра.
Подпись пакета цифровым сертификатом
Прежде чем подписывать пакет цифровым сертификатом, сертификат необходимо получить или создать. Цифровая подпись пакета возможна только при наличии сертификата. Дополнительные сведения о получении сертификата и подписи им пакета см. в разделе Подписание пакета цифровым сертификатом.
Задание параметра для проверки подписи пакета
Как SQL Server Data Tools (SSDT), так и служебная программа dtexec имеют возможность настроить службы Integration Services для проверки цифровой подписи подписанного пакета. Независимо от того, следует ли использовать SQL Server Data Tools (SSDT) или служебную программу dtexec , независимо от того, нужно ли проверять все пакеты или только определенные:
Чтобы проверить цифровую подпись всех пакетов перед загрузкой пакетов во время разработки, установите флажок Проверки цифровой подписи при загрузке параметра пакета в SQL Server Data Tools (SSDT). Этот параметр является глобальным параметром для всех пакетов в SQL Server Data Tools (SSDT).
Чтобы проверить цифровую подпись отдельного пакета, укажите параметр /VerifyS[igned] при запуске программы dtexec для запуска пакета. Дополнительные сведения см. в статье dtexec Utility.
Задание значения реестра для проверки подписи пакета
Службы Integration Services также поддерживают необязательное значение реестра , Заблокированное значениеSignatureStates, которое можно использовать для управления политикой организации для загрузки подписанных и неподписанных пакетов. Этот параметр препятствует загрузке пакетов, которые не подписаны либо имеют неверную или ненадежную подпись. Дополнительные сведения о задании этого значения реестра см. в разделе Реализация политики подписывания путем задания параметра реестра.
Примечание.
Необязательное значение реестра BlockedSignatureStates может указать параметр, который является более строгим, чем параметр цифровой подписи, заданный в SQL Server Data Tools (SSDT) или в командной строке dtexec . В этом случае значение в реестре переопределяет другие параметры.
Реализация политики подписывания путем задания параметра реестра
Для управления организационной политикой при загрузке подписанных и неподписанных пакетов можно использовать необязательный параметр реестра. Если вы используете это значение реестра, необходимо создать это значение реестра на каждом компьютере, на котором будут выполняться пакеты служб Integration Services, и на котором требуется применить политику. После установки значения реестра службы Integration Services будут проверять или проверять подписи перед загрузкой пакетов.
Процедура, описанная в этой статье, позволяет добавить необязательное значение DWORD параметра BlockedSignatureStates в раздел реестра 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.
Щелкните OK.
В меню Файл выберите пункт Выход.
Подписание пакета цифровым сертификатом
В этом разделе описывается, как подписать пакет служб Integration Services с помощью цифрового сертификата. Цифровая подпись может использоваться совместно с другими методами предотвращения загрузки и выполнения недействительного пакета.
Прежде чем подписать пакет служб Integration Services, необходимо выполнить следующие задачи:
Создайте или получите закрытый ключ для сертификата и сохраните его на локальном компьютере.
Получите сертификат для цифрового подписывания от доверенной службы сертификации. Для получения или создания сертификата можно воспользоваться одним из следующих методов.
Получите сертификат от публичной, коммерческой службы выдачи сертификатов.
Получите на сервере сертификации сертификат, позволяющий организации самостоятельно выпускать сертификаты внутреннего использования. Корневой сертификат, используемый для подписания этого сертификата, необходимо добавить в хранилище Доверенные корневые центры сертификации . Чтобы добавить корневой сертификат, можно использовать оснастку "Сертификаты" для консоли управления Майкрософт (MMC). Дополнительные сведения см. в разделе «Службы сертификатов» библиотеки 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 обновляется до версии 4.7.2 для SQL Server 2022, а алгоритм SignedXML по умолчанию изменяется на SHA256, так как SHA1 больше не считается безопасным. Дополнительные сведения см. в этой статье.
Дополнительные сведения о сертификатах см. в электронной документации по оснастке «Сертификаты». Дополнительные сведения о подписывании цифровых активов см. в разделе «Подписывание и проверка кода при помощи технологии Authenticode» библиотеки MSDN.
Убедитесь, что сертификат поддерживает подписание кода. Чтобы определить, поддерживает ли сертификат подписание кода, проверьте свойства сертификата в оснастке «Сертификаты».
Сохраните сертификат в персональном хранилище.
После выполнения описанных выше задач можно подписать пакет, следуя приведенной далее процедуре.
Подписывание пакета
В SQL Server Data Tools (SSDT) откройте проект служб Integration Services, содержащий подписанный пакет.
Чтобы открыть пакет, дважды щелкните его в обозревателе решений.
В конструкторе служб SSIS в меню служб SSIS щелкните "Цифровая подпись".
В диалоговом окне Цифровая подпись нажмите Подписать.
Выберите сертификат в диалоговом окне Выбор сертификата .
Чтобы просмотреть сведения о сертификате, нажмите кнопку Просмотреть сертификат(необязательно).
Нажмите кнопку ОК , чтобы закрыть диалоговое окно Выбор сертификата .
Нажмите кнопку ОК , чтобы закрыть диалоговое окно Цифровая подпись .
Чтобы сохранить обновленный пакет, выберите пункт Сохранить выбранные элементы в меню Файл .
Хотя пакет подписан, необходимо настроить службы Integration Services для проверки или проверки цифровой подписи перед загрузкой пакета.
Справочник по пользовательскому интерфейсу: диалоговое окно "Цифровая подпись"
С помощью диалогового окна Цифровая подпись можно подписать пакет цифровой подписью или удалить подпись. Диалоговое окно "Цифровая подпись" доступно в меню "Цифровые подписи" в меню служб SSIS в SQL Server Data Tools (SSDT).
Дополнительные сведения см. в статье Подписание пакета цифровым сертификатом.
Параметры
Подпись
Щелкните, чтобы открыть диалоговое окно Выбор сертификата и выберите необходимый сертификат.
Удалить
Щелкните, чтобы удалить цифровую подпись.
См. также
Пакеты служб Integration Services (SSIS)
Обзор безопасности (Integration Services)