A カスタム・データベース・プロバイダ

この項では、SQL*Plusクライアント用のカスタム・データベース・プロバイダ(ora-custom-db-provider)をインストールし、Yubikey OTPをサポートするように構成する方法について説明します。

現在、Oracle DBでは、SQL*PlusクライアントからのYubikey OTP (44chars)はRADIUSサーバーでのマルチファクタ認証を有効にできません。この制限を克服するために、SQLPlusクライアントにインストールできるカスタムUI実装が提供されています。カスタムUI実装は、Yubikey OTPを含むマルチファクタ認証をサポートしています。

カスタム・データベース・プロバイダのUI jarファイルora-custom-db-provider-1.0.0.jarは、idm-radius dockerイメージにパッケージ化されており、次の場所のdockerコンテナからコピーできます:
/u01/oracle/ora-custom-db-provider

カスタムUI実装の使用を開始するには、SQL *Plusクライアントに対して次のタスクを実行します:

  1. 次の設定でsqlnet.oraファイルを更新する必要があります。sqlnet.oraファイルは、ORACLE_HOME/network/admin/sqlnet.oraに存在します。Oracle Net Managerを使用することをお薦めします。詳細は、OracleクライアントでのRADIUSの構成に関する項を参照してください
    SQLNET.RADIUS_AUTHENTICATION_INTERFACE = oracle/idm/radius/dbprovider/CustomRadiusInterface
    SQLNET.RADIUS_CLASSPATH = <LIB_FOLDER>/ora-custom-db-provider-1.0.0.jar:<ORACLE_HOME>/network/jlib/netradius8.jar:<LIB_FOLDER>/aopalliance-repackaged-2.6.1.jar:<LIB_FOLDER>/hk2-api-2.6.1.jar:<LIB_FOLDER>/hk2-locator-2.6.1.jar:<LIB_FOLDER>/hk2-utils-2.6.1.jar:<LIB_FOLDER>/jackson-annotations-2.10.1.jar:<LIB_FOLDER>/jackson-core-2.10.1.jar:<LIB_FOLDER>/jackson-databind-2.10.1.jar:<LIB_FOLDER>/jackson-module-jaxb-annotations-2.10.1.jar:<LIB_FOLDER>/jakarta.activation-1.2.2.jar:<LIB_FOLDER>/jakarta.activation-api-1.2.1.jar:<LIB_FOLDER>/jakarta.annotation-api-1.3.5.jar:<LIB_FOLDER>/jakarta.inject-2.6.1.jar:<LIB_FOLDER>/jakarta.ws.rs-api-2.1.6.jar:<LIB_FOLDER>/jakarta.xml.bind-api-2.3.2.jar:<LIB_FOLDER>/javassist-3.25.0-GA.jar:<LIB_FOLDER>/jersey-client-2.32.jar:<LIB_FOLDER>/jersey-common-2.32.jar:<LIB_FOLDER>/jersey-entity-filtering-2.32.jar:<LIB_FOLDER>/jersey-hk2-2.32.jar:<LIB_FOLDER>/jersey-media-json-jackson-2.32.jar:<LIB_FOLDER>/osgi-resource-locator-1.0.3.jar:<ORACLE_HOME>/network/jlib:<ORACLE_HOME>/jdk/jre/lib:<ORACLE_HOME>/lib:<ORACLE_HOME>/jdk/jre/lib/amd64:<ORACLE_HOME>/jdk/jre/lib/amd64/server/

    前述のすべての必須jarをファイル・システムのフォルダ(LIB_FOLDER)にコピーできます。前述の設定で絶対パスを指定する必要があります。

  2. カスタムUIでパスワードとOTPを接続および検証するには、RADIUS Server HostRADIUS Server HTTPS PortDB Server Hostなどの必須パラメータを構成する必要があります。config.propertiesファイルを使用して必須パラメータを構成できます。デフォルトでは、config.propertiesファイルはUSER.HOME (user.homeシステム・プロパティ)で検索されます。
    この場所は、ENV変数: IRA_CONFIG_PATHを定義することで上書きできます。次に例を示します
    export IRA_CONFIG_PATH=/home/opc/uiconfig
    ここでは、前述のパスでconfig.propertiesファイルが検索されます。

    ノート:

    RADIUSサーバーとデータベース・サーバーのホスト名別名を定義し、RADIUSサーバーで使用されるデフォルトのHTTPSポートが8080の場合、config.propertiesファイルを使用する必要はありません。

config.propertiesファイルのパラメータ

config.propertiesファイル内のパラメータは次のとおりです:

  • RADIUS_HOST

    接続先のRADIUSサーバーのIPアドレスを表します。ora-radius-serverという名前でホスト名別名が定義されている場合は、デフォルトでそれがRADIUS_HOSTとみなされます。それ以外の場合は、config.propertiesファイル内のRADIUS_HOSTの値が考慮されます。

  • RADIUS_HTTPS_PORT

    接続先のRADIUSサーバーのHTTPSポートを表します。デフォルトでは、8080が使用されます。RADIUSサーバーで別のHTTPSポートを使用する場合は、config.propertiesファイルにこのパラメータを定義する必要があります。

  • DB_SERVER_HOST

    DBサーバーのIPアドレスを表します。db-serverという名前でホスト名別名が定義されている場合は、デフォルトでそれがDB_SERVER_HOSTとみなされます。それ以外の場合は、config.propertiesファイル内のDB_SERVER_HOSTの値が考慮されます。

config.propertiesファイル・パラメータのサンプル値

config.propertiesファイル内のパラメータのサンプル値は次のとおりです:

db-serverというホスト名別名が定義されている場合、DB_SERVER_HOSTを構成する必要はありません。
DB_SERVER_HOST=1.1.1.1 
ora-radius-serverというホスト名別名が定義されている場合、RADIUS_HOSTを構成する必要はありません。
RADIUS_HOST=2.2.2.2
RADIUSサーバーで使用されるデフォルトのHTTPSポートが8080の場合、RADIUS_HTTPS_PORTを構成する必要はありません。
RADIUS_HTTPS_PORT=8090

トラブルシューティング

基本的なロギング機能は、SQL*Plusクライアントからの接続中に問題が発生した場合にロギングのオン/オフのみを行う機能を提供します。必要に応じて、config.propertiesファイルで次のプロパティを構成できます。

ロギングを有効にするには、次のプロパティを設定します:

ENABLE_LOG=true
デフォルトでは、ora-custom-mfa.logはシステム・プロパティuser.dirの下に作成されます。この場所は、次のプロパティを定義することでカスタマイズできます:
LOG_FILE_LOCATION=path_where_logfile_should_be_created
custom-db-providerがRADIUSサーバーに接続できずにタイムアウトが発生する場合は、次の2つのプロパティを構成します:
  • CONNECT_TIMEOUT: タイムアウトの前にクライアントがRADIUSサーバーへの接続を待機する時間をミリ秒単位で表します。デフォルト値は60000ms (1分)です。

  • READ_TIMEOUT: タイムアウトの前にクライアントがサーバーの応答を待機する時間をミリ秒単位で表します。デフォルト値は60000ms (1分)です。