プライマリ・コンテンツに移動
Oracle® Databaseセキュリティ・ガイド
12c リリース1 (12.1)
B71285-10
目次へ移動
目次
索引へ移動
索引

前
次

17 Kerberos認証の構成

Kerberosは、信頼性のあるサード・パーティ認証システムです。これは、共有秘密に依存するもので、サード・パーティが安全であることが前提になります。Kerberos認証を使用するようにOracle Databaseを構成できます。

内容は次のとおりです。

関連項目:

KerberosユーザーをKerberos認証のエンタープライズ・ユーザーに移行する方法の詳細は、『Oracle Databaseエンタープライズ・ユーザー・セキュリティ管理者ガイド』を参照してください。

Kerberos認証の有効化

Oracle Databaseに対してKerberos認証を有効にするには、これをインストールしてから一連の構成手順に従います。

内容は次のとおりです。

手順1: Kerberosのインストール

Kerberosバージョン5をインストールしてください。

Kerberosの構築とインストールに関する注意事項の供給元配布資料に詳細が記載されています。Kerberosのインストール後、POWERシステム(64ビット)でIBM AIXを使用する場合、Kerboros 5が推奨の認証方式であることを確認する必要があります。

  1. 認証サーバーとして動作するシステムにKerberosをインストールします。

    注意:

    32ビット・バージョンのOracle Databaseからアップグレードした後に初めてKerberos認証アダプタを使用すると、エラー・メッセージ「ORA-01637: パケット受信に失敗しました。」が表示されます。

    回避策: 64ビット・バージョンのデータベースにアップグレードした後、Kerberos外部認証方式を使用する前に、コンピュータ上の/usr/tmp/oracle_service_name.RCという名前のファイルを確認して削除します。

  2. POWERシステム(64ビット)上のIBM AIXの場合、認証方式をチェックします。

    例:

    /usr/bin/lsauthent
    

    次のような出力が表示されます。

    Standard Aix
    
  3. Kerberos 5を推奨方式として構成します。

    例:

    /usr/bin/chauthent -k5 -std
    

    このコマンドは、Kerberos 5を推奨方式(k5)、標準AIXを2番目の方式(std)として設定します。

  4. Kerberos 5が現在推奨方式になっていることを確認するには、新しい構成をチェックします。
    /usr/bin/lsauthent
    
    Kerberos 5
    Standard Aix

手順2: Oracleデータベース・サーバーに対するサービス・プリンシパルの構成

Kerberosを使用して自己を認証するクライアントの識別情報をOracleデータベース・サーバーで検証できるようにするには、Oracle Databaseのサービス・プリンシパルを作成する必要があります。

  1. 次の形式を使用して、サーバー・プリンシパルの名前を決定します。
    kservice/kinstance@REALM
    

    サービス・プリンシパル内の各フィールドで次の値を指定します。

    サービス・プリンシパル・フィールド 説明

    kservice

    Oracleサービスを表す、大/小文字を区別する文字列。データベース・サービス名と同じでもかまいません。

    kinstance

    通常は、Oracle Databaseが実行されているシステムの完全修飾DNS名。

    REALM

    サービス・プリンシパルが登録されているKerberosレルムの名前。REALMは常に大文字である必要があり、通常はDNSドメイン名です。

    この項のユーティリティ名は実行可能プログラムです。ただし、Kerberosユーザー名krbuserおよびレルムEXAMPLE.COMは単なる例です。

    たとえば、kserviceoracle、Oracle Databaseが実行されているシステムの完全修飾名がdbserver.example.com、レルムがEXAMPLE.COMとします。この場合、プリンシパル名は次のようになります。

    oracle/dbserver.example.com@EXAMPLE.COM
    
  2. kadmin.localを実行してサーバー・プリンシパルを作成します。UNIXでは、次の構文を使用して、rootユーザーとしてこのコマンドを実行します。
    # cd /kerberos-install-directory/sbin
    # ./kadmin.local
    

    たとえば、oracle/dbserver.example.com@EXAMPLE.COMという名前のプリンシパルを、Kerberosが認識するサーバー・プリンシパルのリストに追加するには、次のように入力します。

    kadmin.local:addprinc -randkey oracle/dbserver.example.com@EXAMPLE.COM

