27 RADIUS認証の構成

RADIUSは、リモート認証およびアクセスを実現するために広く使用されているクライアント/サーバー・セキュリティ・プロトコルです。

27.1 RADIUS認証の構成について

Oracle Databaseでは、ユーザー認証にRADIUS標準がサポートされています。

ノート:

Oracle Database 23c以降、Request for Comments (RFC) 2138に基づいた古いRADIUS APIは非推奨です。

Oracle Database 23cでは、RFC 6613およびRFC 6614に基づいた更新済のRADIUS APIが導入されています。新しいRADIUS APIをできるだけ早く使用するために移行の計画を開始することをお薦めします。新しいAPIはデフォルトで有効になっています。古いRADIUS APIに関連付けられたパラメータSQLNET.RADIUS_ALTERNATESQLNET.RADIUS_ALTERNATE_PORTSQLNET.RADIUS_AUTHENTICATIONおよびSQLNET.RADIUS_AUTHENTICATION_PORTも非推奨です。古いRADIUS APIを使用するようにデフォルトを変更する方法の詳細は、RADIUS APIのドキュメントを参照してください。

RADIUSは、Oracleデータベースへのアクセスに使用される場合、マルチファクタ認証(MFA)によく使用されます。特定のMFAテクノロジ(スマート・カードやバイオメトリック・カードなど)は、RADIUSサーバーによって決まります。データベース・サーバーおよびクライアントは、MFAの非同期および同期の課題に対応しています。

Oracle Database RADIUS実装では、RFC 6013および6014で記述されているTLS/TCPS標準を使用し、Oracleデータベースによってデフォルトで有効になっています。古いRADIUS標準を使用して(Oracle Databaseリリース23cより前の)古い実装を使用する場合は、古いRADIUS実装を使用するために、 SQLNET.RADIUS_ALLOW_WEAK_CLIENTSパラメータとSQLNET.RADIUS_ALLOW_WEAK_PROTOCOLパラメータの一方または両方を有効する必要があります。

エンド・ユーザーから見ると、認証手続き全体は透過的です。ユーザーがOracleデータベース・サーバーにアクセスしようとすると、RADIUSクライアントとして機能するOracleデータベース・サーバーはRADIUSサーバーに通知します。RADIUSサーバーは次の処理を行います。

  • ユーザーのセキュリティ情報を検索します。

  • 適切な認証サーバー(複数可)とOracleデータベース・サーバーの間で認証および認可情報の受渡しを行います。

  • Oracleデータベース・サーバーへのユーザー・アクセスを許可します。

  • ユーザーがいつ、どのくらいの頻度で、どのくらいの時間、Oracleデータベース・サーバーに接続していたかなどのセッション情報をログに記録します。

    ノート:

    Oracle Databaseでは、データベース・リンクを介したRADIUS認証はサポートされません。

    RADIUSを使用するようにOracle Databaseを構成するには、sqlnet.oraファイルのパラメータを変更します。sqlnet.oraでの設定は、すべてのプラガブル・データベース(PDB)に適用されます。

図27-1に、Oracle Database-RADIUS環境を示します。

図27-1 Oracle環境でのRADIUS

図27-1の説明が続きます
「図27-1 Oracle環境でのRADIUS」の説明

Oracle DatabaseサーバーはRADIUSクライアントとして機能し、OracleクライアントとRADIUSサーバーの間で情報の受渡しを行います。同様に、RADIUSサーバーはOracleデータベース・サーバーと適切な認証サーバーの間で情報の受渡しを行います。

RADIUSサーバーのベンダーが認証サーバーのベンダーでもある場合も多くあります。この場合、RADIUSサーバーで認証を処理できます。

27.2 RADIUSの構成要素

RADIUSには、構成設定を管理できる一連の認証の構成要素があります。

表27-1に、認証の構成要素を示します。

表27-1 RADIUS認証の構成要素

構成要素 格納される情報

Oracleクライアント

RADIUSによる通信のための構成設定

Oracleデータベース・サーバー/RADIUSクライアント

OracleクライアントとRADIUSサーバーの間で情報の受渡しを行うための構成設定

秘密キー・ファイル

RADIUSサーバー

すべてのユーザーの認証および認可情報

各クライアントの名前またはIPアドレス

各クライアントの共有シークレット

認証サーバー(複数可)

パス・コードやPINなどのユーザー認証情報(使用中の認証方式によって異なる)

ノート: RADIUSサーバーは認証サーバーになることもできます。

27.3 RADIUS認証モード

RADIUSサーバーは、FIDOやテキスト・メッセージ認証コードなどのテクノロジを使用してユーザーを認証できます。また、Oracle Databaseでは、同期およびチャレンジ・レスポンス(async)認証モードがサポートされています。

27.3.1 同期認証モード

同期モードでは、ユーザーはパスワードと第2ファクタの両方をパスワード・フィールドに同時に入力します。この方法は、GUIチャレンジ・ウィンドウを開くことができないときにコマンドライン・インタフェースを使用する場合に適しています。

27.3.1.1 同期認証モードの順序

同期認証モードは6ステップの順序です。

図27-2に、同期認証が行われる順序を示します。

図27-2 同期認証の順序

図27-2の説明が続きます
「図27-2 同期認証の順序」の説明

