プライマリ・コンテンツに移動
Oracle® Database Advanced Security管理者ガイド
11gリリース2 (11.2)
B56286-10
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

12 Kerberos認証の構成

この章では、Kerberos認証を使用できるようにOracle Advanced Security for Oracle Databaseを構成する方法、およびOracleデータベース・ユーザーを認証するようにKerberosを構成する方法について説明します。この章には、次の項が含まれています。


関連項目:

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

12.1 Kerberos認証の有効化

この項の内容は次のとおりです。

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

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


関連項目:

Kerberosの構築とインストールに関する注意事項は、Kerberosバージョン5ソース配布に同梱されています。


注意:

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

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


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

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

プリンシパルの名前は、次の形式にする必要があります。

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

通常、DNSドメイン名をレルムの名前として使用します。service principalを作成するには、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

12.1.3 手順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 DES-CBC-CRC added to the keytab WRFILE: 'WRFILE:/tmp/keytab
    
    kadmin.local:  exit
    
    oklist -k -t /tmp/keytab
    
  2. サービス・キー表を抽出した後、古いエントリに加えて新しいエントリが表にあることを確認します。新しいエントリがない場合、またはさらに追加する必要がある場合は、kadmin.localを使用して追加します。

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

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

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

    # mv /tmp/keytab /etc/v5srvtab
    

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

  4. Oracleデータベース・サーバー実行可能ファイルの所有者がサービス・キー表(前の例の/etc/v5srvtab)を読み取ることができることを確認します。そのためには、ファイル所有者をOracleユーザーに設定するか、またはファイルをOracleが属するグループに対して読取り可能にします。


    注意:

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


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

Oracleデータベース・サーバーとクライアント・ソフトウェアをインストールします。


関連項目:

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

12.1.5 手順5: Oracle Net ServicesとOracle Advanced Securityのインストール

Oracleデータベース・サーバーとOracleクライアント・システムにOracle Net ServicesとOracle Advanced Securityをインストールします。


関連項目:

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

12.1.6 手順6: Oracle Net ServicesとOracle Databaseの構成

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


関連項目:

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

  • 『Oracle Database Net Services管理者ガイド』


12.1.7手順7: Kerberos認証の構成

次の手順を実行して、Oracleデータベース・サーバーおよびクライアントのsqlnet.oraファイルで必須パラメータを設定します。

この項の内容は次のとおりです。

12.1.7.1 手順7A: クライアントとデータベース・サーバーでの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. 「認証」タブを選択します。

    kerb0001.gifの説明が続きます。
    図kerb0001.gifの説明'

  5. 「使用可能なメソッド」リストから、「KERBEROS5」を選択します。

  6. 右矢印(>)をクリックして、「KERBEROS5」を「選択メソッド」に移動します。

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

  8. 「その他のパラメータ」タブを選択します。

  9. 「認証サービス」リストから「KERBEROS(V5)」を選択します。

    kerb0002.gifの説明が続きます。
    図kerb0002.gifの説明'

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

  10. オプションで、次のフィールドの値を入力します。

    • 「資格証明キャッシュ・ファイル」

    • 「構成ファイル」

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

    • 「キー表」

    • 「時間誤差」

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

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

    sqlnet.oraファイルは次のエントリで更新されます。

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

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

Kerberosユーザー名には長いものにできますが、Oracleユーザー名は30文字に制限されているため、初期化パラメータ・ファイルのOS_AUTHENT_PREFIXの値をnullに設定することをお薦めします。

OS_AUTHENT_PREFIX=""

このパラメータをnullに設定すると、OPS$のデフォルト値が上書きされます。


注意:

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

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