手順3: Kerberosからのサービス・キー表の抽出

次に、Kerberosからサービス・キー表を抽出し、Oracleデータベース・サーバー/Kerberosクライアント・システムにコピーします。

たとえば、dbserver.example.comのサービス・キー表を抽出するには、次の手順を実行します。

  1. 次のように入力してサービス・キー表を抽出します。
    kadmin.local:  ktadd -k /tmp/keytab oracle/dbserver.example.com
    Entry for principal oracle/dbserver.example.com with kvno 2, 
    encryption type AES-256 CTS mode with 96-bit SHA-1 HMAC added to keytab WRFILE:
    WRFILE:/tmp/keytab
    
    kadmin.local:  exit
    
  2. サービス・キー表をチェックするには、次のコマンドを入力します。
    oklist -k -t /tmp/keytab
    
  3. サービス・キー表を抽出した後、古いエントリに加えて新しいエントリが表にあることを確認します。

    新しいエントリがない場合、またはさらに追加する必要がある場合は、kadmin.localを使用して追加します。

    ktaddを使用するときにレルムを入力しない場合、Kerberosサーバーのデフォルトのレルムが使用されます。kadmin.localは、localhostで実行されているKerberosサーバーに接続されます。

  4. Kerberosサービス・キー表がKerberosクライアントと同じシステム上にある場合は、移動できます。Kerberosサービス・キー表がKerberosクライアントと異なるシステム上にある場合は、FTPなどのプログラムを使用してファイルを転送する必要があります。FTPを使用する場合は、ファイルをバイナリ・モードで転送します。

    次の例は、UNIXプラットフォームでサービス・キー表を移動する方法を示しています。

    # mv /tmp/keytab /etc/v5srvtab
    

    サービス・ファイルのデフォルト名は、/etc/v5srvtabです。

  5. Oracleデータベース・サーバー実行可能ファイルの所有者がサービス・キー表(前の例の/etc/v5srvtab)を読み取ることができることを確認します。

    そのためには、ファイル所有者をOracleユーザーに設定するか、またはファイルをOracleが属するグループに対して読取り可能にします。

    ファイルをすべてのユーザーに対して読取り可能にしないでください。そのことによってセキュリティ侵害が発生する場合があります。

手順4: Oracleデータベース・サーバーとOracleクライアントのインストール

Kerberosからサービス・キー表を抽出した後、Oracleデータベース・サーバーおよびOracleクライアントをインストールします。

  • Oracleデータベース・サーバーおよびクライアント・ソフトウェアのインストールの詳細は、Oracle Databaseオペレーティング・システムに固有のインストール・ドキュメントを参照してください。

手順5: Oracle Net ServicesとOracle Databaseの構成

Oracleデータベース・サーバーとクライアントのインストール後、サーバーとクライアントでOracle Net Servicesを構成できます。

  • Oracleデータベース・サーバーおよびクライアントでのOracle Net Servicesの構成の詳細は、次のドキュメントを参照してください。

    • オペレーティング・システム固有のOracle Databaseインストール関連ドキュメント

    • Oracle Database Net Services管理者ガイド

手順6: Kerberos認証の構成

Oracleデータベース・サーバーおよびクライアントのsqlnet.oraファイルで必須パラメータを設定する必要があります。

マルチテナント環境では、sqlnet.oraファイルの設定はすべてのプラガブル・データベース(PDB)に適用されることに注意してください。

手順6A: クライアントとデータベース・サーバーでのKerberosの構成

