Conexiones en ADOMD.NET: establecer conexiones seguras
Cuando se usa una conexión en ADOMD.NET, el método de seguridad que se usa para la conexión depende del valor de la propiedad ProtectionLevelOpen de la cadena de conexión utilizada al llamar al método de AdomdConnection.
La propiedad ProtectionLevel ofrece cuatro niveles de seguridad: no autenticado, autenticado, firmado y cifrado. 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 |
---|---|
conexión no autenticada Una conexión no autenticada no realiza ninguna forma de autenticación. Este tipo de conexión es la forma de conexión con mayor grado de compatibilidad, pero menos segura. |
None |
conexión autenticada Una conexión autenticada realiza la autenticación del usuario que establece la conexión, pero no protege las comunicaciones adicionales. Este tipo de conexión es útil porque puede establecer la identidad del usuario o la aplicación que se conecta a un origen de datos analíticos. |
Conexión |
conexión firmada Una conexión firmada autentica al usuario que solicita la conexión y, a continuación, se asegura de que no se modifican las transmisiones. Este tipo de conexión es útil cuando debe comprobarse la autenticidad de los datos transferidos. Sin embargo, una conexión firmada solo impide que se pueda modificar el contenido del paquete de datos, pero dicho contenido se puede ver durante el tránsito. Tenga en cuenta que una conexión firmada solo es compatible con XML for Analysis proveedor proporcionado por MicrosoftSQL ServerAnalysis Services. |
Integridad de Pkt o PktIntegrity |
conexión cifrada Una conexión cifrada es el tipo de conexión predeterminada que utiliza ADOMD.NET. Este tipo de conexión autentica al usuario que solicita la conexión y, a continuación, también cifra los datos que se transmiten. Una conexión cifrada es la forma de conexión más segura que puede crearse con ADOMD.NET. El contenido del paquete de datos no se puede ver ni modificar, lo que protege los datos durante el tránsito. Una conexión cifrada solo es compatible con el proveedor XML for Analysis proporcionado por SQL ServerAnalysis Services. |
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 Conectar.
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
Para una conexión TCP, la propiedad ProtectionLevel admite los cuatro niveles de seguridad, como se muestra en la tabla siguiente.
Valor de ProtectionLevel | ¿Usar con conexión TCP? | Results |
---|---|---|
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. |
Conexión | Sí | Especifica una conexión autenticada. Se solicita una secuencia TCP al proveedor y, a continuación, el contexto de seguridad del usuario que solicita la secuencia se autentica en el servidor: si la autenticación se realiza correctamente, no se realiza ninguna otra acción. Si se produce un error en la AdomdConnection autenticación, el objeto se desconecta del origen de datos multidimensional y se produce una excepción. Una vez realizada la autenticación correctamente o con error, se elimina el contexto de seguridad utilizado para autenticar la conexión. |
Integridad de Pkt o PktIntegrity | Sí | Especifica una conexión firmada. Se solicita una secuencia TCP al proveedor y, a continuación, el contexto de seguridad del usuario que solicita la secuencia se autentica en el servidor: Si la autenticación se realiza correctamente AdomdConnection , el objeto cierra la secuencia TCP existente y abre una secuencia TCP firmada para controlar todas las solicitudes. Para autenticar cada solicitud de datos o metadatos se utiliza el contexto de seguridad empleado para abrir la conexión. Además, cada paquete se firma digitalmente para asegurarse de que la carga del paquete TCP no se ha cambiado en modo alguno. Si se produce un error en la AdomdConnection autenticación, el objeto se desconecta del origen de datos multidimensional y se produce una excepción. |
Pkt Privacy o PktPrivacy | Sí | Especifica una conexión cifrada. Tenga en cuenta que también puede especificar una conexión cifrada si no establece la propiedad ProtectionLevel en la cadena de conexión. 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: Si la autenticación se realiza correctamente AdomdConnection , el objeto cierra la secuencia TCP existente y abre una secuencia TCP cifrada para controlar todas las solicitudes. Para autenticar cada solicitud de datos o metadatos se utiliza el contexto de seguridad empleado para abrir la conexión. Además, la carga de cada paquete TCP se cifra mediante el método de cifrado de mayor nivel admitido por el proveedor y el origen de datos multidimensionales. Si se produce un error en la AdomdConnection autenticación, el objeto se desconecta del origen de datos multidimensional y se produce una excepción. |
Utilizar la seguridad integrada de Windows para la conexión
Windows seguridad integrada es la manera más segura de establecer y proteger una conexión a 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:
Para la propiedad Seguridad integrada , no establezca esta propiedad o esta propiedad en SSPI.
Nota
Windows seguridad integrada solo está disponible para las conexiones TCP porque las conexiones HTTP deben usar la configuración Básica para la propiedad Seguridad integrada.
Para la propiedad ProtectionLevel, establezca esta propiedad en Conectar, 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 |
Conexión | HTTP |
Integridad de Pkt o PktIntegrity | No |
Pkt Privacy o PktPrivacy | HTTPS |
Abrir una conexión HTTP segura
En el ejemplo siguiente se muestra cómo usar ADOMD.NET para abrir una conexión HTTP para la base de datos de ejemplo AdventureWorksAS Analysis Services datos:
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