¿Cómo se encripta una conexión ODBC?

4

La mayoría de las conversaciones sobre ODBC están centradas en Microsoft, pero el protocolo se usa a menudo en entornos heterogéneos, como un cliente de Windows que se conecta a una base de datos en un servidor * nix. Si bien mi pregunta está abierta, estoy más interesado en el escenario heterogéneo.

Al investigar un caso de uso específico, me sorprendió no encontrar casi ningún control específico de cifrado en los controladores. Había una casilla de verificación para activar el cifrado, pero no pude encontrar ninguna documentación sobre cómo controlar los algoritmos utilizados o especificar / proporcionar certificados. Las luces rojas empezaron a parpadear. "¿Utiliza TLS 1.2, o una versión anterior?" "¿Hay autenticación mutua?" "¿Se validan los certificados o se confía en certificados autofirmados?" "¿Qué certificados se utilizan?" Sí, así ...

Encontré información sobre cómo funciona esto en un entorno de Microsoft. Incluso esta información no fue del todo satisfactoria, pero parece faltar casi por completo la documentación del protocolo en sí o de los controladores específicos del mundo * nix.

    
pregunta JaimeCastells 10.11.2015 - 22:52
fuente

1 respuesta

6

Depende del controlador ODBC. Si el controlador tiene criptografía interna, puede activarlo. Sin embargo, también depende de la base de datos backend. Se puede usar ODBC para conectarse a bases de datos distintas del servidor SQL. Por ejemplo, un controlador Oracle ODBC nativo escrito en la parte superior del cliente DB de Oracle puede usar la seguridad de red de Oracle al conectarse. Es posible que otros controladores ODBC no usen o tengan seguridad nativa.

EDITAR para aclarar

ODBC - Conectividad abierta de bases de datos : es una API (biblioteca) dentro de un programa, no es un protocolo de red. Existe el Administrador de controladores, que es lo que está vinculado al programa y luego hay Controladores que se conectan a varias bases de datos que se cargan dinámicamente (a menudo) o están vinculadas estáticamente (con poca frecuencia) en el programa.

El programa puede existir en la misma máquina que la base de datos (y usar la comunicación entre procesos) o de forma remota en otra máquina (y usar la comunicación de red). Como no hay un protocolo de red universal para acceder a cada tipo de base de datos, cada controlador tiene su propio protocolo de red, si es capaz de la red. Por ejemplo, en el caso de ODBC / Oracle, habría un controlador de Oracle ODBC específico que se inserta debajo de la pila de llamadas ODBC y convierte las llamadas ODBC en llamadas de SQL * Net. Esas llamadas pueden ser seguras (el punto de su pregunta) usando la opción de seguridad avanzada de Oracle (su seguridad de red nativa).

Es probable que estés usando una base de datos diferente. En ese caso, necesitará un controlador ODBC diferente que, con suerte, tenga una capa de red segura integrada.

Hace años, trabajé para una startup especializada en la creación de controladores ODBC seguros para redes Oracle, Sybase y ODBC genéricas. Para el controlador ODBC genérico, escribimos nuestro propio protocolo de red cliente / servidor que usaba Kerberos y DCE RPC para asegurar las comunicaciones de red y el lado del servidor llamaría a la base de datos a través de otro Administrador de controladores ODBC.

    
respondido por el Andrew Philips 11.11.2015 - 06:50
fuente

Lea otras preguntas en las etiquetas