次のステップは、同期認証の順序を示しています。

  1. ユーザーが、接続文字列、パス・コードまたはその他の値を入力してログインします。クライアント・システムは、このデータをOracleデータベース・サーバーに渡します。パス・コードは、多くの場合、パスワードの後にトークンまたはテキストの数字が続きます。両方の資格証明ファクタが同時に送信されます。

  2. RADIUSクライアントとして機能するOracleデータベース・サーバーは、OracleクライアントからのデータをRADIUSサーバーに渡します。

  3. RADIUSサーバーは、データを適切な認証サーバーに渡します。

  4. 認証サーバーは、アクセス受入れまたはアクセス拒否メッセージをRADIUSサーバーに返します。

  5. RADIUSサーバーは、このレスポンスをOracleデータベース・サーバー/RADIUSクライアントに渡します。

  6. Oracleデータベース・サーバー/RADIUSクライアントは、レスポンスをOracleクライアントに返します。

27.3.1.2 例: トークンによる同期認証

トークン認証では、各ユーザーにトークン・カードあり、60秒ごとに変わる動的番号が表示されます。

Oracleデータベース・サーバー/RADIUSクライアントにアクセスするために、ユーザーは個人識別番号(PIN)とユーザーのトークンに現在表示されている動的番号の両方が含まれる有効なパス・コードを入力します。Oracleデータベース・サーバーは、Oracleクライアントからのこの認証情報をRADIUSサーバー(この場合は、検証のための認証サーバー)に渡します。認証サーバー(RSA ACE/Server)によってユーザーが検証されると、受入れパケットがOracleデータベース・サーバーに送られ、次に、Oracleクライアントに渡されます。これでユーザーは認証され、適切な表やアプリケーションにアクセスできます。

関連項目:

RSA Security社から提供されるドキュメント

27.3.2 チャレンジ・レスポンス(非同期)認証モード

システムで非同期モードが使用されている場合、ユーザーは、SQL*Plus CONNECT文字列でユーザー名とパスワードを入力する必要はありません。

27.3.2.1 チャレンジ・レスポンス(非同期)認証モードの順序

チャレンジ・レスポンス(非同期)認証モードは12ステップの順序です。

ノート:

データベース・サーバーへのクライアント接続に関係なく、Microsoft Windowsプラットフォームで実行されているデータベース・サーバーではチャレンジ・レスポンス(非同期)認証モードはサポートされていません。

図27-3に、チャレンジ・レスポンス(非同期)認証が行われる順序を示します。RADIUSサーバーが認証サーバーである場合、ステップ3、4、5およびステップ9、10、11は1つに結合されます。

図27-3 非同期認証の順序

図27-3の説明が続きます
「図27-3 非同期認証の順序」の説明

次のステップは、非同期認証の順序を示しています。

  1. ユーザーが、Oracleデータベース・サーバーへの接続を開始します。クライアント・システムは、データをOracleデータベース・サーバーに渡します。

  2. Oracleデータベース・サーバーは、TCPS (Transparent Layer Security (TLS))認証が構成されていることを確認します。

  3. RADIUSクライアントとして機能するOracleデータベース・サーバーは、OracleクライアントからのデータをRADIUSサーバーに渡します。

  4. RADIUSサーバーは、データをスマートカード、SecurID ACE、トークン・カード・サーバーなどの適切な認証サーバーに渡します。

  5. 認証サーバーは、ランダム番号などのチャレンジをRADIUSサーバーに送信します。

  6. RADIUSサーバーは、チャレンジをOracleデータベース・サーバー/RADIUSクライアントに渡します。

  7. Oracleデータベース・サーバー/RADIUSクライアントは、それをOracleクライアントに渡します。グラフィカル・ユーザー・インタフェースで、ユーザーにチャレンジが表示されます。Oracleには、チャレンジの表示に使用するために変更できるJAVA GUIコードの例が用意されています。$ORACLE_HOME/network/jlibディレクトリのnetradius.jarおよびnetradius8.jarファイルを参照してください。(netradius8.jarファイルが最新です。)

  8. ユーザーは、チャレンジに対するレスポンスを入力します。レスポンスを作成するために、ユーザーは、たとえば、受け取ったチャレンジをトークン・カードに入力できます。トークン・カードによって、グラフィカル・ユーザー・インタフェースに入力する動的なパスワードが提供されます。Oracleクライアントは、ユーザーのレスポンスをOracleデータベース・サーバー/RADIUSクライアントに渡します。

  9. Oracleデータベース・サーバー/RADIUSクライアントは、ユーザーのレスポンスをRADIUSサーバーに送信します。

  10. RADIUSサーバーは、検証のためにユーザーのレスポンスを適切な認証サーバーに渡します。

  11. 認証サーバーは、アクセス受入れまたはアクセス拒否メッセージをRADIUSサーバーに返します。

  12. RADIUSサーバーは、レスポンスをOracleデータベース・サーバー/RADIUSクライアントに渡します。

  13. Oracleデータベース・サーバー/RADIUSクライアントは、レスポンスをOracleクライアントに渡します。

27.3.2.2 例: トークンによる非同期認証

非同期認証で使用されるトークン・タイプの1つとして、キーパッドとディスプレイがあります。

ユーザーがパスワードを入力してOracleデータベース・サーバーにアクセスしようとすると、情報はOracleデータベース・サーバー/RADIUSクライアントおよびRADIUSサーバーを経由して、適切な認証サーバーに渡されます。認証サーバーは、RADIUSサーバーおよびOracleデータベース・サーバーを経由して、クライアントにチャレンジを戻します。ユーザーがそのチャレンジをトークンに入力すると、ユーザーがレスポンスで送信する番号がトークンに表示されます。