最初に、クライアントとデータベース・サーバーでKerberos認証サービス・パラメータを構成する必要があります。

  1. Oracle Net Managerを起動します。
    • (UNIX) $ORACLE_HOME/binから、コマンドラインで次のコマンドを入力します。

      netmgr
      
    • (Windows)「スタート」「プログラム」「Oracle - HOME_NAME」「Configuration and Migration Tools」「Net Manager」を選択します。

  2. 「Oracle Netの構成」を展開し、「ローカル」から「プロファイル」を選択します。
  3. 「ネーミング」リストから、「ネットワーク・セキュリティ」を選択します。

    ネットワーク・セキュリティのタブ付きウィンドウが表示されます。

  4. 「認証」タブを選択します。
  5. 「使用可能なメソッド」リストから、「KERBEROS5」を選択します。
  6. 右矢印(>)をクリックして、「KERBEROS5」を「選択メソッド」リストに移動します。
  7. 選択したメソッドを使用する順に並べます。

    そのためには、「選択メソッド」リストでメソッドを選択し、「上へ」または「下へ」をクリックしてリスト内に配置します。たとえば、最初に使用するサービスをKERBEROS5にするには、リストの先頭に移動します。

  8. 「その他のパラメータ」タブを選択します。
  9. 「認証サービス」リストから「KERBEROS(V5)」を選択します。
  10. 「サービス」フィールドに「Kerberos」と入力します。

    このフィールドでは、Kerberosのサービス・チケットを取得するためにOracle Databaseが使用するサービスの名前を定義します。このフィールドに値を入力すると、他のフィールドに入力できるようになります。

  11. オプションで、次のフィールドの値を入力します。
    • 「資格証明キャッシュ・ファイル」

    • 「構成ファイル」

    • 「レルム変換ファイル」

    • 「キー表」

    • 「時間誤差」

    構成するフィールドとパラメータの詳細は、Oracle Net Managerオンライン・ヘルプおよび「手順6C: sqlnet.oraパラメータの設定(オプション)」を参照してください。

  12. 「ファイル」メニューから、「ネットワーク構成の保存」を選択します。

    sqlnet.oraファイルは、前述の手順で行った可能性のあるオプションの選択だけでなく、次のエントリでも更新されます。

    SQLNET.AUTHENTICATION_SERVICES=(KERBEROS5)
    SQLNET.AUTHENTICATION_KERBEROS5_SERVICE=kservice

手順6B: 初期化パラメータの設定

次に、OS_AUTHENT_PREFIX初期化パラメータを設定します。

  1. init.oraファイルを探します。

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

  2. init.oraファイルで、init.ora初期化パラメータ・ファイルのOS_AUTHENT_PREFIXの値をnullに設定します。

    例:

    OS_AUTHENT_PREFIX=""
    

    Kerberosユーザー名は長くてもかまわないためこの値をnullに設定しますが、Oracleユーザー名は30文字までに制限されています。このパラメータをnullに設定すると、OPS$のデフォルト値が上書きされます。

注意:

30文字を超えるKerberosユーザー名を持つ外部データベース・ユーザーを作成できます。詳細は、「手順8: 外部認証されたOracleユーザーの作成」を参照してください。

手順6C: sqlnet.oraパラメータの設定(オプション)

セキュリティを強化するために、必須パラメータに加えて、オプションのsqlnet.oraパラメータを設定できます。

  • オプションで、クライアントおよびOracleデータベース・サーバーの両方に、次の表に示すパラメータを設定します。

表17-1 Kerberos固有のsqlnet.oraパラメータ

パラメータ 説明

SQLNET.KERBEROS5_CC_NAME=pathname_to_credentials_cache_file|OS_MEMORY

Kerberos資格証明キャッシュ(CC)ファイルへの完全パス名を指定します。デフォルト値は、オペレーティング・システムによって異なります。UNIXでは、/tmp/krb5cc_useridです。

OS_MEMORYオプションを使用すると、OS管理メモリーの資格証明キャッシュが資格証明キャッシュ・ファイルに使用されるように指定されます。これに対して現在サポートされている値は、OSMSFT (Microsoft Windowsの場合)のみです。

SQLNET.KERBEROS5_CC_NAMEの値は、次の形式を使用して指定できます。

  • SQLNET.KERBEROS5_CC_NAME=complete_path_to_cc_file

    例:

    SQLNET.KERBEROS5_CC_NAME=/tmp/kcache

    SQLNET.KERBEROS5_CC_NAME=D:\tmp\kcache

  • SQLNET.KERBEROS5_CC_NAME=FILE:complete_path_to_cc_file

    例:

    SQLNET.KERBEROS5_CC_NAME=FILE:/tmp/kcache

  • SQLNET.KERBEROS5_CC_NAME=OSMSFT:

    Windowsを実行し、Microsoft KDCを使用している場合は、この値を使用します。

このパラメータはKRB5CCNAME環境変数を使用して設定することもできますが、sqlnet.oraファイルで設定する値は、KRB5CCNAMEで設定する値よりも優先されます。

例:

