Установка безопасных соединений в ADOMD.NET
При использовании соединения в ADOMD.NET метод безопасности, применяемый для этого соединения, зависит от значения свойства ProtectionLevel строки соединения, которая используется при вызове метода Open объекта AdomdConnection.
Свойство ProtectionLevel имеет четыре уровня безопасности: без проверки подлинности, с проверкой подлинности, с подписью и зашифрованный. эти уровни безопасности описаны в приведенной далее таблице.
Примечание |
---|
Если принято решение использовать пул соединений базы данных, база данных не сможет управлять безопасностью. Происходит это потому, что для объединения соединений в пул базе данных требуется, чтобы строки соединений были одинаковыми. Поэтому управлять безопасностью необходимо в другом месте. |
Уровень безопасности |
Значение ProtectionLevel |
---|---|
|
None |
|
Connect |
|
Pkt Integrity или PktIntegrity |
|
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-поток, а затем контекст безопасности пользователя, запрашивающего поток, проходит проверку подлинности на сервере.
После того, как проверка подлинности завершилась успехом или ошибкой контекст безопасности, используемый для проверки подлинности соединения, удаляется. |
Pkt Integrity или PktIntegrity |
Yes |
Задает соединение с подписью. У поставщика запрашивается TCP-поток, а затем контекст безопасности пользователя, запрашивающего поток, проходит проверку подлинности на сервере.
|
Pkt Privacy или PktPrivacy |
Yes |
Задает зашифрованное соединение.
Примечание
Зашифрованное соединение можно также установить, не задавая значение свойству ProtectionLevel в строке соединения.
Поставщик запрашивает поток TCP, после чего выполняется проверка подлинности контекста безопасности пользователя, запрашивающего поток, по серверу:
|
Использование встроенной безопасности 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