次に、Oracleクライアントは、Oracleデータベース・サーバーおよびRADIUSサーバーを経由して、ユーザーのレスポンスを認証サーバーに送信します。ユーザーが有効な番号を入力した場合、認証サーバーはRADIUSサーバーおよびOracleデータベース・サーバーを経由して、受入れパケットをOracleクライアントに戻します。これでユーザーは認証され、適切な表やアプリケーションへのアクセスが認可されます。ユーザーが誤ったレスポンスを入力した場合、認証サーバーはユーザーのアクセスを拒否するメッセージを戻します。

27.4 RADIUSパラメータ

Oracleには、RADIUS固有のパラメータのセットが用意されています。

27.4.1 クライアントとサーバーのRADIUSパラメータ

Oracle Databaseには、RADIUS認証を使用するためのクライアントとサーバーのパラメータが用意されています。

次の表に、RADIUSを使用するクライアントとサーバーの構成ファイルに挿入するパラメータを示します。

表27-2 RADIUS認証パラメータ

パラメータ 説明

SQLNET.AUTHENTICATION_SERVICES

1つ以上の認証サービスを使用可能にします

SQLNET.RADIUS_ALTERNATE

プライマリ・サーバーが使用できない場合に、代替RADIUSサーバーを指定します

SQLNET.RADIUS_ALTERNATE_PORT

代替RADIUSサーバーのリスニング・ポートを指定します

SQLNET.RADIUS_ALTERNATE_RETRIES

データベースが代替RADIUSサーバーにメッセージを再送信する回数を指定します

SQLNET.RADIUS_ALTERNATE_TIMEOUT

代替RADIUSサーバーが応答を待機する時間を設定します

SQLNET.RADIUS_AUTHENTICATION

プライマリRADIUSサーバーの場所を、ホスト名またはIPアドレスで指定します

SQLNET.RADIUS_AUTHENTICATION_INTERFACE

ユーザーの対話操作のためのユーザー・インタフェースが含まれるクラスを指定します

SQLNET.RADIUS_AUTHENTICATION_PORT

プライマリRADIUSサーバーのリスニング・ポートを指定します

SQLNET.RADIUS_AUTHENTICATION_RETRIES

データベースがプライマリRADIUSサーバーにメッセージを再送する回数を指定します

SQLNET.RADIUS_AUTHENTICATION_TIMEOUT

データベースがプライマリRADIUSサーバーからの応答を待機する時間を指定します

SQLNET.RADIUS_CHALLENGE_KEYWORD

RADIUSサーバーからのチャレンジを要求するためのキーワードを設定します

SQLNET.RADIUS_CHALLENGE_RESPONSE

チャレンジ・レスポンスの有効化または無効化

SQLNET.RADIUS_CLASSPATH

JavaクラスとJDK Javaライブラリのパスを設定します

SQLNET.RADIUS_SECRET

RADIUSシークレット・キーの場所を指定します

SQLNET.RADIUS_SEND_ACCOUNTING

アカウントの有効化と無効化

27.4.2 最小限のRADIUSパラメータ

少なくとも、SQLNET.AUTHENTICATION_SERVICESパラメータとSQLNET.RADIUS.AUTHENTICATIONパラメータを使用する必要があります。

次の設定を使用します。

sqlnet.authentication_services = (radius)
sqlnet.radius.authentication   = IP-address-of-RADIUS-server

27.4.3 RADIUSの初期化ファイル・パラメータ

RADIUSの場合、OS_AUTHENT_PREFIX初期化パラメータを設定します。

たとえば:

OS_AUTHENT_PREFIX=""

27.5 RADIUS認証、認可およびアカウンティングの有効化

RADIUS認証、認可およびアカウンティングは、コマンドラインから有効にできます。

27.5.1 ステップ1: RADIUS認証の構成

RADIUS認証を構成するには、Oracleクライアントで最初に認証を構成してからサーバーで構成する必要があります。その後、追加のRADIUS機能を構成できます。

27.5.1.1 ステップ1A: OracleクライアントでのRADIUSの構成

sqlnet.oraを使用して、OracleクライアントでRADIUSを構成できます。

  1. RADIUSを使用するOracle Databaseクライアントにログインします。
  2. sqlnet.oraファイルでSQLNET.AUTHENTICATION_SERVICESパラメータを次のように変更します。
    SQLNET.AUTHENTICATION_SERVICES=(radius)
27.5.1.2 ステップ1B: Oracleデータベース・サーバーでのRADIUSの構成

RADIUSキーを保持するファイルを作成して、Oracleデータベース・サーバー上にこのファイルを格納する必要があります。次に、sqlnet.oraファイルで適切なパラメータを構成する必要があります。

27.5.1.2.1 ステップ1B(1): Oracleデータベース・サーバーでのRADIUS秘密キー・ファイルの作成

最初に、RADIUS秘密キー・ファイルを作成する必要があります。

  1. RADIUSサーバーからRADIUS秘密キーを取得します。
    RADIUSクライアントごとに、RADIUSサーバーの管理者が共有秘密キーを作成します。長さは16文字以下である必要があります。
  2. Oracleデータベース・サーバーで、次のディレクトリを作成します。
    • (UNIX) $ORACLE_HOME/network/security

    • (Windows) ORACLE_BASE\ORACLE_HOME\network\security

  3. RADIUSサーバーからコピーした共有シークレットを格納するために、ファイルradius.keyを作成します。この手順の前半で作成したディレクトリにファイルを配置します。
  4. 共有秘密キーをコピーし、このキーのみを、Oracleデータベース・サーバーに作成したradius.keyファイルに貼り付けます。
  5. セキュリティのために、radius.keyのファイル権限を読取り専用に変更し、Oracle所有者のみがアクセスできるようにします。
    Oracleは、ファイル・システムに依存してこのファイルを秘密にします。

    関連項目:

    秘密キーの取得の詳細は、RADIUSサーバーの管理ドキュメントを参照してください。

