Establecer conexiones seguras en ADOMD.NET
Al utilizar una conexión en ADOMD.NET, el método de seguridad que se utiliza para la conexión depende del valor de la propiedad ProtectionLevel de la cadena de conexión utilizada al llamar al método Open de AdomdConnection.
La propiedad ProtectionLevel proporciona cuatro niveles de seguridad: no autenticada, autenticada, firmada y cifrada. En la tabla siguiente se describen estos distintos niveles de seguridad.
[!NOTA]
Si elige utilizar una agrupación de conexiones de bases de datos, no se podrá administrar la seguridad en la base de datos. Esto se debe a que la agrupación de conexiones de bases de datos requiere que la cadena de conexión sea idéntica para agrupar las conexiones. Por lo tanto, deberá administrar la seguridad en otra parte.
Nivel de seguridad |
Valor de ProtectionLevel |
---|---|
|
None |
|
Connect |
|
Pkt Integrity o PktIntegrity |
|
Pkt Privacy o PktPrivacy |
Sin embargo, no todos los niveles de seguridad están disponibles para todos los tipos de conexiones:
Una conexión TCP puede utilizar cualquiera de los cuatro niveles de seguridad. De hecho, una conexión TCP que se utiliza con la seguridad integrada de Windows, ofrece el método más seguro de conexión con un origen de datos analíticos.
Una conexión HTTP solo puede ser una conexión autenticada. Por lo tanto, la propiedad ProtectionLevel debe establecerse en Connect.
Una conexión HTTPS solo puede ser una conexión cifrada. Por lo tanto, la propiedad ProtectionLevel debe establecerse en Pkt Privacy o PktPrivacy.
Proteger las conexiones TCP
En una conexión TCP, la propiedad ProtectionLevel admite los cuatros niveles de seguridad, como se muestra en la tabla siguiente.
Valor de ProtectionLevel |
¿Usar con conexión TCP? |
Resultados |
---|---|---|
None |
Sí |
Especifica una conexión no autenticada. Se solicita un flujo TCP del proveedor, pero no se realiza ningún tipo de autenticación del usuario que solicita el flujo. |
Connect |
Sí |
Especifica una conexión autenticada. Se solicita un flujo TCP del proveedor y, a continuación, se autentica en el servidor el contexto de seguridad del usuario que solicita el flujo:
Una vez realizada la autenticación correctamente o con error, se elimina el contexto de seguridad utilizado para autenticar la conexión. |
Pkt Integrity o PktIntegrity |
Sí |
Especifica una conexión firmada. Se solicita un flujo TCP del proveedor y, a continuación, se autentica en el servidor el contexto de seguridad del usuario que solicita el flujo:
|
Pkt Privacy o PktPrivacy |
Sí |
Especifica una conexión cifrada.
Se solicita un flujo TCP del proveedor y, a continuación, se autentica en el servidor el contexto de seguridad del usuario que solicita el flujo:
|
Utilizar la seguridad integrada de Windows para la conexión
La seguridad integrada de Windows es la forma más segura de establecer y proteger una conexión con una instancia de Analysis Services. La seguridad integrada de Windows no revela credenciales de seguridad (como el nombre de usuario o la contraseña) durante el proceso de autenticación, sino que utiliza el identificador de seguridad del proceso que se ejecuta actualmente para establecer la identidad. Para la mayoría de las aplicaciones cliente, este identificador de seguridad representa la identidad del usuario actualmente conectado.
Para utilizar la seguridad integrada de Windows, la cadena de conexión requiere la siguiente configuración:
La propiedad Integrated Security no debe establecerse o bien debe establecerse en SSPI.
[!NOTA]
La seguridad integrada de Windows solo está disponible para las conexiones TCP, ya que las conexiones HTTP deben utilizar el valor Basic para la propiedad Integrated Security.
Para la propiedad ProtectionLevel, establezca esta propiedad en Connect, Pkt Integrity o Pkt Privacy.
Proteger las conexiones HTTP
HTTPS y SSL (Capa de sockets seguros) se pueden utilizar para proteger las comunicaciones HTTP con un origen de datos analíticos externamente.
Dado que un proveedor XMLA solamente utiliza HTTP seguro, una conexión HTTP en ADOMD.NET debe ser una conexión firmada, como se muestra en la tabla siguiente.
Valor de ProtectionLevel |
Usar con HTTP o HTTPS |
---|---|
None |
No |
Connect |
HTTP |
Pkt Integrity o PktIntegrity |
No |
Pkt Privacy o PktPrivacy |
HTTPS |
Abrir una conexión HTTP segura
En el ejemplo siguiente se muestra cómo utilizar ADOMD.NET para abrir una conexión HTTP para la base de datos de ejemplo AdventureWorksAS de 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