Контроль доступа к конфиденциальным данным в пакетах

Чтобы защитить данные в пакете служб Integration Services, можно задать уровень защиты, который помогает защитить только конфиденциальные данные или все данные в пакете. Более того, эти данные можно зашифровать с паролем или ключом пользователя или возложить задачу шифрования данных на базу данных. Кроме того, используемый уровень защиты пакета не обязательно является статическим и изменяется в течение жизненного цикла пакета. Часто один уровень защиты устанавливается во время развертывания, а другой — сразу после развертывания пакета.

Замечание

Помимо уровней защиты, описанных в этом разделе, можно использовать предопределенные роли уровня базы данных для защиты пакетов, сохраненных на сервере Служб Integration Services.

Определение конфиденциальных данных

В пакете служб Integration Services следующие сведения определяются как конфиденциальные:

  • Часть строки соединения, содержащая пароль. Однако если выбран параметр, который шифрует все, строка соединения целиком будет рассматриваться как конфиденциальная.

  • Сформированные задачей XML-узлы, помеченные как конфиденциальные. Теги XML-узлов управляются службами Integration Services и не могут изменяться пользователями.

  • Любая переменная, помеченная как конфиденциальная. Маркировка переменных контролируется службами Integration Services.

Учитывает ли службы Integration Services свойство, зависят от того, был ли разработчик компонента Служб Integration Services, например диспетчером соединений или задачей, назначить свойство конфиденциальным. Пользователи не могут добавлять или удалять свойства из списка свойств, которые рассматриваются как конфиденциальные.

Шифрование

Шифрование, используемое уровнями защиты пакетов, выполняется с помощью API защиты данных Майкрософт (DPAPI), который является частью API шифрования (CryptoAPI).

Уровни защиты пакета, шифрующие пакеты с паролями, требуют введения пароля. Если пользователь изменяет уровень защиты с уровня, не использующего пароль, на уровень, его использующий, пользователю будет предложено ввести пароль.

Кроме того, для уровней защиты, использующих пароль, службы Integration Services используют алгоритм тройной шифр DES с длиной ключа 192 бит, доступной в библиотеке классов платформа .NET Framework (FCL).

Уровни защиты

В следующей таблице описаны уровни защиты, предоставляемые службами Integration Services. Значения в скобках — это значения из перечисления DTSProtectionLevel . Эти значения отображаются в окно свойств, которые используются для настройки свойств пакета при работе с пакетами в SQL Server Data Tools (SSDT).

Уровень защиты Описание
Не сохраняйте конфиденциальные данные (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. Кроме того, каталог SSISDB использует ServerStorage уровень защиты

Этот параметр не поддерживается, если пакет сохраняется в файловой системе из SQL Server Data Tools (SSDT).

Установка уровня защиты и каталог SSISDB

Каталог SSISDB использует ServerStorage уровень защиты. При развертывании проекта Служб Integration Services на сервере Служб Integration Services каталог автоматически шифрует данные пакета и конфиденциальные значения. Каталог также автоматически расшифровывает данные после их получения.

Если вы экспортируете проект (ISPAC-файл) с сервера Служб Integration Services в файловую систему, система автоматически изменяет уровень защиты на EncryptSensitiveWithUserKey. При импорте проекта с помощью мастера импорта проектов служб Integration Services в SQL Server Data Tools (SSDT) свойство ProtectionLevel в окне свойств отображает значение EncryptSensitiveWithUserKey.

Назначение уровня защиты на основе жизненного цикла пакета

Вы устанавливаете уровень защиты пакета служб SQL Server Integration Services при первой разработке в SQL Server Data Tools (SSDT). Позже, когда пакет развертывается, импортируется или экспортируется из служб Integration Services в SQL Server Management Studio или копируется из SQL Server Data Tools (SSDT) в SQL Server, хранилище пакетов служб SSIS или файловую систему, можно обновить уровень защиты пакета. Например, если пользователь создает и сохраняет пакеты на своем компьютере с одним из параметров ключевых пользовательских уровней защиты, возможно, ему захочется изменить уровень защиты, предоставляя пакет другим пользователям, так как иначе они попросту не смогут открыть пакет.

Как правило, изменение уровня защиты охватывает следующие шаги.

  1. Во время разработки оставьте уровень защиты пакетов значением по умолчанию EncryptSensitiveWithUserKey. Этот параметр позволит гарантировать просмотр важных значений в пакете только разработчиком. Кроме того, можно рассмотреть возможность использования EncryptAllWithUserKeyили DontSaveSensitive.

  2. Когда все готово к развертыванию пакетов, уровень защиты следует изменить на уровень, не зависящий от ключа пользователя разработчика. Поэтому обычно необходимо выбрать EncryptSensitiveWithPasswordили EncryptAllWithPassword. Зашифруйте пакеты, назначив временный надежный пароль, который также известен рабочей группе в рабочей среде.

  3. После развертывания пакетов в рабочей среде рабочая группа может повторно зашифровать развернутые пакеты, назначив известный им надежный пароль. Кроме того, они могут зашифровать развернутые пакеты, выбрав EncryptSensitiveWithUserKey или EncryptAllWithUserKeyиспользуя локальные учетные данные учетной записи, которая будет запускать пакеты.

См. также

Импорт и экспорт пакетов (служба SSIS)
Пакеты служб Integration Services (SSIS)
Обзор безопасности (Integration Services)