27.5.1.2.2 ステップ1B(2): サーバー(sqlnet.oraファイル)でのRADIUSパラメータの構成

RADIUS秘密キー・ファイルの作成後、sqlnet.oraファイルで適切なパラメータを構成します。

ノート:

  • Oracle Database 23c以降、レガシーRADIUS APIを使用してデータベースに対して認証するユーザーには、管理権限が付与されなくなりました。

    以前のリリースでは、RADIUS APIで認証するユーザーには、SYSDBASYSBACKUPなどの管理権限を付与できました。Oracle Database 23cのOracleでは、最新の標準を使用する新しいRADIUS APIが導入されています。ユーザーに管理権限を付与するには、必ず、データベースへのデータベース接続で新しいRADIUS APIを使用し、Oracle Database 23cクライアントを使用してOracle Database 23cサーバーに接続します。

  • Oracle Database 23c以降、Request for Comments (RFC) 2138に基づいた古いRADIUS APIは非推奨です。

    Oracle Database 23cでは、RFC 6613およびRFC 6614に基づいた更新済のRADIUS APIが導入されています。新しいRADIUS APIをできるだけ早く使用するために移行の計画を開始することをお薦めします。新しいAPIはデフォルトで有効になっています。古いRADIUS APIに関連付けられたパラメータSQLNET.RADIUS_ALTERNATESQLNET.RADIUS_ALTERNATE_PORTSQLNET.RADIUS_AUTHENTICATIONおよびSQLNET.RADIUS_AUTHENTICATION_PORTも非推奨です。古いRADIUS APIを使用するようにデフォルトを変更する方法の詳細は、RADIUS APIのドキュメントを参照してください。

  1. RADIUSを使用するOracle Databaseサーバーにログインします。
  2. sqlnet.oraファイルで次のパラメータを変更します。
    SQLNET.AUTHENTICATION_SERVICES=radius
    SQLNET.RADIUS_TRANSPORT_PROTOCOL=[tls|udp]
    SQLNET.RADIUS_AUTHENTICATION_TLS_HOST=RADIUS_host_name
    SQLNET.RADIUS_AUTHENTICATION_TLS_PORT=Oracle_Database_server_port

    詳細は、次のとおりです。

    • SQLNET.AUTHENTICATION_SERVICESは、認証サービスをRADIUS用に設定します。
    • SQLNET.RADIUS_TRANSPORT_PROTOCOLは、RADIUSサーバーが使用するプロトコルとして、Transport Layer Security (TLS)またはUser Datagram Protocol (UDP)のいずれかを設定します。この値を省略すると、TLSが使用されます。UDPを使用する必要がある場合は、SQLNET.RADIUS_ALLOW_WEAK_CLIENTSおよびSQLNET.RADIUS_ALLOW_WEAK_PROTOCOLパラメータを設定する必要があります。次のことに注意してください。
      • データベース・クライアントが古いプロトコルを使用してOracle Database 23c以降のサーバーに接続するには、SQLNET.RADIUS_ALLOW_WEAK_CLIENTSパラメータを設定します。
      • Oracle Database 23c以降サーバーが古いプロトコルを使用してRADIUSサーバーに接続するには、SQLNET.RADIUS_ALLOW_WEAK_PROTOCOLパラメータを設定します。
    • SQLNET.RADIUS_AUTHENTICATION_TLS_HOSTは、RADIUSサーバーのホスト名を設定します。この値は必須です。
    • SQLNET.RADIUS_AUTHENTICATION_TLS_PORTは、Oracle Databaseサーバーのポートを設定します。デフォルトのポートは2083です。サーバーで別のポートを使用する場合は、その値をここで指定します。

    以前の非推奨のRADIUS APIパラメータを使用する必要がある場合は、SQLNET.RADIUS_ALLOW_WEAK_CLIENTSおよびSQLNET.RADIUS_ALLOW_WEAK_PROTOCOLパラメータをTRUEに設定します。非推奨となったパラメータは、次のとおりです。

    • SQLNET.RADIUS_ALTERNATE
    • SQLNET.RADIUS_AUTHENTICATION=RADIUS_SERVER_[host_name|IP_address]
    • SQLNET.RADIUS_ALTERNATE_PORT
    • SQLNET.RADIUS_AUTHENTICATION_PORT

    詳細は、次のとおりです。

    • SQLNET.RADIUS_ALTERNATEは、プライマリ・サーバーが使用できない場合に代替RADIUSサーバーを指定します。
    • SQLNET.RADIUS_AUTHENTICATIONは、RADIUSサーバーのホスト名またはIPアドレスを指定します。IP_addressは、インターネット・プロトコル・バージョン4 (IPv4)またはインターネット・プロトコル・バージョン6 (IPv6)のアドレスです。RADIUSアダプタでは、IPv4ベースとIPv6ベースの両方のサーバーがサポートされています。
    • SQLNET.RADIUS_ALTERNATE_PORTは、代替RADIUSサーバーのリスニング・ポートを指定します。
    • SQLNET.RADIUS_AUTHENTICATIONは、プライマリRADIUSサーバーの場所をホスト名またはIPアドレスで指定します。
    • SQLNET.RADIUS_AUTHENTICATION_PORTは、プライマリRADIUSサーバーのリスニング・ポートを指定します。
この手順では、Oracle Databaseサーバーとクライアント間のTransport Layer Security (TLS)接続を構成しません。追加の構成が必要です。
27.5.1.2.3 ステップ1B(3): Oracleデータベース・サーバー初期化パラメータの設定

