Поделиться через


Установка безопасных соединений в ADOMD.NET

При использовании соединения в ADOMD.NET метод безопасности для этого соединения выбирается в зависимости от значения свойства ProtectionLevel строки подключения, которая используется при вызове метода Open объекта AdomdConnection.

Свойство ProtectionLevel поддерживает четыре уровня безопасности: без проверки подлинности, с проверкой подлинности, с подписью и зашифрованный. Эти уровни безопасности описаны в приведенной далее таблице.

ПримечаниеПримечание

Если принято решение использовать пул подключений к базе данных, возможность использовать базу данных для управления безопасностью отсутствует. Это происходит потому, что для объединения подключений в пул базе данных требуется, чтобы строки соединений были одинаковыми. Поэтому управлять безопасностью необходимо в другом месте.

Уровень безопасности

Значение ProtectionLevel

соединение без проверки подлинности

В соединении без проверки подлинности проверка подлинности не выполняется ни в какой форме. Соединение этого типа является наиболее широко поддерживаемым, но наименее безопасным.

None

соединение с проверкой подлинности

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

Connect

подписанное соединение

В подписанном соединении выполняется проверка подлинности пользователя, запрашивающего соединение, а в дальнейшем обеспечивается неизменность передаваемых данных. Этот вид соединения полезен, когда необходимо проверять подлинность передаваемых данных. Однако подписанное соединение лишь предотвращает изменение содержимого пакета данных. При этом все еще остается возможность просматривать содержимое при передаче.

ПримечаниеПримечание

Подписанное соединение поддерживается только поставщиком XML для аналитики, предоставленным службами Microsoft SQL Server Службы Analysis Services.

Pkt Integrity или PktIntegrity

зашифрованное соединение

Зашифрованное соединение — тип соединения, используемого по умолчанию платформой ADOMD.NET. Соединение этого типа выполняет проверку подлинности пользователя, запрашивающего соединение, а в дальнейшем также шифрует передаваемые данные. Зашифрованное соединение — самый безопасный вариант соединения, которое может быть установлено платформой ADOMD.NET. Содержимое пакета данных не может быть просмотрено или изменено, что защищает данные во время передачи.

ПримечаниеПримечание

Зашифрованное соединение поддерживается только поставщиком XML для аналитики, предоставленным службами SQL Server Службы Analysis Services.

Pkt Privacy или PktPrivacy

Однако не все уровни безопасности доступны для всех видов соединений.

  • Для соединения по протоколу TCP можно использовать только один из четырех уровней безопасности. В действительности соединение по протоколу TCP при использовании его в сочетании с встроенной безопасностью Windows обеспечивает самый безопасный метод подключения к источнику аналитических данных.

  • HTTP-соединение может быть только соединением с проверкой подлинности. Поэтому свойству ProtectionLevel должно быть присвоено значение Connect.

  • Соединение по протоколу HTTPS может быть только зашифрованным соединением. Поэтому свойству ProtectionLevel должно быть присвоено значение Pkt Privacy или PktPrivacy.

Защита соединений по протоколу TCP

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

Значение ProtectionLevel

Используется с соединением по протоколу TCP

Результаты

None

Да

Задает соединение без проверки подлинности.

Поставщик запрашивает поток TCP, но при этом проверка подлинности пользователя, запрашивающего этот поток, не проводится ни в какой форме.

Connect

Да

Задает соединение с проверкой подлинности.

У поставщика запрашивается TCP-поток, а затем контекст безопасности пользователя, запрашивающего поток, проходит проверку подлинности на сервере.

  • Если проверка подлинности завершается успешно, то больше никаких действий не производится.

  • Если проверка подлинности дает отрицательный результат, то объект AdomdConnection отключается от многомерного источника данных и активизируется исключение.

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

Pkt Integrity или PktIntegrity

Да

Задает соединение с подписью.