SQLNET.KERBEROS5_CC_NAME=/usr/tmp/krbcache

SQLNET.KERBEROS5_CLOCKSKEW=number_of_seconds_accepted_as_network_delay

このパラメータは、Kerberos資格証明を期限切れとみなすまでの秒数を指定します。これは、資格証明がクライアントまたはデータベース・サーバーによって実際に受け取られるときに使用されます。また、再生攻撃を受けないように資格証明を格納する必要があるかどうかをOracleデータベース・サーバーが判断するときにも、使用されます。デフォルトは300秒です。

例:

SQLNET.KERBEROS5_CLOCKSKEW=1200

SQLNET.KERBEROS5_CONF=pathname_to_Kerberos_configuration_file|AUTO_DISCOVER

このパラメータは、Kerberos構成ファイルへの完全パス名を指定します。構成ファイルには、デフォルトのKDC (key distribution center)のレルムが含まれており、レルムをKDCホストにマッピングします。デフォルトは、オペレーティング・システムによって異なります。UNIXでは、/krb5/krb.confです。

構成ファイルのかわりにAUTO_DISCOVERオプションを使用すると、KerberosクライアントでKDCを自動検出できます。

例:

SQLNET.KERBEROS5_CONF=/krb/krb.conf
SQLNET.KERBEROS5_CONF=AUTO_DISCOVER

SQLNET.KERBEROS5_CONF_LOCATION=path_to_Kerberos_configuration_directory

このパラメータは、Kerberos構成ファイルがシステムによって作成され、クライアントで指定する必要がないことを示します。構成ファイルは、DNS参照を使用してデフォルトのKDCのレルムを取得し、レルムをKDCホストにマッピングします。

例:

SQLNET.KERBEROS5_CONF_LOCATION=/krb

SQLNET.KERBEROS5_KEYTAB=path_to_Kerberos_principal/key_table

このパラメータは、Kerberosプリンシパル/秘密鍵マッピング・ファイルへの完全パス名を指定します。これは、Oracleデータベース・サーバーが鍵を抽出し、クライアントから受信する認証情報を複号化するために使用されます。デフォルトは、オペレーティング・システムによって異なります。UNIXでは、/etc/v5srvtabです。

例:

SQLNET.KERBEROS5_KEYTAB=/etc/v5srvtab

SQLNET.KERBEROS5_REALMS=path_to_Kerberos_realm_translation_file

このパラメータは、Kerberosレルム変換ファイルへの完全パス名を指定します。変換ファイルを使用して、ホスト名またはドメイン名をレルムにマッピングします。デフォルトは、オペレーティング・システムによって異なります。UNIXでは、/etc/krb.realmsです。

例:

SQLNET.KERBEROS5_REALMS=/krb5/krb.realms

手順7: Kerberosユーザーの作成

管理ツールがインストールされているKerberos認証サーバーでKerberosユーザーを作成する必要があります。

レルムはすでに存在している必要があります。

注意:

この項のユーティリティ名は実行可能プログラムです。ただし、Kerberosユーザー名krbuserおよびレルムEXAMPLE.COMは単なる例です。システムによって異なる場合があります。

  • /krb5/admin/kadmin.localをrootとして実行して、krbuserなどの新しいKerberosユーザーを作成します。

    たとえば、UNIX固有のKerberosユーザーを作成するとします。

    # /krb5/admin/kadmin.local
    kadmin.local: addprinc krbuser
    Enter password for principal: "krbuser@example.com": (password does not display)
    Re-enter password for principal: "krbuser@example.com": (password does not display)
    kadmin.local: exit

手順8: 外部認証されたOracleユーザーの作成

次に、外部認証されるOracleユーザーを作成します。

  1. CREATE USER権限を持つユーザーとしてSQL*Plusにログインします。
    sqlplus sec_admin - Or, CONNECT sec_admin@hrpdb
    Enter password: password
    
  2. OS_AUTHENT_PREFIXがnull ("")に設定されていることを確認します。
  3. Kerberosユーザーに対応するOracle Databaseユーザー・アカウントを作成します。Oracleユーザー名を大文字で入力して、その名前を二重引用符で囲みます。

    例:

    CREATE USER "KRBUSER@EXAMPLE.COM" IDENTIFIED EXTERNALLY; 
    GRANT CREATE SESSION TO "KRBUSER@EXAMPLE.COM"; 
    

    ユーザーのKerberosプリンシパル名が30文字を超え、最大1024文字の場合は、次の構文を使用してユーザーを作成します。

    CREATE USER db_user_name IDENTIFIED EXTERNALLY AS 'kerberos_principal_name';
    

    例:

    CREATE USER KRBUSER IDENTIFIED EXTERNALLY AS 'KerberosUser@example.com';

