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


Соединения в ADOMD.NET — установка безопасных соединений

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

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

Примечание

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

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



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



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

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

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

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

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

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

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

Значение ProtectionLevel Используется с соединением по протоколу TCP Результаты
Нет Да Задает соединение без проверки подлинности.

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

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

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

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



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



Если проверка подлинности завершается неудачно, AdomdConnection объект отключается от многомерного источника данных и создается исключение.
PKT Privacy или пктприваци Да Задает зашифрованное соединение.



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



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



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



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

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

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

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

  • Для встроенного свойства безопасности либо не задавайте это свойство, либо задайте для этого свойства значение SSPI.

    Примечание

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

  • для свойства ProtectionLevel присвойте этому свойству значение Подключение, pkt integrityили pkt privacy.

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

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

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

Значение ProtectionLevel Использование с протоколом HTTP или HTTPS
Нет Нет
Подключить HTTP
PKT Integrity или пктинтегрити Нет
PKT Privacy или пктприваци 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