Wallet (TLS)を使用しないPythonアプリケーションの接続

Pythonアプリケーションは、ウォレットなしでAutonomous Databaseインスタンスに接続できます。ウォレット(TLS)なしでPythonアプリケーションを接続すると、認証および暗号化のセキュリティが提供され、(ユーザー名とパスワードを指定することで)クライアント資格証明を使用してセキュリティが強制されます。

python-oracledbドライバのデフォルトのシン・モードは、Oracle Databaseに直接接続します。追加の機能のために、オプションでOracle Clientライブラリ「Thick mode」を使用できます。Oracle Clientライブラリは、Oracle Instant Client、完全なOracle Client、またはOracle Databaseインストールから入手できます。

次のステップに従って、Pythonアプリケーションをウォレット(TLS)なしでAutonomous Databaseインスタンスに接続します:

  1. Pythonおよびpython-oracledbドライバのインストール

  2. Autonomous DatabaseでのTLSの有効化および接続文字列の取得

  3. Walletを使用しないPythonアプリケーションの実行

Thickモードの詳細は、「python-oracledb Thickモードの有効化」を参照してください。

トピック

Autonomous DatabaseでのTLSの有効化および接続文字列の取得

ウォレットなしでPythonアプリケーションを実行するには、TLS接続のAutonomous Databaseインスタンスを有効にし、Pythonアプリケーションからデータベースに接続するための接続文字列を取得します。
  1. Autonomous DatabaseインスタンスがTLS接続に対して有効になっているかどうかを確認します。

    インスタンスでTLS接続が有効になっている場合、Oracle Cloud Infrastructure Consoleの「ネットワーク」領域で、「相互TLS (mTLS)認証」フィールドに「不要」と表示されます:

    adb_mutual_tls_not_required.pngの説明が続きます
    図adb_mutual_tls_not_required.pngの説明

    インスタンスで相互TLS認証が必要な場合は、Autonomous DatabaseインスタンスでTLS接続を許可します。詳細は、TLSとmTLS認証の両方を許可するためのAutonomous Databaseインスタンスの更新に関する項を参照してください。

  2. 次のように、データベースにアクセスするためのAutonomous Databaseサービス接続文字列を取得します:
    1. Oracle Cloud Infrastructure Consoleで、「データベース接続」をクリックします。
    2. 「データベース接続」ダイアログ・ボックスの「TLS」を選択し、「接続文字列」「TLS認証」ドロップダウン・リストで選択します。
      ノート

      接続文字列をコピーする前に、「TLS認証」ドロップダウンで「TLS」を選択してTLS接続文字列を取得する必要があります(値が「相互TLS」の場合、接続文字列には異なる値があり、TLS接続では機能しません)。
    3. アプリケーションで使用するデータベース・サービスの接続文字列をコピーします。

Walletを使用しないPythonアプリケーションの実行

Pythonアプリケーションは、データベース資格証明および接続記述子を使用して、ウォレット(TLS)なしでAutonomous Databaseインスタンスに接続できます。

  1. 「Autonomous DatabaseでのTLSの有効化および接続文字列の取得」の説明に従って、接続文字列を取得します。
  2. Pythonアプリケーションで、次の接続パラメータを設定してAutonomous Databaseインスタンスに接続します:
    • dsn: 接続文字列を使用して、目的のデータベース・サービス名を指定します。
    • password: データベース・ユーザー・パスワードを指定します。
    • user: データベース・ユーザーを指定します。

    たとえば:

    cs='''(description = (retry_count=20)(retry_delay=3)(address=(protocol=tcps)
         (port=1521)(host=xxx.oraclecloud.com))
         (connect_data=(service_name=xxx.adb.oraclecloud.com))
         (security=(ssl_server_dn_match=yes)))'''
    
    connection=oracledb.connect(
         user="admin",
         password=password,
         dsn=cs)
  3. Thickモードで接続する場合は、Pythonアプリケーションにoracledb.init_oracle_client()を含めます。

    たとえば:

    cs='''(description = (retry_count=20)(retry_delay=3)(address=(protocol=tcps)
         (port=1521)(host=xxx.oraclecloud.com))
         (connect_data=(service_name=xxx.adb.oraclecloud.com))
         (security=(ssl_server_dn_match=yes)))'''
    
    oracledb.init_oracle_client()
    connection=oracledb.connect(
         user="admin",
         password=password,
         dsn=cs)