Python DB2 SSL connection



我一直在使用ibm_db&ibm_db_dbi与panda。然而,我们公司实施了新的安全标准,我也需要一种方法来保护连接。运行Python3.7DB210.5

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

import ibm_db
import ibm_db_dbi
import pandas as pd
driver = 'IBM DB2 ODBC DRIVER'
database = 'DB0001'
hostname = 'my.host.com'
port = '1234'
protocol = 'TCPIP'
uid = 'user'
pwd = 'password'
security = 'SSL'
dsn = (
f'DRIVER={driver};'
f'DATABASE={database};'
f'HOSTNAME={hostname};'
f'PORT={port};'
f'PROTOCOL={protocol};'
f'UID={uid};'
f'PWD={pwd};'
f'SECURITY={security};'
)
test_query = 'SELECT 1 FROM SYSIBM.SYSDUMMY1'
conn_engine = ibm_db.connect(dsn, '', '')
db_conn = ibm_db_dbi.Connection(conn_engine)
df = pd.read_sql(test_query, db_conn)

有没有任何方法可以将SSL用于此代码?

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

如果你使用的是Db2 10.5 Fixpack 5(或更新版本(客户端,那么你只需要在DSN字符串中添加几个参数:

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

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

如果您将Db2客户端与python ibm_db包分开安装,则根据您安装的Db2客户端(即为ibm_db提供本机库(,可能需要安装一些其他库(ibm GSKit库,为Db2客户端提供SSL功能(。

尝试设置以下属性:

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

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

相关内容

最新更新