Установка уровня защиты пакетов
Для защиты данных в пакете служб Integration Services можно задать уровень защиты, способствующий защите или только конфиденциальных данных, или всех данных в пакете. Более того, эти данные можно зашифровать с паролем или ключом пользователя или возложить задачу шифрования данных на базу данных. Кроме того, используемый уровень защиты пакета не обязательно является статическим и изменяется в течение жизненного цикла пакета. Часто один уровень защиты устанавливается во время развертывания, а другой — сразу после развертывания пакета.
Примечание |
---|
Помимо уровней защиты, описанных в данном разделе, пакеты, сохраняемые в базе данных msdb, также можно защитить с помощью предопределенных ролей уровня базы данных. Службы Integration Services включают в себя три предопределенных роли уровня базы данных для назначения разрешений пакетам db_ssisadmin, db_ssisltduser и db_ssisoperator. Дополнительные сведения см. в разделе Использование ролей служб Integration Services. |
Определение конфиденциальных данных
В пакете служб Integration Services следующие данные определены как конфиденциальные.
Часть строки соединения, содержащая пароль. Однако если выбран параметр, который шифрует все, строка соединения целиком будет рассматриваться как конфиденциальная.
Сформированные задачей XML-узлы, помеченные как конфиденциальные. Пометки XML-узлов управляются службами Integration Services и не могут изменяться пользователями.
Любая переменная, помеченная как конфиденциальная. Пометки переменных управляются службами Integration Services.
В службах Integration Services свойство рассматривается как конфиденциальное в зависимости от того, назначил ли свойство конфиденциальным разработчик компонента Integration Services, такого как диспетчер соединений или задача. Пользователи не могут добавлять или удалять свойства из списка свойств, которые рассматриваются как конфиденциальные.
Использование шифрования
Шифрование, используемое уровнями защиты пакетов, выполняется при помощи API-интерфейса DPAPI (Майкрософт), являющегося частью шифровального API-интерфейса (CryptoAPI).
Уровни защиты пакета, шифрующие пакеты с паролями, требуют введения пароля. Если пользователь изменяет уровень защиты с уровня, не использующего пароль, на уровень, его использующий, пользователю будет предложено ввести пароль.
Кроме того, для уровней защиты, использующих пароли, службы Integration Services используют алгоритм шифрования Triple DES с длиной ключа 192 бита, доступный из .NET Framework Class Library (FCL).
Основные сведения об уровнях защиты
Следующая таблица описывает уровни защиты, предоставляемые службами Integration Services. Значения в скобках — это значения из DTSProtectionLevel. Эти значения отображаются в окне «Свойства», которое используется для настройки свойств пакета при работе с пакетами в среде Business Intelligence Development Studio.
Уровень защиты |
Описание |
---|---|
Не сохранять конфиденциальные данные (DontSaveSensitive). |
Подавляет значения конфиденциальных свойств в пакете при сохранении. Этот уровень защиты не шифрует, а предотвращает сохранение в пакете свойств, помеченных как конфиденциальные, и таким образом делает конфиденциальные данные недоступными для других пользователей. Если другой пользователь откроет пакет, конфиденциальная информация будет заменена пробелами и пользователь сам будет должен задать эти конфиденциальные сведения. При использовании со средством dtutil (dtutil.exe) этот уровень защиты соответствует значению 0. |
Шифровать все данные паролем (EncryptAllWithPassword). |
Использует пароль для шифрования всего пакета. Пакет шифруется с использованием пароля, который пользователь предоставляет при создании или экспорте пакета. Чтобы открыть пакет в конструкторе служб SSIS или запустить пакет с использованием программы командной строки dtexec, пользователь должен предоставить пароль пакета. Без пароля пользователь не может получить доступ к пакету или запустить его. При использовании со средством dtutil этот уровень защиты соответствует значению 3. |
Шифровать все данные пользовательским ключом (EncryptAllWithUserKey). |
Использует ключ на основе текущего профиля пользователя для шифрования всего пакета. Только пользователь, создавший или экспортировавший пакет, сможет открыть пакет в конструкторе служб SSIS или запустить пакет с помощью программы командной строки dtexec. При использовании со средством dtutil этот уровень защиты соответствует значению 4.
Примечание
Для уровней защиты с ключом пользователя службы Integration Services используют стандарты DPAPI. Дополнительные сведения о DPAPI см. в библиотеке MSDN по адресу https://msdn.microsoft.com/library.
|
Шифровать конфиденциальные данные паролем (EncryptSensitiveWithPassword). |
Использует пароль для шифрования только значений конфиденциальных свойств пакета. Для шифрования используется DPAPI. Конфиденциальные данные сохраняются как часть пакета, но эти данные шифруются с использованием пароля, предоставляемого текущим пользователем при создании или экспорте пакета. Чтобы открыть пакет в конструкторе служб SSIS, пользователь должен предоставить пароль пакета. Если пароль не предоставлен, пакет открывается без конфиденциальных данных и текущий пользователь должен ввести новые значения для конфиденциальных данных. Если пользователь пытается выполнить пакет без предоставления пароля, выполнения не происходит. Дополнительные сведения о паролях и выполнении из командной строки см. в разделе Программа dtexec. При использовании со средством dtutil этот уровень защиты соответствует значению 2. |
Шифровать конфиденциальные данные пользовательским ключом (EncryptSensitiveWithUserKey). |
Использует ключ на основе текущего профиля пользователя для шифрования только значений конфиденциальных свойств пакета. Только тот же пользователь, использующий тот же профиль, сможет загрузить пакет. Если другой пользователь откроет пакет, конфиденциальная информация будет заменена пробелами и пользователь сам должен задать эти конфиденциальные данные. Если пользователь пытается выполнить пакет, запуска не происходит. Для шифрования используется DPAPI. При использовании со средством dtutil этот уровень защиты соответствует значению 1.
Примечание
Для уровней защиты с ключом пользователя службы Integration Services используют стандарты DPAPI. Дополнительные сведения о DPAPI см. в библиотеке MSDN по адресу https://msdn.microsoft.com/library.
|
Шифровать в зависимости от хранилища на сервере (ServerStorage). |
Защищает весь пакет, используя роли базы данных SQL Server. Этот параметр поддерживается только в случае, когда пакет сохраняется в базе данных msdb служб SQL Server. Он не поддерживается, когда пакет сохраняется в файловой системе из Business Intelligence Development Studio. |
Изменение уровня защиты на основе жизненного цикла пакета
Уровень защиты пакета служб SQL ServerIntegration Services задается, когда начинается его разработка в среде Business Intelligence Development Studio. Позже, когда пакет развернут, импортирован или экспортирован из служб Integration Services в службы SQL Server Management Studio либо скопирован из среды Business Intelligence Development Studio в SQL Server, хранилища пакетов служб SSIS или файловой системы, можно изменить уровень защиты пакета. Например, если пользователь создает и сохраняет пакеты на своем компьютере с одним из параметров ключевых пользовательских уровней защиты, возможно, ему захочется изменить уровень защиты, предоставляя пакет другим пользователям, так как иначе они попросту не смогут открыть пакет.
Как правило, изменение уровня защиты охватывает следующие шаги.
Во время развертывания рекомендуется принять значение уровня защиты пакетов по умолчанию: EncryptSensitiveWithUserKey. Этот параметр позволит гарантировать просмотр важных значений в пакете только разработчиком. Можно подумать об использовании EncryptAllWithUserKey или DontSaveSensitive.
Когда все готово к развертыванию пакетов, уровень защиты следует изменить на уровень, не зависящий от ключа пользователя разработчика. В этом случае обычно требуется выбрать EncryptSensitiveWithPassword или EncryptAllWithPassword. Зашифруйте пакеты, назначив временный надежный пароль, который также известен рабочей группе в рабочей среде.
После развертывания пакетов в рабочей среде рабочая группа может повторно зашифровать развернутые пакеты, назначив известный им надежный пароль. Другой вариант: они могут зашифровать развернутые пакеты, выбрав EncryptSensitiveWithUserKey или EncryptAllWithUserKey и используя локальные данные учетной записи, с которой выполняются пакеты.
|