我一直在使用 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合并到此代码中?还是应该完全使用其他库?
答案 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;
添加到参数列表即可。