必須パラメータ以外に、オプションで、クライアントおよびOracleデータベース・サーバーでsqlnet.oraファイルの次のパラメータを設定できます。

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

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
説明: このパラメータは、Kerberos構成ファイルへの完全パス名を指定します。構成ファイルには、デフォルトのKDC (key distribution center)のレルムが含まれており、レルムをKDCホストにマッピングします。デフォルトは、オペレーティング・システムによって異なります。UNIXでは、/krb5/krb.confです。
例: SQLNET.KERBEROS5_CONF=/krb/krb.conf
パラメータ: SQLNET.KERBEROS5_CONF_MIT=[TRUE|FALSE]
説明: このパラメータは、新しいMIT Kerberos構成形式を使用するかどうかを指定します。値をTRUEに設定すると、新しい構成形式ルールに従ってファイルが解析されます。値をFALSEに設定すると、デフォルト(非MIT)構成が使用されます。デフォルトはFALSEです。
例: SQLNET.KERBEROS5_CONF_MIT=False
パラメータ: SQLNET.KERBEROS5_KEYTAB=
pathname_to_Kerberos_principal/key_table
説明: このパラメータは、Kerberosプリンシパル/秘密鍵マッピング・ファイルへの完全パス名を指定します。これは、Oracleデータベース・サーバーが鍵を抽出し、クライアントから受信する認証情報を複号化するために使用されます。デフォルトは、オペレーティング・システムによって異なります。UNIXでは、/etc/v5srvtabです。
例: SQLNET.KERBEROS5_KEYTAB=/etc/v5srvtab
パラメータ: SQLNET.KERBEROS5_REALMS=
pathname_to_Kerberos_realm_translation_file
説明: このパラメータは、Kerberosレルム変換ファイルへの完全パス名を指定します。変換ファイルを使用して、ホスト名またはドメイン名をレルムにマッピングします。デフォルトは、オペレーティング・システムによって異なります。UNIXでは、/etc/krb.realmsです。
例: SQLNET.KERBEROS5_REALMS=/krb5/krb.realms

資格証明キャッシュ・タイプ4形式のサポート

Oracle Databaseは、資格証明キャッシュ・タイプ4形式をサポートおよび認識するようになりました。この機能は、新しいバージョンのMIT Kerberos 5 (1.3.x以上)ユーティリティを使用する環境で役立ちます。

この機能を使用するには、sqlnet.oraファイルで次のパラメータを設定する必要があります。

SQLNET.KERBEROS5_CONF_MIT = TRUE

Kerberos構成ファイル(krb5.conf)は、次のように設定する必要があります。

...
[libdefaults]
...
kdc_timesync = 1
ccache_type = 4

12.1.8 手順8: Kerberosユーザーの作成

Kerberosで認証できるOracleユーザーを作成するには、管理ツールがインストールされているKerberos認証サーバーで次のタスクを実行します。レルムはすでに存在している必要があります。


注意:

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

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

次の例は、UNIXの場合です。

# ./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

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

Oracleデータベース・サーバー上でSQL*Plusを実行して、Kerberosユーザーに対応するOracleユーザーを作成します。次の例で、OS_AUTHENT_PREFIXはnull ("")に設定されます。次の例に示すように、Oracleユーザー名は大文字とし、二重引用符で囲みます。

SQL> CONNECT / AS SYSDBA;
SQL> CREATE USER "KRBUSER@EXAMPLE.COM" IDENTIFIED EXTERNALLY; 
SQL> GRANT CREATE SESSION TO "KRBUSER@EXAMPLE.COM"; 

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

SQL> CREATE USER db_user_name IDENTIFIED EXTERNALLY AS 'kerberos_principal_name'

例:

SQL> CREATE USER KRBUSER IDENTIFIED EXTERNALLY AS 'KerberosUser@EXAMPLE.COM';

注意:

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

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

データベースに接続するには、Key Distribution Center (KDC)に初期チケットを要求する必要があります。そのためには、クライアントで次を実行します。

% okinit username

データベースに接続するときに、データベース・リンクの後に次のような参照が続く場合は、転送可能フラグ(-f)オプションを使用する必要があります。

sqlplus /@oracle

okinit -fを実行すると、データベース・リンクをまたいで使用できる資格証明が有効になります。Oracleクライアントで次のコマンドを実行します。

% okinit -f
Password for krbuser@EXAMPLE.COM:password

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

Oracle Kerberos認証アダプタとともに3つのユーティリティが提供されています。これらのユーティリティは、Oracle Kerberos認証サポートがインストールされたOracleクライアントでの使用を意図したものです。特定のタスクで、次のユーティリティを使用します。

12.2.1 okinitユーティリティを使用した初期チケットの取得

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

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