sqlnet.oraファイルの構成後、init.ora初期化ファイルを構成する必要があります。

  1. 次の設定をinit.oraファイルに追加します。
    OS_AUTHENT_PREFIX=""
    

    デフォルトでは、init.oraファイルは、LinuxおよびUNIXシステムの場合はORACLE_HOME/dbsディレクトリ(または同じデータ・ファイルの場所)、Windowsの場合はORACLE_HOME\databaseディレクトリにあります。

  2. データベースを再起動します。

    たとえば:

    SQL> SHUTDOWN
    SQL> STARTUP
27.5.1.3 ステップ1C: その他のRADIUS機能の構成

デフォルト設定を変更し、チャレンジ・レスポンス・モードを構成して、代替RADIUSサーバーのパラメータを設定できます。

27.5.1.3.1 ステップ1C(1): デフォルト設定の変更

sqlnet.oraファイルを編集して、デフォルトのRADIUS設定を変更できます。

  1. RADIUSを使用するOracle Databaseサーバーにログインします。
  2. 次のsqlnet.oraパラメータを変更します。
    SQLNET.RADIUS_AUTHENTICATION_PORT=(port)
    SQLNET.RADIUS_AUTHENTICATION_TIMEOUT=(number_of_seconds_to_wait_for_response)
    SQLNET.RADIUS_AUTHENTICATION_RETRIES=(number_of_times_to re-send_to_radius_server)
    SQLNET.RADIUS_SECRET=(path/.radius.key)

    詳細は、次のとおりです。

    • SQLNET.RADIUS_AUTHENTICATION_PORTは、プライマリRADIUSサーバーのリスニング・ポートを指定します。デフォルトは1645です。
    • SQLNET.RADIUS_AUTHENTICATION_TIMEOUTは、データベースがプライマリRADIUSサーバーからのレスポンスを待機する時間(秒)を指定します。デフォルトは5です。
    • SQLNET.RADIUS_AUTHENTICATION_RETRIESは、データベースがプライマリRADIUSサーバーにメッセージを再送する回数を指定します。デフォルトは3です。
    • SQLNET.RADIUS_SECRETは、RADIUS秘密キーが含まれるファイルの場所を指定します。これは、RADIUSクライアントとサーバー間の共有シークレットです。デフォルトはradsecで、ORACLE_HOME/network/security/radius.keyを指します。別のRADIUS秘密キー・ファイルを設定する場合は、必ずクライアントおよびデータベース・サーバーでSQLNET.RADIUS_SECRETを設定します。RADIUSサーバーがプロトコルとしてTLSを使用している場合は、このパラメータを省略できます。ユーザー・データグラム・プロトコル(UDP)を使用するRADIUS実装では、デフォルトのパラメータ値を使用できません。radsecのデフォルト値を使用できるのは、TLS over TCPでRADIUSを使用している場合のみです。
27.5.1.3.2 ステップ1C(2): チャレンジ・レスポンス・モードの構成

チャレンジ・レスポンス・モードを構成するには、トークン・カードから取得する動的パスワードなどの情報を指定する必要があります。

RADIUSアダプタでは、このインタフェースはJavaベースであり、最適なプラットフォーム独立性を提供します。認証デバイスのサード・パーティ・ベンダーは、独自のデバイスに合せてこのグラフィカル・ユーザー・インタフェースをカスタマイズする必要があることに注意します。たとえば、スマートカード・ベンダーはJavaインタフェースをカスタマイズして、Oracleクライアントがスマートカードから動的パスワードなどのデータを読み取るようにします。スマートカードは、チャレンジを受け取ると、PINなどの追加情報をユーザーに要求することで応答します。
  1. RADIUSを使用するOracle Databaseサーバーにログインします。
  2. JDK 1.1.7またはJRE 1.1.7を使用する場合は、JAVA_HOME環境変数を、Oracleクライアントが実行されるシステム上のJREまたはJDKの場所に設定します。
    • UNIXでは、プロンプトで次のコマンドを入力します。

      % setenv JAVA_HOME /usr/local/packages/jre1.1.7B
      
    • Windowsでは、「スタート」「設定」「コントロール パネル」「システム」「環境」の順に選択し、JAVA_HOME変数を次のように設定します。

      c:\java\jre1.1.7B
      

    このステップは、他のJDK/JREバージョンでは必要ありません。

  3. 次のsqlnet.oraパラメータを変更します。
    SQLNET.RADIUS_CHALLENGE_RESPONSE=([on | off])
    SQLNET.RADIUS_CHALLENGE_KEYWORD=(keyword)
    SQLNET.RADIUS_AUTHENTICATION_INTERFACE=(default_RADIUS_interface)

    詳細は、次のとおりです。

    • SQLNET.RADIUS_CHALLENGE_RESPONSEは、チャレンジ・レスポンスを有効または無効にします。有効にするには、onと入力します。無効にするには、offと入力します。デフォルトはoffです。
    • SQLNET.RADIUS_CHALLENGE_KEYWORDを使用すると、チャレンジ・キーワードを設定できます。デフォルトはkeywordです。キーワード機能は、全部ではなく一部のRADIUSサーバーでサポートされています。この機能は、RADIUSサーバーでサポートされている場合にのみ使用できます。

      キーワードを設定することで、ユーザーはパスワードを使用しなくても識別情報を証明できます。ユーザーがパスワードを入力しない場合、ここで設定するキーワードがRADIUSサーバーに渡され、RADIUSサーバーは運転免許証の番号や生年月日などを要求するチャレンジで応答します。ユーザーがパスワードを入力する場合、RADIUSサーバーの構成に応じて、RADIUSサーバーはチャレンジで応答する場合と応答しない場合があります。

    • SQLNET.RADIUS_AUTHENTICATION_INTERFACEは、ユーザーとやり取りするためのユーザー・インタフェースが含まれるクラスを指定します。.文字の文字/で区切られたパッケージ名が含まれるインタフェースの名前を入力します。

      デフォルトのRADIUSインタフェース以外を使用する場合は、sqlnet.oraファイルを編集してSQLNET.RADIUS_CLASSPATH=(location)を入力する必要もあります(locationは、jarファイルの完全なパス名です)。これは、デフォルトでは$ORACLE_HOME/network/jlib/netradius.jar: $ORACLE_HOME/JRE/lib/vt.jarです。