注意:

データベース管理者は、2つのデータベース・ユーザーが同じKerberosプリンシパル名で外部から識別されないことを確認する必要があります。

手順9: Kerberos/Oracleユーザーの初期チケットの取得

データベースに接続するには、Key Distribution Center (KDC)に初期チケットを要求する必要があります。

  • 初期チケットを要求するには、クライアントで次のコマンドを実行します。

    % okinit username
    

    データベース・リンク間で使用可能な資格証明を有効にするには、-fオプションを含めて、プロンプトが表示された場合はKerberosパスワードを指定します。

    % okinit -f
    Password for krbuser@EXAMPLE.COM:(password does not display)

Kerberos認証アダプタのユーティリティ

Oracle Kerberos認証アダプタのユーティリティは、Oracle Kerberos認証サポートがインストールされたOracleクライアントで使用するように設計されています。

内容は次のとおりです。

初期チケットを取得するためのokinitユーティリティ・オプション

okinitユーティリティでは、Kerberosチケットを取得し、キャッシュします。

通常は、このユーティリティを使用してチケット認可チケットを取得し、ユーザーが入力したパスワードを使用してkey distribution center (KDC)からの資格証明を復号化します。チケット認可チケットは、ユーザーの資格証明キャッシュに格納されます。

表17-2に、okinitで使用可能なオプションを示します。

表17-2 okinitユーティリティのオプション

オプション 説明

-f

転送可能なチケット認可チケットを要求します。データベース・リンクをたどる場合は、このオプションが必要です。

-l

チケット認可チケットおよびすべての後続チケットの存続期間を指定します。デフォルトで、チケット認可チケットは8時間有効ですが、存続期間がより短いまたは長い資格証明を指定することもできます。KDCはこのオプションを無視したり、各サイトで指定できる時間を制限したりできます。次の例に示すように、存続期間の値は、w (週)、d (日)、h (時間)、m (分)またはs (秒)で修飾された数字で構成される文字列です。

okinit -l 2wld6h20m30s

この例では、存続期間が2週間と1日6時間20分30秒のチケット認可チケットが要求されます。

-c

代替資格証明キャッシュを指定します。UNIXでは、デフォルトは/tmp/krb5cc_uidです。代替資格証明キャッシュは、sqlnet.oraファイルでSQLNET.KERBEROS5_CC_NAMEパラメータを使用して指定することもできます。

-e

使用するKerberos暗号化タイプを表す数字を指定します。

このオプションは、セッションに対して特定のKerberos暗号化タイプの鍵を要求する場合に使用できます。複数の暗号化タイプを指定すると、KDCでは一般的で最も強力な暗号化タイプがリストから選択されます。

許容される値は次のとおりです。

  • 18: AES256-CTS

次の例では、AES256-CTS暗号化タイプを要求します。

okinit -e 18 krbuser@REALM

複数の暗号化タイプを要求するには、このオプションを繰り返します。

-?

コマンドライン・オプションのリストを表示します。

資格証明を表示するためのoklistユーティリティ・オプション

oklistユーティリティを実行して、保持しているチケットのリストを表示できます。

表17-3に、使用可能なokinitオプションを示します。

表17-3 oklistユーティリティのオプション

オプション 説明

-f

資格証明のフラグを表示します。関連するフラグは次のとおりです。

  • I: 資格証明がチケット認可チケットです。

  • F: 資格証明が転送可能です。

  • f: 資格証明が転送済です。

-c

代替資格証明キャッシュを指定します。UNIXでは、デフォルトは/tmp/krb5cc_uidです。代替資格証明キャッシュは、sqlnet.oraファイルでSQLNET.KERBEROS5_CC_NAMEパラメータを使用して指定することもできます。

-k

