使用 mTLS 连接 Python 应用程序
适用于: 仅适用于 Exadata Cloud@Customer
您可以使用 mTLS 将 Python 应用连接到 Autonomous Database 实例。
python-oracledb 驱动程序的默认“瘦模式”直接连接到 Oracle Database。驱动程序可以选择使用 Oracle Client 库 "Thick mode"(厚模式)来获得一些附加功能。Oracle 客户机库可以来自 Oracle Instant Client、完整的 Oracle Client 或 Oracle Database 安装。
按照以下步骤使用 mTLS 将 Python 应用连接到 Autonomous Database 实例:
- 安装 Python 和 python-oracledb 驱动程序
- 获取安全身份证明 (Oracle Wallet) 并启用网络连接
- 如果只想以瘦模式连接,请执行此步骤:使用 python-oracledb 瘦模式 (mTLS) 运行 Python 应用程序
- 如果要以厚模式连接,请执行此步骤:使用 python-oracledb 厚模式 (mTLS) 运行 Python 应用程序
安装 Python 和 python-oracledb 驱动程序
要从 Python 应用程序连接到 Autonomous Database ,请安装 Python 和 python-oracledb 驱动程序。
使用 python-oracledb 瘦模式 (mTLS) 运行 Python 应用程序
默认情况下,python-oracledb 使用瘦模式直接连接到 Autonomous Database 实例。
在瘦模式下,只需要钱包 zip 中的两个文件:
-
tnsnames.ora
:将用于应用程序连接字符串的网络服务名映射到数据库服务。 -
ewallet.pem
:在瘦模式下启用 SSL/TLS 连接。
要以瘦模式连接:
如果您位于防火墙后面,则可以使用连接描述符中的 HTTPS_PROXY 或通过设置连接属性通过代理隧道 TLS/SSL 连接。成功连接取决于特定的代理配置。由于可能对性能产生影响,Oracle 不建议在生产环境中使用代理。有关详细信息,请参阅 Oracle Database 19c Database Net Services Reference 或 Oracle Database 23ai Database Net Services Reference 中的 HTTPS_PROXY 。
在瘦模式下,可以通过添加 https_proxy
和 http_proxy_port
参数来指定代理。
例如,在 Linux 上:
connection=oracledb.connect(
config_dir="/opt/OracleCloud/MYDB",
user="admin",
password=password,
dsn="db2024_low",
wallet_location="/opt/OracleCloud/MYDB",
wallet_password=wallet_pw,
https_proxy='myproxy.example.com',
https_proxy_port=80)
例如,在 Windows 上:
connection=oracledb.connect(
config_dir=r"C:\opt\OracleCloud\MYDB",
user="admin",
password=password,
dsn="db2024_low",
wallet_location=r"C:\opt\OracleCloud\MYDB",
wallet_password=wallet_pw,
https_proxy='myproxy.example.com',
https_proxy_port=80)
使用 python-oracledb Thick Mode (mTLS) 运行 Python 应用程序
注意:
厚模式要求在运行 Python 的位置安装 Oracle 客户端库。您还必须在 Python 代码中调用oracledb.init_oracle_client()
。
在厚模式下,需要从 wallet zip 文件中获取以下三个文件:
-
tnsnames.ora
:包含用于应用程序连接字符串的网络服务名,并将字符串映射到数据库服务。 -
sqlnet.ora
:指定 SQL*Net 客户端配置。 cwallet.sso
:包含自动打开的 SSO wallet。
要在“厚”模式下连接,请执行以下操作:
如果您位于防火墙后面,则可以使用连接描述符中的 HTTPS_PROXY 或通过设置连接属性通过代理隧道 TLS/SSL 连接。成功连接取决于特定的代理配置。由于可能对性能产生影响,Oracle 不建议在生产环境中使用代理。有关详细信息,请参阅 Oracle Database 19c Database Net Services Reference 或 Oracle Database 23ai Database Net Services Reference 中的 HTTPS_PROXY 。
在“厚”模式下,可以通过编辑 sqlnet.ora
文件并添加行来指定代理:
SQLNET.USE_HTTPS_PROXY=on
此外,编辑 tnsnames.ora
并将 HTTPS_PROXY
代理名和 HTTPS_PROXY_PORT
端口添加到您计划使用的任何服务名的连接描述符地址列表中。
例如:
mydb_high=(description=
(address=(https_proxy=myproxy.example.com)
(https_proxy_port=80)
(protocol=tcps)(port=1522)(host=...)
有关 Thick 模式的信息,请参见 Enabling python-oracledb Thick mode 。