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

Применимо к: SQL Server Integration Runtime служб SSIS в Фабрика данных Azure

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

Примечание

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

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

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

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

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

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

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

Шифрование

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

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

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

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

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

Уровень защиты Описание
Не сохранять конфиденциальные данные (DontSaveSensitive) Подавляет значения конфиденциальных свойств в пакете при сохранении. Этот уровень защиты не шифрует, а предотвращает сохранение в пакете свойств, помеченных как конфиденциальные, и таким образом делает конфиденциальные данные недоступными для других пользователей. Если другой пользователь откроет пакет, конфиденциальная информация будет заменена пробелами и пользователь сам будет должен задать эти конфиденциальные сведения.

При использовании со средством dtutil (dtutil.exe) этот уровень защиты соответствует значению 0.
Шифровать все данные паролем (EncryptAllWithPassword) Использует пароль для шифрования всего пакета. Пакет шифруется с использованием пароля, который пользователь предоставляет при создании или экспорте пакета. Чтобы открыть пакет в конструкторе Integration Services или запустить пакет с помощью программы командной строки dtexec , необходимо ввести пароль пакета. Без пароля пользователь не может получить доступ к пакету или запустить его.

При использовании с программой dtutil этот уровень защиты соответствует значению 3.
Шифровать все данные пользовательским ключом (EncryptAllWithUserKey) Использует ключ на основе текущего профиля пользователя для шифрования всего пакета. Открыть пакет в конструкторе Integration Services или запустить пакет с помощью программы командной строки dtexec может только пользователь, создавший или экспортировавший пакет.

При использовании с программой dtutil этот уровень защиты соответствует значению 4.

Примечание. Для уровней защиты, в которых используется ключ пользователя, службы Службы Integration Services используют стандарты DPAPI. Дополнительные сведения о DPAPI см. в библиотеке MSDN по адресу https://msdn.microsoft.com/library.
Шифровать конфиденциальные данные паролем (EncryptSensitiveWithPassword) Использует пароль для шифрования только значений конфиденциальных свойств пакета. Для шифрования используется DPAPI. Конфиденциальные данные сохраняются как часть пакета, но эти данные шифруются с использованием пароля, предоставляемого текущим пользователем при создании или экспорте пакета. Чтобы открыть пакет в конструкторе служб Integration Services , пользователь должен предоставить пароль пакета. Если пароль не предоставлен, пакет открывается без конфиденциальных данных и текущий пользователь должен ввести новые значения для конфиденциальных данных. Если пользователь пытается выполнить пакет без предоставления пароля, выполнения не происходит. Дополнительные сведения о паролях и выполнении из командной строки см. в разделе Программа 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, хранилища пакетов служб Integration Services или файловой системы, можно изменить уровень защиты пакета. Например, если пользователь создает и сохраняет пакеты на своем компьютере с одним из параметров ключевых пользовательских уровней защиты, возможно, ему захочется изменить уровень защиты, предоставляя пакет другим пользователям, так как иначе они попросту не смогут открыть пакет.

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

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

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

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

Установка и изменение уровня защиты пакетов

Для управления доступом к содержимому пакетов и конфиденциальным данным в них, таким как пароли, необходимо задать значение свойства ProtectionLevel . Пакеты, которые содержатся в проекте, должны обладать тем же уровнем защиты, что и сам проект. Это необходимо для создания проекта. При изменении настройки свойства ProtectionLevel в проекте потребуется вручную обновить настройку свойства для пакетов.

Обзор функций безопасности в Integration Services см. в разделе Обзор безопасности.

В приведенной в данном разделе процедуре описано использование SQL Server Data Tools (SSDT) или средства командной dtutil для изменения свойства ProtectionLevel .

Примечание

В дополнение к приведенной в этом разделе процедуре можно, как правило, задать или изменить свойство пакета ProtectionLevel при импорте или экспорте пакета. Если сохранение пакета производится с помощью мастера импорта и экспорта ProtectionLevel , то можно также изменить свойство SQL Server .

Установка или изменение уровня защиты пакета в SQL Server Data Tools

  1. Просмотрите доступные значения свойства ProtectionLevel в разделе Уровни защиты и определите подходящее значение для своего пакета.

  2. В среде SQL Server Data Tools (SSDT)откройте проект служб Службы Integration Services , содержащий пакет.

  3. Откройте пакет в конструкторе служб Integration Services .

  4. Если свойства пакета не отображаются в окне свойств, щелкните область конструктора.

  5. В окне свойств в группе Безопасность выберите подходящее значение для свойства ProtectionLevel .

    Если выбран уровень защиты, для которого требуется пароль, введите пароль в качестве значения свойства PackagePassword .

  6. Чтобы сохранить пакет, в меню Файл выберите пункт Сохранить выбранные элементы .

Установка или изменение уровня защиты пакетов в командной строке

  1. Просмотрите доступные значения свойства ProtectionLevel в разделе Уровни защиты и определите подходящее значение для своего пакета.

  2. Просмотрите сопоставления для параметра Encrypt в разделе dtutil Utilityи выберите подходящее целое число, которое будет значением выбранного свойства ProtectionLevel .

  3. Откройте окно командной строки и

  4. В командной строке перейдите к папке с пакетом или пакетами, для которых требуется задать свойство ProtectionLevel .

    В примерах синтаксиса в следующем шаге предполагается, что эта папка является текущей папкой.

  5. Установите или измените уровень защиты пакета или пакетов при помощи команды, подобно показанной в одном из следующих примеров.

    • Следующая команда задает свойство ProtectionLevel отдельного пакета в файловой системе равным уровню 2 – «Шифровать конфиденциальные данные паролем» с паролем «strongpassword»:

      dtutil.exe /file "C:\Package.dtsx" /encrypt file;"C:\Package.dtsx";2;strongpassword

    • Следующая команда задает свойство ProtectionLevel всех пакетов в определенной папке файловой системы равным уровню 2 – «Шифровать конфиденциальные данные паролем» с паролем «strongpassword»:

      for %f in (*.dtsx) do dtutil.exe /file %f /encrypt file;%f;2;strongpassword

      Если подобную команду использовать в пакетном файле, то в него необходимо включить заполнитель «%f» в виде «%%f».

Диалоговое окно уровня защиты пакета и проекта

Диалоговое окно Уровень защиты пакета позволяет изменять уровень защиты пакета. Уровень защиты определяет метод защиты (пароль или ключ пользователя) и область защиты пакетов. Защита может охватывать все данные или только конфиденциальные данные.

Сведения о требованиях и параметрах безопасности пакетов см. в разделе Обзор безопасности (Integration Services).

Параметры

Уровень защиты пакета
Выберите уровень защиты из списка.

Пароль
При использовании уровней защиты Шифровать конфиденциальные данные паролем или Шифровать все данные паролем введите пароль.

Введите пароль еще раз
Введите пароль еще раз.

Диалоговое окно "Пароль пакета"

Диалоговое окно Пароль пакета позволяет вводить пароль для пакета, который был зашифрован с паролем. Пароль необходим, если в пакете используется уровень защиты Шифровать конфиденциальные данные паролемили Шифровать все данные паролем .

Параметры

Пароль
Введите пароль.

См. также:

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