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

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

python-oracledbドライバのデフォルトのThinモードは、Oracle Databaseに直接接続されます。オプションで、いくつかの追加機能のためにOracle Clientライブラリ「Thick mode」を使用できます。Oracle Clientライブラリは、Oracle Instant Client、フルOracle Client、またはOracle Databaseインストールから取得できます。

ウォレットを使用せずに(TLS)、Autonomous DatabaseインスタンスにPythonアプリケーションを接続するには、次のステップを実行します:

  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の説明が続きます

    インスタンスに相互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. アプリケーションで使用するデータベース・サービスの接続文字列をコピーします。
    詳細については、View TNS Names and Connection Strings for an Autonomous Database Instanceを参照してください。

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=1522)(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=1522)(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)