Search code examples
pythonpandasssldb2keystore

Python DB2 SSL connection


I have been running SQL queries (client side) from DB2 databases using ibm_db & ibm_db_dbi with pandas. However our company implemented new security standards and I would need a way to secure the connection as well. Running Python3.7 and DB2 10.5

Below is my current connection string:

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)

Is there any way to incorporate SSL for this code?


Solution

  • Try to set the following properties:

    Security=SSL, SSLClientKeystoredb, SSLClientKeystoreDBPassword or SSLClientKeystash as described at the link.