27.5.1.3.3 ステップ1C(3): 代替RADIUSサーバーのパラメータの設定

代替RADIUSサーバーを使用する場合、追加パラメータを設定する必要があります。

  • sqlnet.oraファイルで次のパラメータを設定します。
    SQLNET.RADIUS_ALTERNATE=(hostname_or_IP_address_of_alternate_RADIUS_server)
    SQLNET.RADIUS_ALTERNATE_PORT=(1812)
    SQLNET.RADIUS_ALTERNATE_TIMEOUT=(number_of_seconds_to_wait_for_response)
    SQLNET.RADIUS_ALTERNATE_RETRIES=(number_of_times_to re-send_to_RADIUS_server)
    SQLNET.RADIUS_ALTERNATE_TLS_HOST=(TLS_host)
    SQLNET.RADIUS_ALTERNATE_TLS_PORT=(TLS_port)

    ノート:

    Oracle Database 23c以降、SQLNET.RADIUS_ALTERNATEおよびSQLNET.RADIUS_ALTERNATE_PORTパラメータは非推奨です。
27.5.1.3.4 ステップ1C(4): TCPS以外のプロトコルまたは古いクライアントによるアクセスの有効化

TCPSプロトコルを使用しないクライアントが必要な場合は、追加でsqlnet.ora RADIUSパラメータを設定する必要があります。

  1. RADIUSを使用するOracle Databaseクライアントにログインします。
  2. sqlnet.oraファイルでRADIUS_ALLOW_WEAK_PROTOCOLパラメータを変更します。
    SQLNET.RADIUS_ALLOW_WEAK_PROTOCOL=[TRUE|FALSE]

    TRUEに設定すると、このパラメータにより、TCPS以外のプロトコルを使用するOracle Databaseクライアントで、アップグレード済のOracle Databaseサーバーと通信できるようになります。デフォルトはFALSEで、強いクライアントのみがRADIUSを使用できるようにします。

  3. RADIUSを使用するOracle Databaseサーバーにログインします。
  4. sqlnet.oraファイルでRADIUS_ALLOW_WEAK_CLIENTSを変更します。
    SQLNET.RADIUS_ALLOW_WEAK_CLIENTS=[TRUE|FALSE]

    TRUEに設定すると、このパラメータにより、古いOracle Databaseクライアントで、アップグレード済のOracle Databaseサーバーと通信できるようになります。デフォルトはTRUEです

27.5.2 ステップ2: ユーザーの作成とアクセス権の付与

RADIUS認証の完了後、RADIUS構成を担当するOracle Databaseユーザーを作成する必要があります。

  1. CDBルートまたはRADIUSが実装されているPDBに接続します。
    たとえば:
    CONNECT system@pdb_name;
    Enter password: password
  2. CDBルートに接続している場合は共通ユーザーとしてユーザーを作成し、PDBに接続している場合はローカル・ユーザーとしてユーザーを作成します。
    CREATE USER username IDENTIFIED EXTERNALLY;
    GRANT CREATE SESSION TO USER user_name;
  3. ユーザーusernameをRADIUSサーバーのusersファイルに入力します。

関連項目:

RADIUSサーバーの管理ドキュメント

27.5.3 ステップ3: 外部RADIUS認可の構成(オプション)

Oracleデータベースに接続する必要があるRADIUSユーザーに対して、Oracleサーバー、OracleクライアントおよびRADIUSサーバーを構成する必要があります。

27.5.3.1 ステップ3A: Oracle Server (RADIUSクライアント)の構成

init.oraファイルを編集して、RADIUSクライアントにOracleサーバーを構成できます。

これを行うには、init.oraファイルを変更して、データベースを再起動し、RADIUSチャレンジ・レスポンス・モードを設定する必要があります。
  1. サーバーのRADIUSチャレンジ・レスポンス・モードをONに設定していない場合は設定します。
  2. 外部で識別されるユーザーおよびロールを追加します。
27.5.3.2 ステップ3B: Oracleクライアント(ユーザーがログインする場所)の構成

次に、ユーザーがログインするOracleクライアントを構成する必要があります。

  • クライアントのRADIUSチャレンジ・レスポンス・モードをONに設定していない場合は設定します。
27.5.3.3 ステップ3C: RADIUSサーバーの構成