UNIX上のサービス表のエントリ(デフォルト/etc/v5srvtab)をリストします。代替サービス表は、sqlnet.oraファイルでSQLNET.KERBEROS5_KEYTABパラメータを使用して指定することもできます。

フラグ表示オプション(-f)によって、次のような追加情報が表示されます。

% oklist -f
27-Jul-1999 21:57:51   28-Jul-1999 05:58:14
krbtgt/EXAMPLE.COM@EXAMPLE.COM
Flags: FI

キャッシュ・ファイルからの資格証明の削除

キャッシュ・ファイルから資格証明を削除できます。

  • okdstryユーティリティを使用して、資格証明キャッシュ・ファイルから資格証明を削除します。

    $ okdstry -c
    

    -cコマンド・オプションによって、代替資格証明キャッシュを指定できます。UNIXでは、デフォルトは/tmp/krb5cc_uidです。代替資格証明キャッシュは、sqlnet.oraファイルでSQLNET.KERBEROS5_CC_NAMEパラメータを使用して指定することもできます。

Kerberosによって認証されたOracleデータベース・サーバーへの接続

Kerberosの構成後は、ユーザー名やパスワードを使用しないでOracleデータベース・サーバーに接続できます。

  • 次の構文を使用して、ユーザー名やパスワードを入力しないでデータベースに接続します。

    $ sqlplus /@net_service_name
    

ここで、net_service_nameは、Oracle Net Servicesのサービス名です。例:

$ sqlplus /@oracle_dbname

関連項目:

外部認証の詳細は、『Oracle Database Heterogeneous Connectivityユーザーズ・ガイド』を参照してください。

Windows 2008ドメイン・コントローラKDCとの相互運用性の構成

Oracle DatabaseはMIT Kerberosに準拠しており、OracleデータベースでのKerberos認証を可能にするために、Windows 2008ドメイン・コントローラ上で、Kerberos Key Distribution Center (KDC)によって発行されたチケットを相互運用できます。

内容は次のとおりです。

手順1: Windows 2008ドメイン・コントローラのためのOracle Kerberosクライアントの構成

Microsoft Windows 2008ドメイン・コントローラKDCと相互運用するようにOracle Kerberosクライアントを構成するには、次の手順を実行する必要があります。Oracle Kerberosクライアントで、次の手順を実行します。

内容は次のとおりです。

手順1A: クライアントKerberos構成ファイルの作成

Windows 2008ドメイン・コントローラをKerberos KDCとして参照するKerberosクライアント構成ファイルを構成する必要があります。

  • krb.confkrb5.confおよびkrb5.realmsファイルを作成します。

たとえば、Windows 2008ドメイン・コントローラがsales3854.us.example.comという名前のノード上で実行されていることを前提とします。

  • krb.confファイル

    例:

    SALES3854.US.EXAMPLE.COM
    SALES3854.US.EXAMPLE.COM sales3854.us.example.com admin server
    
  • krb5.confファイル

    例:

    [libdefaults]
    default_realm=SALES.US.EXAMPLE.COM
    [realms]
    SALES.US.EXAMPLE.COM= { kdc=sales3854.us.example.com:88 }
    [domain_realm]
    .us.example.com=SALES.US.EXAMPLE.COM
    
  • krb5.realmsファイル

    例:

    us.example.com SALES.US.EXAMPLE.COM

手順1B: sqlnet.oraファイルでのOracle構成パラメータの指定

sqlnet.oraファイルにはKerbose 5特有のパラメータがあります。

Windows 2008ドメイン・コントローラKDCと相互運用するようにOracleクライアントを構成するには、「手順6A: クライアントとデータベース・サーバーでのKerberosの構成」で示したものと同じsqlnet.oraファイルのパラメータを使用します。

  • クライアントのsqlnet.oraファイルで次のパラメータを設定します。

    SQLNET.KERBEROS5_CONF=pathname_to_Kerberos_configuration_file
    SQLNET.KERBEROS5_CONF_MIT=TRUE
    SQLNET.AUTHENTICATION_KERBEROS5_SERVICE=Kerberos_service_name
    SQLNET.AUTHENTICATION_SERVICES=(BEQ,KERBEROS5)

注意:

Windows 2008オペレーティング・システムはMIT Kerberosバージョン5に基づくセキュリティ・サービスとのみ相互運用するように設計されているため、SQLNET.KERBEROS5_CONF_MITパラメータがTRUEに設定されていることを確認してください。