表12-1 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では一般的で最も強力な暗号化タイプがリストから選択されます。

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

  • 16: DES3-CBC-SHA1

  • 18: AES256-CTS

次の例では、DES-CBC-CRCおよびDES3-CBC-SHA1暗号化タイプを要求します。

okinit -e 1 -e 16 krbuser@REALM

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

-?

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


12.2.2 oklistユーティリティを使用した資格証明の表示

oklistユーティリティを実行して、保持しているチケットのリストを表示します。表12-2に、使用できるoklistオプションを示します。

表12-2 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

12.2.3 okdstryユーティリティを使用したキャッシュ・ファイルからの資格証明の削除

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

$ okdstry -f

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

12.2.4 Kerberosによって認証されたOracle Databaseサーバーへの接続

ユーザー名やパスワードを使用しないでOracleデータベース・サーバーに接続できるようになりました。次のようにコマンドを入力します。

$ sqlplus /@net_service_name

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

$ sqlplus /@oracle_dbname

関連項目:

外部認証の詳細は、第1章「Oracle Advanced Securityの概要」およびOracle Database Heterogeneous Connectivityユーザーズ・ガイドを参照してください。

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

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

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

Oracle Kerberosクライアントで次の手順を実行する必要があります。

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

Windows 2000ドメイン・コントローラをKerberos KDCとして参照する次のKerberosクライアント構成ファイルを作成します。次の例で、Windows 2000ドメイン・コントローラは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
    

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

Windows 2000ドメイン・コントローラKDCと相互運用するようにOracleクライアントを構成するには、「手順7A: クライアントとデータベース・サーバーでの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 2000オペレーティング・システムはMIT Kerberosバージョン5に基づくセキュリティ・サービスとのみ相互運用するように設計されているため、SQLNET.KERBEROS5_CONF_MITパラメータがTRUEに設定されていることを確認してください。

12.3.1.3 手順3A: リスニング・ポート番号の指定

Windows 2000ドメイン・コントローラKDCは、UDP/TCPポート88でリスニングします。kerberos5のシステム・ファイル・エントリが、次のようにUDP/TCPポート88に設定されていることを確認してください。

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

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

Windows 2000ドメイン・コントローラで、次の手順を実行する必要があります。


関連項目:

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

12.3.2.1 手順2A: ユーザーの作成

Microsoft Active DirectoryでOracleクライアントの新規ユーザーを作成します。

12.3.2.2 手順2B: 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コマンドライン・ユーティリティを使用して、次の構文によってキー表ファイルを抽出します。

    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 2000サポート・ツールの一部であり、\support\reskit\netmgmt\securityフォルダのWindows 2000配布媒体にあります。

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

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


    関連項目:

    Windows 2000とKerberos 5の相互運用の詳細は、次のURLを参照してください。
    http://technet.microsoft.com/hi-in/windowsserver/2000/bb735396(en-us).aspx
    

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

Oracleデータベースがインストールされているホスト・コンピュータで、次の手順を実行する必要があります。

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

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

「手順9: 外部認証されたOracleユーザーの作成」のタスク情報に従って、外部認証されたOracleユーザーを作成します。ユーザー名はすべて大文字で作成します。たとえば、ORAKRB@SALES.US.EXAMPLE.COMのようにします。


関連項目:

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

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

クライアントがデータベースに接続するには、初期チケットを要求する必要があります。初期チケットを要求するには、「手順10: Kerberos/Oracleユーザーの初期チケットの取得」のタスク情報に従います。


注意:

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

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



関連項目:

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

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

OracleクライアントでKerberos認証を構成してOracleデータベースを認証した後に、パスワード・ベースの認証にフォールバックする必要が発生する場合があります。たとえば、ユーザー・データベースのリンクをOracleデータベースに固定している場合などです。

Kerberos認証からパスワード・ベースの認証へのフォールバックを有効にするには、クライアントとサーバーの両方でsqlnet.ora内のSQLNET.FALLBACK_AUTHENTICATIONパラメータをTRUEに設定します。このパラメータのデフォルトはFALSEです。つまり、デフォルトではKerberos認証に失敗すると接続は失敗します。


関連項目:

『Oracle Database Net Servicesリファレンス』

12.5 Oracle 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を実行して新しい初期チケットを取得します。