RADIUSサーバーを構成するには、RADIUSサーバーの属性構成ファイルを変更する必要があります。

  1. 次の属性をRADIUSサーバー属性構成ファイルに追加します。
    属性名 コード

    VENDOR_SPECIFIC

    26

    整数

    ORACLE_ROLE

    1

    文字列

  2. SMIネットワーク管理プライベート・エンタープライズ・コード111が含まれているRADIUSサーバー属性構成ファイルで、OracleのベンダーIDを割り当てます。
    たとえば、RADIUSサーバー属性構成ファイルに次のように入力します。
    VALUE     VENDOR_SPECIFIC     ORACLE     111
  3. 次の構文を使用して、ORACLE_ROLE属性を外部RADIUS認可を使用するユーザーのユーザー・プロファイルに追加します。
    ORA_databaseSID_rolename

    詳細は、次のとおりです。

    • ORAは、このロールをOracle用に使用することを指定します。

    • databaseSIDは、データベースのinit.oraファイル内で構成されているOracleシステム識別子です。

      デフォルトでは、init.oraファイルは、LinuxおよびUNIXシステムの場合はORACLE_HOME/dbsディレクトリ(または同じデータ・ファイルの場所)、Windowsの場合はORACLE_HOME\databaseディレクトリにあります。

    • rolenameは、SYS接頭辞を削除した後にデータ・ディクショナリで定義されるロールの名前です。

    OracleロールにマップされるRADIUSグループが、ORACLE_ROLEの構文に準拠していることを確認します。

    たとえば:

    USERNAME     USERPASSWD="user_password",
                 SERVICE_TYPE=login_user,
                 VENDOR_SPECIFIC=ORACLE,
                 ORACLE_ROLE=ORA_oradb_dba

    関連項目:

    サーバーの構成の詳細は、RADIUSサーバーの管理ドキュメントを参照してください。

27.5.4 ステップ4: RADIUSアカウンティングの構成

RADIUSアカウンティングは、Oracleデータベース・サーバーへのアクセスに関する情報をログに記録し、RADIUSアカウンティング・サーバー上のファイルに格納します。

この機能は、RADIUSサーバーと認証サーバーの両方でサポートされている場合にのみ使用します。

27.5.4.1 ステップ4A: Oracleデータベース・サーバーでのRADIUSアカウンティングの設定

sqlnet.oraを使用して、サーバーでRADIUSアカウンティングを有効にできます。

  1. RADIUSを使用するOracle Databaseサーバーにログインします。
  2. sqlnet.oraファイルでSQLNET.RADIUS_SEND_ACCOUNTINGパラメータを次のように変更します。
    SQLNET.RADIUS_SEND_ACCOUNTING=on

    アカウンティングを有効にすると、リスニング・ポート番号に1を加えた値でアクティブなRADIUSサーバーにパケットが送信されます。

27.5.4.2 Step 4B: RADIUSアカウンティング・サーバーの構成

RADIUSアカウンティング・サーバーは、RADIUS認証サーバーと同じホストまたは別のホストにあります。

  • RADIUSアカウンティングの構成の詳細は、RADIUSサーバーの管理ドキュメントを参照してください。

27.5.5 ステップ5: RADIUSクライアント名のRADIUSサーバー・データベースへの追加

選択するRADIUSサーバーは、RADIUS標準に準拠している必要があります。