手順1C: リスニング・ポート番号の指定

Windows 2008ドメイン・コントローラKDCは、UDP/TCPポート88でリスニングします。

  • kerberos5のシステム・ファイル・エントリが、UDP/TCPポート88に設定されていることを確認してください。

    UNIX環境では、/etc/servicesファイルの最初のkerberos5エントリが88に設定されていることを確認してください。

手順2: OracleクライアントのためのWindows 2008ドメイン・コントローラKDCの構成

次に、Oracleクライアントと相互運用するようにWindows 2008ドメイン・コントローラKDCを構成します。Windows 2008ドメイン・コントローラで、次の手順を実行する必要があります。

内容は次のとおりです。

関連項目:

Active Directoryでユーザーを作成する方法の詳細は、Microsoft社のドキュメントを参照してください。

手順2A: ユーザー・アカウントの作成

Microsoft Windows 2008ドメイン・コントローラのKDCにユーザー・アカウントを作成する必要があります。

  • Windows 2008ドメイン・コントローラで、Microsoft Active DirectoryにOracleクライアントの新規ユーザー・アカウントを作成します。

手順2B: Oracleデータベースのプリンシパル・ユーザー・アカウントの作成

ユーザー・アカウントの作成後、Oracle Databaseプリンシパル・ユーザー・アカウントを作成します。

ユーザー・アカウントの作成後、Oracle Databaseプリンシパル・ユーザー・アカウントを作成します。

  1. Microsoft Active DirectoryでOracleデータベースの新規ユーザー・アカウントを作成します。

    たとえば、Oracleデータベースがホストsales3854.us.example.comで実行されている場合は、Active Directoryを使用してユーザー名sales3854.us.example.comとパスワードoracleでユーザーを作成します。

    Active Directoryでは、ユーザーをhost/hostname.dns.com (oracle/sales3854.us.example.comなど)として作成しないでください。Microsoft社のKDCは、MIT KDCのようにマルチパートの名前をサポートしていません。MIT KDCは、すべてのプリンシパルをユーザー名として扱うため、マルチパートの名前をサービス・プリンシパルに使用できます。ただし、Microsoft社のKDCでは使用できません。

  2. Ktpassコマンドライン・ユーティリティを使用して、次の構文によってkeytabファイルを抽出します。
    Ktpass -princ service/hostname@NT-DNS-REALM-NAME -mapuser account -pass password -out keytab.file
    

    次に、前の手順で作成したデータベース・ユーザーを使用したKtpassの使用例を示します。

    C:> Ktpass -princ oracle/sales3854.us.example.com@SALES.US.COM -mapuser sales3854 -pass oracle -out C:\temp\v5srvtab
    

    このユーティリティはWindows 2008サポート・ツールの一部であり、\support\reskit\netmgmt\securityフォルダのWindows 2008配布媒体にあります。

  3. 抽出したkeytabファイルをOracleデータベースがインストールされているホスト・コンピュータにコピーします。

    たとえば、前の手順で作成したkeytab/krb5/v5svrtabにコピーできます。

関連項目:

Windows 2008とKerberos 5の相互運用の詳細は、次のURLを参照してください。

http://technet.microsoft.com/hi-in/windowsserver/2000/bb735396(en-us).aspx

手順3: Windows 2008ドメイン・コントローラKDCのためのOracleデータベースの構成

Oracleデータベースがインストールされているホスト・コンピュータでドメイン・コントローラに対してOracleデータベースを構成する必要があります。

内容は次のとおりです。

手順3A: sqlnet.oraファイルでの構成パラメータの設定

最初に、データベースの構成パラメータを設定する必要があります。

  • データベース・サーバーのsqlnet.oraファイルで、次のパラメータの値を指定します。

    SQLNET.KERBEROS5_CONF=pathname_to_Kerberos_configuration_file
    SQLNET.KERBEROS5_KEYTAB=pathname_to_Kerberos_principal/key_table
    SQLNET.KERBEROS5_CONF_MIT=TRUE
    SQLNET.AUTHENTICATION_KERBEROS5_SERVICE=Kerberos_service_name
    SQLNET.AUTHENTICATION_SERVICES=(BEQ,KERBEROS5)

