4.2.2.5.5 Autonomous AI Databaseへのセキュアな接続のためのOracleウォレットの構成

Oracleウォレットは、Oracle Autonomous AI Databaseに安全に接続するのに必要な認証資格証明(SSL証明書や秘密キーなど)の格納に使用されるセキュアなソフトウェア・コンテナです。適切なウォレット構成により、アプリケーション(Oracle Machine Learning for Python (OML4Py)を使用するアプリケーションなど)は、強力なデータ暗号化および認証を使用してAutonomous AI Databaseインスタンスに接続できます。

次のステップでは、Autonomous AI Databaseに安全に接続するようにOracleウォレットを構成する方法について概説します:

  1. Oracleウォレットのダウンロード
    1. Oracle Cloudコンソールにログインします。
    2. 「Autonomous AI Database」に移動し、ターゲット・データベース・インスタンスを選択します。
    3. 「DB接続」をクリックします
    4. 「ウォレットのダウンロード」をクリックします。
    5. 安全に格納するためにウォレット・パスワードを設定し、「ダウンロード」をクリックします。
    6. ZIPファイル(Wallet_<db_name>.zip)をクライアント・マシン上のセキュアな場所に保存します。
  2. ウォレット・ファイルの抽出および保護
    ダウンロードしたウォレット・ファイルをセキュアなディレクトリ(mywalletdirなど)に解凍します。
    mkdir -p mywalletdir
    unzip Wallet_<db_name>.zip -d mywalletdir
    cd mywalletdir/
    ls
    README ewallet.p12 ojdbc.properties tnsnames.ora cwallet.sso 
    keystore.jks sqlnet.ora truststore.jks
  3. sqlnet.oraファイルを更新して、ウォレットの場所を指定します。環境でプロキシ・ファイアウォールを使用している場合は、SQLNET.USE_HTTPS_PROXYパラメータの値をonに設定してを有効にします。
    WALLET_LOCATION = (SOURCE = (METHOD = file) (METHOD_DATA = (DIRECTORY="mywalletdir")))
    SSL_SERVER_DN_MATCH=yes
    SQLNET.USE_HTTPS_PROXY=on
  4. ファイアウォールの内側で作業している場合は、tnsnames.oraで各サービス・レベルにプロキシ・アドレスおよびポート番号を追加します。さらに、すべてのサービス・レベルの接続プール・エントリを含めます。また、次に示すように、AutoML接続プール専用の新しいエントリを3つ作成する必要があります。

    ノート:

    設定した期間内に接続を終了するファイアウォールがプロキシ・サーバーに含まれている場合、データベース接続も終了します。

    たとえば、myadb_medium_poolは、SERVER=POOLEDmyadb_mediumの対応する別名に追加された接続文字列の別の別名です。

    • myadb_mediumの場合:
      • myadb_low = (description= (retry_count=20)(retry_delay=3)(address=(https_proxy=your proxy
              address here)(https_proxy_port=80)(protocol=tcps)(port=1522)(host=adb.us-sanjose-1.oraclecloud.com))(connect_data=(service_name=qtraya2braestch_myadb_medium.adb.oraclecloud.com))(security=(ssl_server_cert_dn="CN=adb.us-sanjose-1.oraclecloud.com,OU=Oracle
              ADB SANJOSE,O=Oracle Corporation,L=Redwood City,ST=California,C=US")))
      • myadb_medium = (description= (retry_count=20)(retry_delay=3)(address=(https_proxy=your proxy
              address here)(https_proxy_port=80)(protocol=tcps)(port=1522)(host=adb.us-sanjose-1.oraclecloud.com))(connect_data=(service_name=qtraya2braestch_myadb_medium.adb.oraclecloud.com))(security=(ssl_server_cert_dn="CN=adb.us-sanjose-1.oraclecloud.com,OU=Oracle
              ADB SANJOSE,O=Oracle Corporation,L=Redwood City,ST=California,C=US")))
      • myadb_high = (description= (retry_count=20)(retry_delay=3)(address=(https_proxy=your proxy
              address here)(https_proxy_port=80)(protocol=tcps)(port=1522)(host=adb.us-sanjose-1.oraclecloud.com))(connect_data=(service_name=qtraya2braestch_myadb_medium.adb.oraclecloud.com))(security=(ssl_server_cert_dn="CN=adb.us-sanjose-1.oraclecloud.com,OU=Oracle
              ADB SANJOSE,O=Oracle Corporation,L=Redwood City,ST=California,C=US")))
    • myadb_medium_poolの場合:
      • myadb_low_pool = (description= (retry_count=20)(retry_delay=3)(address=(https_proxy=your
              proxy address here)(https_proxy_port=80)(protocol=tcps)(port=1522)(host=adb.us-sanjose-1.oraclecloud.com))(connect_data=(service_name=qtraya2braestch_myadb_medium.adb.oraclecloud.com)(SERVER=POOLED))(security=(ssl_server_cert_dn="CN=adb.us-sanjose-1.oraclecloud.com,OU=Oracle
              ADB SANJOSE,O=Oracle Corporation,L=Redwood City,ST=California,C=US")))
      • myadb_medium_pool = (description= (retry_count=20)(retry_delay=3)(address=(https_proxy=your
              proxy address here)(https_proxy_port=80)(protocol=tcps)(port=1522)(host=adb.us-sanjose-1.oraclecloud.com))(connect_data=(service_name=qtraya2braestch_myadb_medium.adb.oraclecloud.com)(SERVER=POOLED))(security=(ssl_server_cert_dn="CN=adb.us-sanjose-1.oraclecloud.com,OU=Oracle
              ADB SANJOSE,O=Oracle Corporation,L=Redwood City,ST=California,C=US")))
      • myadb_high_pool = (description= (retry_count=20)(retry_delay=3)(address=(https_proxy=your
              proxy address here)(https_proxy_port=80)(protocol=tcps)(port=1522)(host=adb.us-sanjose-1.oraclecloud.com))(connect_data=(service_name=qtraya2braestch_myadb_medium.adb.oraclecloud.com)(SERVER=POOLED))(security=(ssl_server_cert_dn="CN=adb.us-sanjose-1.oraclecloud.com,OU=Oracle
              ADB SANJOSE,O=Oracle Corporation,L=Redwood City,ST=California,C=US")))
  5. Windows GUIでのTNS_ADMIN環境変数の設定

    クライアント・アプリケーションでウォレットを見つけて使用できるようにするには、TNS_ADMIN環境変数を設定します:

    TNS_ADMIN: ウォレットおよびネットワーク構成ファイル(tnsnames.orasqlnet.oraなど)が格納されているディレクトリへのパス

    1. 「スタート」メニューのオープン

      画面の左下隅にあるWindowsの「スタート」ボタンをクリックします。

    2. システム・プロパティへのアクセス

      • 検索ボックスに、次のように入力します:
        environment variables
      • 検索結果から「システム環境変数の編集」を選択します。
    3. 「環境変数」ウィンドウのオープン

      「システムのプロパティ」ウィンドウで、「環境変数...」ボタン(通常は下部近く)をクリックします。

    4. TNS_ADMIN変数の追加または編集

      • 「ユーザー環境変数」セクション(ユーザーのみに設定する場合)または「システム環境変数」(システム全体に設定する場合)で、「新規…」をクリックします。
      • 「変数名」に、TNS_ADMINと入力します。
      • 「変数値」に、Oracleウォレット・ディレクトリへのフルパス(C:\Users\yourname\walletなど)を入力します。
      TNS_ADMINがすでに存在する場合は、かわりにそれを選択して「編集...」をクリックし、値を更新します。
    5. 適用およびクローズ

      • 新規または編集のダイアログで「OK」をクリックします。
      • 「OK」をクリックして「環境変数」ウィンドウを閉じます。
      • 「OK」を再度クリックして、「システムのプロパティ」ウィンドウを閉じます。
    6. アプリケーションの再起動

      新しい環境変数または更新された環境変数を認識させるには、開いているコマンド・プロンプトまたはアプリケーションを再起動する必要があります。

Oracle Autonomous AI Database接続の検証

Autonomous AI Database (ADB)に安全に接続できることを確認します。

  1. Pythonを起動し、omlライブラリをロードします。
    python3
    import oml
  2. セキュアなアクセスにウォレットを利用するOMLクライアントを使用してデータベース接続を確立します。dsnパラメータとautomlパラメータの両方を、ウォレット・ディレクトリ内の適切なtnsnames.ora別名に設定します:
    oml.connect(user="oml_user", password="oml_user_password", 
    dsn="myadb_medium", automl="myadb_medium_pool")

    Oracle Machine Learningのユーザー資格証明がプレーン・テキストで公開されないようにするには、接続時にuserパラメータとpasswordパラメータに空の文字列を指定します:

    oml.connect(user="", password="", dsn="myadb_medium", automl="myadb_medium_pool")