Установка безопасных соединений в 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 |
Результаты |
||
---|---|---|---|---|
None |
Да |
Задает соединение без проверки подлинности. Поставщик запрашивает поток TCP, но при этом проверка подлинности пользователя, запрашивающего этот поток, не проводится ни в какой форме. |
||
Connect |
Да |
Задает соединение с проверкой подлинности. У поставщика запрашивается TCP-поток, а затем контекст безопасности пользователя, запрашивающего поток, проходит проверку подлинности на сервере.
После того как проверка подлинности завершилась успехом или ошибкой, контекст безопасности, используемый для проверки подлинности соединения, удаляется. |
||
Pkt Integrity или PktIntegrity |
Да |
Задает соединение с подписью. У поставщика запрашивается TCP-поток, а затем контекст безопасности пользователя, запрашивающего поток, проходит проверку подлинности на сервере.
|
||
Pkt Privacy или PktPrivacy |
Да |
Задает зашифрованное соединение.
У поставщика запрашивается поток 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 |
Нет |
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