Estabelecendo conexões seguras no ADOMD.NET
Quando você usa uma conexão no ADOMD.NET, o método de segurança usado para a conexão dependerá do valor da propriedade ProtectionLevel da cadeia de conexão usada durante a chamada do método Open de AdomdConnection.
A propriedade ProtectionLevel oferece quatro níveis de segurança: não autenticado, autenticado, assinado e criptografado. A tabela a seguir descreve esses vários níveis de segurança.
Observação |
---|
Se você optar por usar o pooling de conexões de banco de dados, o banco de dados não será capaz de gerenciar a segurança. Isso acontece porque o pooling de conexões de banco de dados exige que a cadeia de conexão seja idêntica para a criação do conexões. Dessa forma, você deve gerenciar a segurança em outro lugar. |
Nível de segurança |
Valor de ProtectionLevel |
||
---|---|---|---|
|
None |
||
|
Connect |
||
|
Pkt Integrity ou PktIntegrity |
||
|
Pkt Privacy ou PktPrivacy |
No entanto, nem todos os níveis de segurança estão disponíveis para todos os tipos de conexões:
Uma conexão TCP pode usar qualquer um dos quatro níveis de segurança. Na verdade, uma conexão TCP, quando usada com a com Segurança Integrada do Windows, oferece o método mais seguro de conexão a uma fonte de dados analíticos.
Uma conexão HTTP só pode ser do tipo autenticada. Dessa forma, a propriedade ProtectionLevel deve ser definida como Connect.
Uma conexão HTTPS só pode ser do tipo criptografada. Dessa forma, a propriedade ProtectionLevel deve ser definida como Pkt Privacy ou PktPrivacy.
Protegendo conexões TCP
Para uma conexão TCP, a propriedade ProtectionLevel dá suporte a todos os quatro níveis de segurança, como mostrado na tabela a seguir.
Valor de ProtectionLevel |
Usar com conexão TCP? |
Resultados |
||
---|---|---|---|---|
None |
Sim |
Especifica uma conexão não autenticada. Um fluxo TCP é solicitado do provedor, mas não há nenhuma forma de autenticação executada no usuário que está solicitando o fluxo. |
||
Connect |
Sim |
Especifica uma conexão autenticada. Um fluxo TCP é solicitado do provedor e o contexto de segurança do usuário que está solicitando o fluxo é autenticado no servidor:
Depois que a autenticação tiver êxito ou falhar, o contexto de segurança usado para autenticar a conexão será descartado. |
||
Pkt Integrity ou PktIntegrity |
Sim |
Especifica uma conexão assinada. Um fluxo TCP é solicitado do provedor e o contexto de segurança do usuário que está solicitando o fluxo é autenticado no servidor:
|
||
Pkt Privacy ou PktPrivacy |
Sim |
Especifica uma conexão criptografada.
Um fluxo TCP é solicitado do provedor e o contexto de segurança do usuário que está solicitando o fluxo é autenticado no servidor:
|
Usando a Segurança Integrada do Windows para a conexão
A Segurança Integrada do Windows e a forma mais segura de estabelecer e de proteger uma conexão a uma instância do Analysis Services. A Segurança Integrada do Windows não revela credenciais de segurança, como um nome de usuário e senha, durante o processo de autenticação, mas usa o identificador de segurança do processo em execução para estabelecer a identidade. Para a maioria dos aplicativos cliente, esse identificador de segurança representa a identidade do usuário atualmente conectado.
Para usar a Segurança Integrada do Windows, a cadeia de conexão exige as seguintes configurações:
Para a propriedade Integrated Security, não defina essa propriedade ou a defina como SSPI.
Observação A Segurança Integrada do Windows só está disponível para conexões TCP, já que as conexões HTTP devem usar a configuração Basic para a propriedade Integrated Security.
Para a propriedade ProtectionLevel, defina-a como Connect, Pkt Integrity ou Pkt Privacy.
Protegendo conexões HTTP
HTTPS e SSL (Secure Sockets Layer) podem ser usados para a proteção externa das comunicações HTTP seguras com uma fonte de dados analíticos.
Como um provedor de XMLA só usa o HTTP seguro, uma conexão HTTP no ADOMD.NET deve ser assinada, como mostrado na tabela a seguir.
Valor de ProtectionLevel |
Usar com HTTP ou HTTPS |
---|---|
None |
Não |
Connect |
HTTP |
Pkt Integrity ou PktIntegrity |
Não |
Pkt Privacy ou PktPrivacy |
HTTPS |
Abrindo uma conexão HTTP segura
O exemplo a seguir demonstra como usar o ADOMD.NET para abrir uma conexão HTTP para o banco de dados de exemplo AdventureWorksAS do 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