Wallet (mTLS)を使用したPythonアプリケーションの接続
PythonアプリケーションをAutonomous Databaseインスタンス「ウォレット」に接続できます。
python-oracledbドライバのデフォルトの「Thin mode」はOracle Databaseに直接接続します。 ドライバはオプションで、追加機能のためにOracle Clientライブラリ「Thick mode」を使用できます。 Oracle Clientライブラリは、Oracle Instant Client、完全なOracle Client、またはOracle Databaseインストールから入手できます。
ウォレット(mTLS)を使用してPythonアプリケーションをAutonomous Databaseインスタンスに接続するには、次のステップに従います:
- Pythonおよびpython-oracledbドライバのインストール
- セキュリティ資格証明の取得(Oracle Wallet)およびネットワーク接続の有効化
- シン・モードでのみ接続する場合は、このステップを実行: Wallet (mTLS)を使用したpython-oracledbシン・モードでのPythonアプリケーションの実行
- 厚みモードで接続する場合は、このステップを実行: Wallet (mTLS)を使用したpython-oracledbシック・モードでのPythonアプリケーションの実行
トピック
セキュリティ資格証明の取得(Oracle Wallet)およびネットワーク接続の有効化
Autonomous Databaseインスタンスに接続するために、クライアント・セキュリティ資格証明を取得します。
Wallet (mTLS)を使用したpython-oracledbシン・モードでのPythonアプリケーションの実行
デフォルトでは、python-oracledbはシン・モードを使用してAutonomous Databaseインスタンスに直接接続します。
シン・モードでは、ウォレットzipの2つのファイルのみが必要です:
-
tnsnames.ora: アプリケーション接続文字列に使用されるネット・サービス名をデータベース・サービスにマップします。 -
ewallet.pem: シン・モードでSSL/TLS接続を有効にします。
Thinモードで接続するには:
ファイアウォールの内側にいる場合は、接続記述子でHTTPS_PROXYを使用するか、接続属性を設定して、プロキシを介してTLS/SSL接続をトンネリングできます。 正常に接続できるかどうかは、特定のプロキシ構成によって決まります。 パフォーマンスに影響する可能性があるため、Oracleでは本番環境でプロキシを使用することはお薦めしません。
シン・モードでは、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)
Wallet (mTLS)を使用したpython-oracledbシック・モードでのPythonアプリケーションの実行
ノート:
Thickモードでは、Pythonを実行する場所にOracle Clientライブラリがインストールされている必要があります。 Pythonコードでoracledb.init_oracle_client()をコールする必要もあります。
Thickモードでは、ウォレットzipファイルの次の3つのファイルが必要です:
-
tnsnames.ora: アプリケーション接続文字列に使用されるネット・サービス名を含み、文字列をデータベース・サービスにマップします。 -
sqlnet.ora: SQL*Netクライアント側の構成を指定します。 cwallet.sso: 自動オープンSSOウォレットが含まれます。
Thickモードで接続するには:
ファイアウォールの内側にいる場合は、接続記述子でHTTPS_PROXYを使用するか、接続属性を設定して、プロキシを介してTLS/SSL接続をトンネリングできます。 正常に接続できるかどうかは、特定のプロキシ構成によって決まります。 パフォーマンスに影響する可能性があるため、Oracleでは本番環境でプロキシを使用することはお薦めしません。
厚みモードでは、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=...)
厚みモードの詳細は、「python-oracledb Thickモードの有効化」を参照してください。