ODBC 连接如何加密?

信息安全 加密 数据库 跨平台
2021-09-11 18:17:15

大多数关于 ODBC 的讨论都以 Microsoft 为中心,但该协议通常用于异构环境中,例如 Windows 客户端连接到 *nix 服务器上的数据库。虽然我的问题是开放式的,但我对异构场景最感兴趣。

在研究特定用例时,我惊讶地发现驱动程序中几乎没有加密特定控件。有一个复选框可以打开加密,但我找不到有关控制使用的算法或指定/提供证书的文档。红灯开始闪烁。“它使用 TLS 1.2 还是旧版本?” “有相互认证吗?” “证书是否经过验证或自签名证书是否受信任?” “使用什么证书?” 对,就是这样...

我找到了一些关于它如何在 Microsoft 环境中运行的信息。 即使这些信息也不完全令人满意,但协议本身或 *nix 世界的特定驱动程序的文档似乎几乎完全缺乏。

1个回答

这取决于 ODBC 驱动程序。如果驱动程序有内部加密,您可以激活它。但是,它也取决于后端数据库。ODBC 可用于连接到 SQL Server 以外的数据库。例如,在 Oracle 的 DB 客户端之上编写的本机 Oracle ODBC 驱动程序可以在连接时使用 oracle 网络安全性。其他 ODBC 驱动程序可能不使用或不具有本机安全性。

编辑澄清

ODBC -开放式数据库连接- 是程序中的 API(库),它不是网络协议。有驱动程序管理器,它链接到程序中,然后有驱动程序连接到动态加载(经常)或静态链接(不经常)到程序中的各种数据库。

该程序可以与数据库存在于同一台机器上(并使用进程间通信),也可以远程存在于另一台机器上(并使用网络通信)。由于没有用于访问每种类型数据库的通用网络协议,因此每个驱动程序都有自己的网络协议,如果它具有网络能力的话。例如,在 ODBC/Oracle 的情况下,将有一个特定的 ODBC Oracle 驱动程序,它位于 ODBC 调用堆栈下并将 ODBC 调用转换为 SQL*Net 调用。使用 Oracle 的高级安全选项(其本机网络安全)可以保护这些调用(您的问题的重点)。

很可能,您使用的是不同的数据库。在这种情况下,您将需要一个不同的 ODBC 驱动程序,希望它具有内置的安全网络层。

几年前,我在一家专门为 Oracle、Sybase 和通用 ODBC 网络构建安全 ODBC 驱动程序的初创公司工作。对于通用 ODBC 驱动程序,我们编写了自己的客户端/服务器网络协议,该协议使用 Kerberos 和 DCE RPC 来保护网络通信,服务器端将通过另一个 ODBC 驱动程序管理器调用数据库。