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


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

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

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

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

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

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

Значение ProtectionLevel

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

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

None

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

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

Connect

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

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

ПримечаниеПримечание
Подписанное соединение поддерживается только поставщиком XML для аналитики, предоставленным службами MicrosoftSQL ServerAnalysis Services.

Pkt Integrity или PktIntegrity

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

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

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

Pkt Privacy или PktPrivacy

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

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

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

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

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

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

Значение ProtectionLevel

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

Results

None

Yes

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

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

Connect

Yes

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

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

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

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

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

Pkt Integrity или PktIntegrity

Yes

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

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

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

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

Pkt Privacy или PktPrivacy

Yes

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

ПримечаниеПримечание
Зашифрованное соединение можно также установить, не задавая значение свойству 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

No

Connect

HTTP

Pkt Integrity или PktIntegrity

No

Pkt Privacy или PktPrivacy

HTTPS

Дополнительные сведения см. в разделе «Настройка доступа по протоколу HTTP к службам SQL Server Analysis Services в Microsoft Windows XP» на веб-узле Майкрософт.

Открытие безопасного 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

См. также

Справочник