Python DB2 SSL连接

时间:2018-11-30 16:21:47

标签: python pandas ssl db2

我一直在使用 ibm_db和ibm_db_dbi 和熊猫从 DB2 数据库中运行SQL查询(客户端)。但是,我们公司实施了新的安全标准,我也需要一种方法来保护连接。 运行 Python3.7 DB2 10.5

下面是我当前的连接字符串:

import ibm_db
import ibm_db_dbi
import pandas as pd

dsn_driver = "IBM DB2 ODBC DRIVER"
dsn_database = "EUH0000"           
dsn_hostname = "MEUHC.s990.emea.ibm.com" 
dsn_port = "0000"                
dsn_protocol = "TCPIP"      
dsn_uid = "uid"        
dsn_pwd = "pwd"


dsn = (
"DRIVER={{IBM DB2 ODBC DRIVER}};"
"DATABASE={0};"
"HOSTNAME={1};"
"PORT={2};"
"PROTOCOL=TCPIP;"
"UID={3};"
"PWD={4};").format(dsn_database, dsn_hostname, dsn_port, dsn_uid, dsn_pwd)

conn = ibm_db.connect(dsn, "", "")
some_query = "SELECT *....."         # just an example

pconn = ibm_db_dbi.Connection(conn)
df = pd.read_sql(some_query, pconn)

有什么办法可以将SSL合并到此代码中?还是应该完全使用其他库?

3 个答案:

答案 0 :(得分:1)

不幸的是,这有点复杂,(希望)您的DBA可以帮助您解决其中的一些问题。

如果您使用的是Db2 10.5 Fixpack 5(或更高版本)客户端,则只需在DSN字符串中添加几个参数即可:

Security=ssl; 
SslServerCertificate=/path/to/file.arm;

您的DBA应该能够为您提供SslServerCertificate文件(或内容)。

如果您是从python ibm_db软件包中单独安装了Db2客户端,那么根据您安装的Db2客户端(即为ibm_db提供本机库,您可能需要安装)一些其他库(IBM GSKit库,为Db2客户端提供SSL功能)。

答案 1 :(得分:0)

尝试设置以下属性:

Security = SSL,SSLClientKeystoredb,SSLClientKeystoreDBPassword或SSLClientKeystash,如链接中所述。

答案 2 :(得分:0)

使用一些较新版本的 Db2 驱动程序并连接到 Db2 on Cloud 和 Db2 Warehouse on Cloud,只需将 Security=SSL; 添加到参数列表即可。