У поставщика запрашивается TCP-поток, а затем контекст безопасности пользователя, запрашивающего поток, проходит проверку подлинности на сервере.

  • Если проверка подлинности завершается успешно, объект AdomdConnection закрывает существующий поток TCP и открывает поток TCP с подписью для обработки всех запросов. Каждый запрос данных или метаданных проходит проверку подлинности с применением контекста безопасности, с которым открывалось соединение. Кроме того, каждый пакет получает цифровую подпись для гарантирования полезных данных пакета TCP от любых изменений.

  • Если проверка подлинности дает отрицательный результат, то объект AdomdConnection отключается от многомерного источника данных и активизируется исключение.

Pkt Privacy или PktPrivacy

Да

Задает зашифрованное соединение.

ПримечаниеПримечание

Зашифрованное соединение можно также установить, не задавая значение свойству ProtectionLevel в строке соединения.

У поставщика запрашивается поток TCP, после чего выполняется проверка подлинности контекста безопасности пользователя, запрашивающего поток, с помощью сервера.

  • Если проверка подлинности завершается успешно, объект AdomdConnection закрывает существующий поток TCP и открывает зашифрованный поток TCP для обработки всех запросов. Каждый запрос данных или метаданных проходит проверку подлинности с применением контекста безопасности, с которым открывалось соединение. Кроме того, полезные данные каждого пакета TCP шифруются при помощи самого сложного метода шифрования из всех, которые поддерживаются как поставщиком, так и источником многомерных данных.

  • Если проверка подлинности дает отрицательный результат, то объект AdomdConnection отключается от многомерного источника данных и активизируется исключение.

Использование встроенной безопасности Windows для соединения

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

Для использования встроенной безопасности Windows в строке соединения требуется указать следующие настройки.

  • Свойству Integrated Security либо вообще не нужно присваивать значение, либо нужно присвоить значение SSPI.

    ПримечаниеПримечание

    Встроенная безопасность Windows может использоваться только для TCP-соединений, так как в HTTP-соединениях должен использоваться параметр Basic для свойства Integrated Security.

  • Что касается свойства ProtectionLevel, то ему необходимо присвоить значение Connect, Pkt Integrity или Pkt Privacy.

Защита HTTP-соединений

Протоколы HTTPS и SSL можно использовать для внешней защиты связи с источником аналитических данных по протоколу HTTP.

Поскольку поставщик XMLA использует только безопасный протокол HTTP, HTTP-соединение в ADOMD.NET должно быть с подписью, как показано в следующей таблице.

Значение ProtectionLevel

Использование с протоколом HTTP или HTTPS

None

Нет

Connect

HTTP

Pkt Integrity либо PktIntegrity

Нет

Pkt Privacy либо PktPrivacy

HTTPS

Открытие безопасного HTTP-соединения

В следующем примере демонстрируется использование компонента ADOMD.NET для открытия HTTP-соединения для образца базы данных AdventureWorksAS служб Службы Analysis Services:

Public Function GetAWEncryptedConnection( _
    Optional ByVal serverName As String = "https:\\localhost\isapy\msmdpump.dll") _
    As AdomdConnection

    Dim strConnectionString As String = ""
    Dim objConnection As New AdomdConnection

    Try
        ' To establish an encrypted connection, set the 
        ' ProtectionLevel setting to PktPrivacy.
        strConnectionString = "DataSource=" & serverName & ";" & _
            "Catalog=AdventureWorksAS;" & _
            "ProtectionLevel=PktPrivacy;"

        ' Note that username and password are not supplied here.
        ' The current security context is used for authentication
        ' purposes.

        objConnection.ConnectionString = strConnectionString
        objConnection.Open()
    Catch ex As Exception
        objConnection = Nothing
        Throw ex
    Finally
        ' Return the encrypted connection.
        GetAWEncryptedConnection = objConnection
    End Try
End Function

См. также

Справочник

Установление соединений в ADOMD.NET