Internet Engineering Task Force (IETF) RFC #2138 Remote Authentication Dial In User Service (RADIUS)およびRFC #2139 RADIUS Accountingの規格に準拠するRADIUSサーバーは、すべて使用できます。RADIUSサーバーには様々なものがあるため、固有の相互運用性要件について、使用するRADIUSサーバーのドキュメントで確認してください。
  1. /etc/raddb/clientsにあるclientsファイルを開きます。
    次のテキストと表が表示されます。
    @ (#) clients 1.1 2/21/96 Copyright 1991 Livingston Enterprises Inc
    This file contains a list of clients which are allowed to make authentication requests and 
    their encryption key. The first field is a valid hostname. The second field (separated by 
    blanks or tabs) is the encryption key.
    Client Name                     Key
    
  2. CLIENT NAME列に、Oracleデータベース・サーバーが実行されているホストのホスト名またはIPアドレスを入力します。
    KEY列に、共有シークレットを入力します。CLIENT NAME列に入力する値は、クライアントの名前かIPアドレスかにかかわらず、RADIUSサーバーによって異なります。
  3. clientsファイルを保存して閉じます。

関連項目:

RADIUSサーバーの管理ドキュメント

27.5.6 ステップ6: RADIUSとともに使用する認証サーバーの構成

RADIUSクライアント名をRADIUSサーバー・データベースに追加した後、RADIUSを使用するように認証サーバーを構成できます。

  • 認証サーバーの構成の詳細は、認証サーバーのドキュメントを参照してください。

27.5.7 ステップ7: 認証サーバーとともに使用するRADIUSサーバーの構成

RADIUSで使用するように認証サーバーを構成した後、その認証サーバーを使用するようにRADIUSサーバーを構成できます。

  • 認証サーバーとともに使用するRADIUSサーバーの構成の詳細は、RADIUSサーバーのドキュメントを参照してください。

27.5.8 ステップ8: マッピング・ロールの構成

RADIUSサーバーでベンダー・タイプ属性がサポートされている場合は、ロールをRADIUSサーバーに格納して管理できます。

RADIUSを使用したCONNECT要求があると、Oracleデータベース・サーバーはロールをダウンロードします。この機能を使用するには、Oracleデータベース・サーバーとRADIUSサーバーの両方でロールを構成する必要があります。
  1. テキスト・エディタを使用して、Oracleデータベース・サーバーの初期化パラメータ・ファイルでOS_ROLESパラメータを設定します。
    デフォルトでは、init.oraファイルは、LinuxおよびUNIXシステムの場合はORACLE_HOME/dbsディレクトリ(または同じデータ・ファイルの場所)、Windowsの場合はORACLE_HOME\databaseディレクトリにあります。
  2. Oracleデータベース・サーバーを停止して再起動します。
    たとえば:
    SHUTDOWN
    STARTUP
    
  3. RADIUSサーバーがOracleデータベース・サーバー上で管理する各ロールを、値IDENTIFIED EXTERNALLYを使用して作成します。
    RADIUSサーバーでロールを構成するには、次の構文を使用します。
    ORA_DatabaseName.DatabaseDomainName_RoleName
    

    詳細は、次のとおりです。

    • DatabaseNameは、ロールが作成されているOracleデータベース・サーバーの名前です。これは、DB_NAME初期化パラメータの値と同じです。

    • DatabaseDomainNameは、Oracleデータベース・サーバーが属するドメインの名前です。この値は、DB_DOMAIN初期化パラメータの値と同じです。

    • RoleNameは、Oracleデータベース・サーバーで作成されたロールの名前です。

    たとえば:

    ORA_USERDB.US.EXAMPLE.COM_MANAGER
    
  4. RADIUSチャレンジ・レスポンス・モードを構成します。

27.6 RADIUSを使用したデータベースへのログイン

RADIUSを使用してデータベースにログインするには、同期認証モードまたはチャレンジ・レスポンス・モードのいずれかを使用します。

  • SQL*Plusを起動して、次のいずれかの方法でデータベースにログインします。
    • 同期認証モードを使用する場合は、最初にチャレンジ・レスポンス・モードがONになっていないことを確認して、次のコマンドを入力します。

      CONNECT username@database_alias
      Enter password: password
      
    • チャレンジ・レスポンス・モードを使用する場合は、チャレンジ・レスポンス・モードがONに設定されていることを確認して、次のコマンドを入力します。

      CONNECT /@database_alias
      

    チャレンジ・レスポンス・モードは、ログインのすべてのケースについて構成できます。

27.7 RADIUSを使用した認証デバイスの統合

RADIUSチャレンジ・レスポンス・ユーザー・インタフェースは、RADIUS構成での認証をさらに強化します。

27.7.1 RADIUSチャレンジ・レスポンス・ユーザー・インタフェースについて

サード・パーティ認証ベンダーを使用して、RADIUSチャレンジ・レスポンス・ユーザー・インタフェースを特定のデバイスに合うようにカスタマイズできます。

RADIUS規格をサポートする任意の認証デバイスを、Oracleユーザーが認証されるように設定できます。認証デバイスでチャレンジ・レスポンス・モードを使用する場合、グラフィカル・インタフェースでエンド・ユーザーはまずパスワードの入力、次に追加情報の入力を求められます(たとえば、ユーザーがトークン・カードから取得する動的パスワードがあります)。このインタフェースはJavaベースで、最適なプラットフォーム独立性を提供します。

認証デバイスのサード・パーティ・ベンダーは、その独自のデバイスに合せてこのグラフィカル・ユーザー・インタフェースをカスタマイズする必要があります。たとえば、スマートカード・ベンダーは、チャレンジをスマートカード・リーダーに発行するようにOracleクライアントをカスタマイズします。スマートカードはチャレンジを受け取ると、ユーザーにPINなどの追加情報の入力を求めることで応答します。

関連トピック

27.7.2 RADIUSチャレンジ・レスポンス・ユーザー・インタフェースのカスタマイズ

OracleRadiusInterfaceインタフェースは、独自のクラスを作成することでカスタマイズできます。

  1. sqlnet.oraファイルを開きます。

    デフォルトでは、sqlnet.oraファイルは、ORACLE_HOME/network/adminディレクトリ、またはTNS_ADMIN環境変数によって設定されている場所にあります。TNS_ADMIN変数が正しいsqlnet.oraファイルを指定するように適切に設定されていることを確認します。

  2. SQLNET.RADIUS_AUTHENTICATION_INTERFACEパラメータを探し、そこにリストされているクラスの名前(DefaultRadiusInterface)を作成した新しいクラスの名前に置き換えます。

    この変更をsqlnet.oraファイルで行うと、クラスは認証プロセスを処理するためにOracleクライアントにロードされます。

  3. sqlnet.oraファイルを保存して終了します

サード・パーティは、ORACLE.NET.RADIUSパッケージにあるOracleRadiusInterfaceインタフェースを実装する必要があります。

27.7.3 例: OracleRadiusInterfaceインタフェースの使用

OracleRadiusInterfaceインタフェースを使用して、ユーザー名とパスワードを取得できます。

例27-1に、OracleRadiusInterfaceインタフェースの使用方法を示します。

例27-1 OracleRadiusInterfaceインタフェースの使用

public interface OracleRadiusInterface {
  public void radiusRequest();
  public void radiusChallenge(String challenge);
  public String getUserName();
  public String getPassword();
}

詳細は、次のとおりです。

  • radiusRequestは、エンド・ユーザーにユーザー名とパスワードの入力を求めます(これらは後でgetUserNamegetPasswordを使用して取得されます)。

  • getUserNameは、ユーザーが入力したユーザー名を抽出します。空の文字列が戻された場合、ユーザーが操作をキャンセルするとみなされます。その後、ユーザーは認証に失敗したことを示すメッセージを受信します。

  • getPasswordは、ユーザーが入力したパスワードを抽出します。getUserNameが有効な文字列を戻し、getPasswordが空の文字列を戻した場合、データベースによってチャレンジ・キーワードがパスワードとして使用されます。ユーザーが有効なパスワードを入力した場合、チャレンジがRADIUSサーバーから戻される場合と戻されない場合がります。

  • radiusChallengeは、ユーザーがサーバーのチャレンジに応答できるように、RADIUSサーバーから送信された要求を表示します。

  • getResponseは、ユーザーが入力した応答を抽出します。有効な応答が戻された場合、その情報が新しいAccess-RequestパケットのUser-Password属性に移入されます。空の文字列が戻された場合、操作は対応する値を戻すことによって両側から取り消されます。