Контроль доступа для конфиденциальных данных в пакетах
Область применения: среда выполнения интеграции SSIS SQL Server в Фабрика данных Azure
Чтобы защитить данные в пакете служб 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).
Уровень защиты | Description |
---|---|
Не сохранять конфиденциальные данные (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 или файловую систему, можно обновить уровень защиты пакета. Например, если пользователь создает и сохраняет пакеты на своем компьютере с одним из параметров ключевых пользовательских уровней защиты, возможно, ему захочется изменить уровень защиты, предоставляя пакет другим пользователям, так как иначе они попросту не смогут открыть пакет.
Как правило, изменение уровня защиты охватывает следующие шаги.
Во время развертывания рекомендуется принять значение уровня защиты пакетов по умолчанию: EncryptSensitiveWithUserKey. Этот параметр позволит гарантировать просмотр важных значений в пакете только разработчиком. Можно подумать об использовании EncryptAllWithUserKeyили DontSaveSensitive.
Когда все готово к развертыванию пакетов, уровень защиты следует изменить на уровень, не зависящий от ключа пользователя разработчика. В этом случае обычно требуется выбрать EncryptSensitiveWithPasswordили EncryptAllWithPassword. Зашифруйте пакеты, назначив временный надежный пароль, который также известен рабочей группе в рабочей среде.
После развертывания пакетов в рабочей среде рабочая группа может повторно зашифровать развернутые пакеты, назначив известный им надежный пароль. Другой вариант: они могут зашифровать развернутые пакеты, выбрав EncryptSensitiveWithUserKey или EncryptAllWithUserKeyи используя локальные данные учетной записи, с которой выполняются пакеты.
Установка и изменение уровня защиты пакетов
Для управления доступом к содержимому пакетов и конфиденциальным данным в них, таким как пароли, необходимо задать значение свойства ProtectionLevel . Пакеты, которые содержатся в проекте, должны обладать тем же уровнем защиты, что и сам проект. Это необходимо для создания проекта. При изменении настройки свойства ProtectionLevel в проекте потребуется вручную обновить настройку свойства для пакетов.
Обзор функций безопасности в Integration Services см. в разделе Обзор безопасности.
В этой статье описано, как использовать SQL Server Data Tools (SSDT) или служебную программу командной строки dtutil для изменения свойства ProtectionLevel .
Примечание.
В дополнение к приведенной в этом разделе процедуре можно, как правило, задать или изменить свойство пакета ProtectionLevel при импорте или экспорте пакета. Вы также можете изменить свойство ProtectionLevel пакета при использовании мастера импорта и экспорта SQL Server для сохранения пакета.
Установка или изменение уровня защиты пакета в SQL Server Data Tools
Просмотрите доступные значения свойства ProtectionLevel в разделе Уровни защиты и определите подходящее значение для своего пакета.
В SQL Server Data Tools (SSDT) откройте проект служб Integration Services, содержащий пакет.
Откройте пакет в конструкторе служб SSIS.
Если свойства пакета не отображаются в окне свойств, щелкните область конструктора.
В окне свойств в группе Безопасность выберите подходящее значение для свойства ProtectionLevel .
Если выбран уровень защиты, для которого требуется пароль, введите пароль в качестве значения свойства PackagePassword .
Чтобы сохранить пакет, в меню Файл выберите пункт Сохранить выбранные элементы .
Установка или изменение уровня защиты пакетов в командной строке
Просмотрите доступные значения свойства ProtectionLevel в разделе Уровни защиты и определите подходящее значение для своего пакета.
Просмотрите сопоставления для параметра Encrypt в разделе dtutil Utilityи выберите подходящее целое число, которое будет значением выбранного свойства ProtectionLevel .
Откройте окно командной строки.
В командной строке перейдите к папке с пакетом или пакетами, для которых требуется задать свойство ProtectionLevel .
В примерах синтаксиса в следующем шаге предполагается, что эта папка является текущей папкой.
Установите или измените уровень защиты пакета или пакетов при помощи команды, подобно показанной в одном из следующих примеров.
Следующая команда задает свойство 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