注意:

  • Windows 2008オペレーティング・システムはMIT Kerberosバージョン5に基づくセキュリティ・サービスとのみ相互運用するように設計されているため、SQLNET.KERBEROS5_CONF_MITパラメータがTRUEに設定されていることを確認してください。

  • マルチテナント環境では、sqlnet.oraファイルの設定がすべてのPDBに適用されることに注意してください。

手順3B: 外部認証されたOracleユーザーの作成

構成パラメータの設定後、外部認証されるOracleユーザーを作成します。

関連項目:

Oracle Net Managerを使用してsqlnet.oraファイルのパラメータを設定する方法の詳細は、手順6: Kerberos認証の構成を参照してください。

手順4: Kerberos/Oracleユーザーの初期チケットの取得

クライアントがデータベースに接続するには、初期チケットを要求する必要があります。

注意:

ユーザーは、Windows固有のキャッシュを使用する場合、okinitコマンドを使用して初期チケットを明示的に要求する必要はありません。

OracleクライアントがMicrosoft Windows 2008以上で実行されている場合、KerberosチケットはユーザーがWindowsにログインしたときに自動的に取得されます。

関連項目:

システムのKerberosチケット情報を表示するために使用できるKerbtray.exeユーティリティの詳細は、Microsoft社のドキュメントを参照してください。

Kerberos認証フォールバック動作の構成

Kerberos認証の障害に備え、フォールバック動作(パスワードベースの認証)を構成できます。

OracleクライアントでKerberos認証を構成してOracleデータベースを認証した後に、パスワード・ベースの認証にフォールバックする必要が発生する場合があります。たとえば、ユーザー・データベースのリンクをOracleデータベースに固定している場合などです。
  • Kerberos認証からパスワード・ベースの認証へのフォールバックを有効にするには、クライアントとサーバーの両方でsqlnet.ora内のSQLNET.FALLBACK_AUTHENTICATIONパラメータをTRUEに設定します。
    このパラメータのデフォルト値はFALSEです。これは、デフォルトでは、Kerberos認証に失敗すると接続が失敗することを意味します。

関連項目:

SQLNET.FALLBACK_AUTHENTICATIONパラメータの詳細は、『Oracle Database Net Servicesリファレンス』を参照してください。

Oracle Kerberos認証の構成のトラブルシューティング

一般的なKerberos構成の問題に対するガイドラインを示します。

一般的な問題は次のとおりです。

  • okinitを使用してチケット認証チケットを取得できない場合:

    • krb.confファイルを調べて、デフォルトのレルムが正しいことを確認します。

    • レルムに対して指定されているホスト上でKDCが実行されていることを確認します。

    • KDCにユーザー・プリンシパルのエントリがあること、およびパスワードが一致していることを確認します。

    • krb.confファイルおよびkrb.realmsファイルがOracleによって読取り可能であることを確認します。

    • TNS_ADMIN環境変数が、sqlnet.ora構成ファイルを含むディレクトリを指していることを確認します。

  • 初期チケットはあるが接続できない場合:

    • 接続を試みた後で、サービス・チケットを確認します。

    • データベース・サーバー側のsqlnet.oraファイルに、Kerberosによって認識されるサービスに対応するサービス名があることを確認します。

    • 関連するすべてのシステムでクロックのずれが数分以内に設定されていることを確認するか、sqlnet.oraファイルでSQLNET.KERBEROS5_CLOCKSKEWパラメータを変更します。

  • サービス・チケットはあるが接続できない場合:

    • クライアントおよびデータベース・サーバー上でクロックを確認します。

    • v5srvtabファイルが正しい場所にあり、Oracleによって読取り可能であることを確認します。sqlnet.oraパラメータを忘れずに設定してください。

    • データベース・サーバー側のsqlnet.oraファイルで指定されているサービスに対してv5srvtabファイルが生成されていることを確認します。

  • 問題がないと考えられるにもかかわらず、発行した問合せが失敗する場合:

    • 初期チケットが転送可能であることを確認します。okinitユーティリティを実行して初期チケットを取得している必要があります。

    • 資格証明の有効期限を確認します。資格証明の有効期限が切れている場合は、接続をクローズし、okinitを実行して新しい初期チケットを取得します。