22 Kerberos認証の構成
Kerberosは信頼できるサード・パーティ認証システムであり、共有秘密鍵に基づき、サード・パーティがセキュアであることを前提とします。
- Kerberos認証の有効化
Oracle Databaseに対してKerberos認証を有効にするには、これをインストールしてから一連の構成ステップに従います。 - Kerberos認証アダプタのユーティリティ
Oracle Kerberos認証アダプタのユーティリティは、Oracle Kerberos認証サポートがインストールされたOracleクライアントで使用するように設計されています。 - Kerberosによって認証されたOracleデータベース・サーバーへの接続
Kerberosの構成後は、ユーザー名やパスワードを使用しないでOracleデータベース・サーバーに接続できます。 - Windows 2008ドメイン・コントローラKDCとの相互運用性の構成
Oracle DatabaseをMicrosoft Windows 2008ドメイン・コントローラのキー配布センター(KDC)と相互作用するように構成できます。 - Kerberos認証フォールバック動作の構成
Kerberos認証の障害に備え、フォールバック動作(パスワードベースの認証)を構成できます。 - Oracle Kerberos認証の構成のトラブルシューティング
一般的なKerberos構成の問題に対するガイドラインを示します。
親トピック: 厳密認証の管理
22.1 Kerberos認証の有効化
Oracle Databaseに対してKerberos認証を有効にするには、これをインストールしてから一連の構成ステップに従います。
- ステップ1: Kerberosのインストール
Kerberosバージョン5をインストールしてください。 - ステップ2: Oracleデータベース・サーバーに対するサービス・プリンシパルの構成
Kerberosを使用して自己を認証するクライアントの識別情報をOracleデータベース・サーバーで検証できるようにするには、Oracle Databaseのサービス・プリンシパルを作成する必要があります。 - ステップ3: Kerberosからのサービス・キー表の抽出
次に、Kerberosからサービス・キー表を抽出し、Oracleデータベース・サーバー/Kerberosクライアント・システムにコピーします。 - ステップ4: Oracleデータベース・サーバーとOracleクライアントのインストール
Kerberosからサービス・キー表を抽出した後、Oracleデータベース・サーバーおよびOracleクライアントをインストールします。 - ステップ5: Oracle Net ServicesとOracle Databaseの構成
Oracleデータベース・サーバーとクライアントのインストール後、サーバーとクライアントでOracle Net Servicesを構成できます。 - ステップ6: Kerberos認証の構成
Oracleデータベース・サーバーおよびクライアントのsqlnet.ora
ファイルで必須パラメータを設定する必要があります。 - ステップ7: Kerberosユーザーの作成
管理ツールがインストールされているKerberos認証サーバーで、Kerberosユーザーを作成する必要があります。 - ステップ8: 外部認証されたOracleユーザーの作成
次に、外部認証されるOracleユーザーを作成します。 - ステップ9: Kerberos/Oracleユーザーの初期チケットの取得
データベースに接続するには、Key Distribution Center (KDC)に初期チケットを要求する必要があります。
関連項目:
KerberosユーザーをKerberos認証のエンタープライズ・ユーザーに移行する方法の詳細は、『Oracle Databaseエンタープライズ・ユーザー・セキュリティ管理者ガイド』を参照してください。親トピック: Kerberos認証の構成
22.1.1 ステップ1: Kerberosのインストール
Kerberosバージョン5をインストールしてください。
Kerberosの構築とインストールに関するノートの供給元配布資料に詳細が記載されています。Kerberosのインストール後、POWERシステム(64ビット)でIBM AIXを使用する場合、Kerboros 5が推奨の認証方式であることを確認する必要があります。
親トピック: Kerberos認証の有効化
22.1.2 ステップ2: Oracleデータベース・サーバーに対するサービス・プリンシパルの構成
Kerberosを使用して自己を認証するクライアントの識別情報をOracleデータベース・サーバーで検証できるようにするには、Oracle Databaseのサービス・プリンシパルを作成する必要があります。
親トピック: Kerberos認証の有効化
22.1.3 ステップ3: Kerberosからのサービス・キー表の抽出
次に、Kerberosからサービス・キー表を抽出し、Oracleデータベース・サーバー/Kerberosクライアント・システムにコピーします。
dbserver.example.com
のサービス・キー表を抽出するには、次の手順を実行します。
親トピック: Kerberos認証の有効化
22.1.4 ステップ4: Oracleデータベース・サーバーとOracleクライアントのインストール
Kerberosからサービス・キー表を抽出した後、Oracleデータベース・サーバーおよびOracleクライアントをインストールします。
-
Oracleデータベース・サーバーおよびクライアント・ソフトウェアのインストールの詳細は、Oracle Databaseオペレーティング・システムに固有のインストール・ドキュメントを参照してください。
親トピック: Kerberos認証の有効化
22.1.5 ステップ5: Oracle Net ServicesとOracle Databaseの構成
Oracleデータベース・サーバーとクライアントのインストール後、サーバーとクライアントでOracle Net Servicesを構成できます。
-
Oracleデータベース・サーバーおよびクライアントでのOracle Net Servicesの構成の詳細は、次のドキュメントを参照してください。
-
オペレーティング・システム固有のOracle Databaseインストール関連ドキュメント
-
親トピック: Kerberos認証の有効化
22.1.6 ステップ6: Kerberos認証の構成
Oracleデータベース・サーバーおよびクライアントのsqlnet.ora
ファイルで必須パラメータを設定する必要があります。
ノート:
マルチテナント環境では、sqlnet.ora
ファイルの設定はすべてのプラガブル・データベース(PDB)に適用されることに注意してください。ただし、Kerberosを使用する場合は、すべてのPDBを1つのKDCで認証する必要があるという意味ではありません。sqlnet.ora
ファイルおよびKerberos構成ファイルの設定では複数のKDCをサポートできます。
- ステップ6A: クライアントとデータベース・サーバーでのKerberosの構成
最初に、クライアントとデータベース・サーバーでKerberos認証サービス・パラメータを構成する必要があります。 - ステップ6B: 初期化パラメータの設定
次に、OS_AUTHENT_PREFIX
初期化パラメータを設定します。 - ステップ6C: sqlnet.oraパラメータの設定(オプション)
セキュリティを強化するために、必須パラメータに加えて、オプションのsqlnet.ora
パラメータを設定できます。
親トピック: Kerberos認証の有効化
22.1.6.1 ステップ6A: クライアントとデータベース・サーバーでのKerberosの構成
最初に、クライアントとデータベース・サーバーでKerberos認証サービス・パラメータを構成する必要があります。
親トピック: ステップ6: Kerberos認証の構成
22.1.6.2 ステップ6B: 初期化パラメータの設定
次に、OS_AUTHENT_PREFIX
初期化パラメータを設定します。
ノート:
30バイトを超えるKerberosユーザー名を持つ外部データベース・ユーザーを作成できます。詳細は、「ステップ8: 外部認証されたOracleユーザーの作成」を参照してください。
親トピック: ステップ6: Kerberos認証の構成
22.1.6.3 ステップ6C: sqlnet.oraパラメータの設定(オプション)
セキュリティを強化するために、必須パラメータに加えて、オプションのsqlnet.ora
パラメータを設定できます。
-
オプションで、クライアントおよびOracleデータベース・サーバーの両方に、次の表に示すパラメータを設定します。
表22-1 Kerberos固有のsqlnet.oraパラメータ
パラメータ | 説明 |
---|---|
|
Kerberos資格証明キャッシュ(CC)ファイルへの完全パス名を指定します。デフォルト値は、オペレーティング・システムによって異なります。UNIXでは、
このパラメータは たとえば: SQLNET.KERBEROS5_CC_NAME=/usr/tmp/krbcache |
|
このパラメータは、Kerberos資格証明を期限切れとみなすまでの秒数を指定します。これは、資格証明がクライアントまたはデータベース・サーバーによって実際に受け取られるときに使用されます。また、再生攻撃を受けないように資格証明を格納する必要があるかどうかをOracleデータベース・サーバーが判断するときにも、使用されます。デフォルトは300秒です。 たとえば: SQLNET.KERBEROS5_CLOCKSKEW=1200 |
|
このパラメータは、 構成ファイルのかわりに たとえば: SQLNET.KERBEROS5_CONF=/krb/krb.conf SQLNET.KERBEROS5_CONF=AUTO_DISCOVER |
|
このパラメータは、Kerberos構成ファイルがシステムによって作成され、クライアントで指定する必要がないことを示します。構成ファイルは、DNS参照を使用してデフォルトのKDCのレルムを取得し、レルムをKDCホストにマッピングします。 たとえば: SQLNET.KERBEROS5_CONF_LOCATION=/krb |
|
このパラメータは、Kerberosプリンシパル/秘密キー・マッピング・ファイルへの完全パス名を指定します。これは、Oracleデータベース・サーバーがキーを抽出し、クライアントから受信する認証情報を複号化するために使用されます。デフォルトは、オペレーティング・システムによって異なります。UNIXでは、 たとえば: SQLNET.KERBEROS5_KEYTAB=/etc/v5srvtab |
|
このパラメータは、Kerberosレルム変換ファイルへの完全パス名を指定します。変換ファイルを使用して、ホスト名またはドメイン名をレルムにマッピングします。デフォルトは、オペレーティング・システムによって異なります。UNIXでは、 たとえば: SQLNET.KERBEROS5_REALMS=/krb5/krb.realms |
親トピック: ステップ6: Kerberos認証の構成
22.1.7 ステップ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
親トピック: Kerberos認証の有効化
22.1.8 ステップ8: 外部認証されたOracleユーザーの作成
次に、外部認証されるOracleユーザーを作成します。
ノート:
データベース管理者は、2つのデータベース・ユーザーが同じKerberosプリンシパル名で外部から識別されないことを確認する必要があります。
親トピック: Kerberos認証の有効化
22.1.9 ステップ9: Kerberos/Oracleユーザーの初期チケットの取得
データベースに接続するには、Key Distribution Center (KDC)に初期チケットを要求する必要があります。
-
初期チケットを要求するには、クライアントで次のコマンドを実行します。
% okinit username
データベース・リンク間で使用可能な資格証明を有効にするには、
-f
オプションを含めて、プロンプトが表示された場合はKerberosパスワードを指定します。% services/okinit -f Password for krbuser@EXAMPLE.COM:(password does not display)
okinit: Cannot contact any KDC for requested realm
などのエラーが発生した場合は、kerberos 5エントリがあるかどうか/etc/services
ファイルを確認します。たとえば:
kerberos 88/tcp kerberos5 krb5 # Kerberos v5 kerberos 88/udp kerberos5 krb5 # Kerberos v5
親トピック: Kerberos認証の有効化
22.2 Kerberos認証アダプタのユーティリティ
Oracle Kerberos認証アダプタのユーティリティは、Oracle Kerberos認証サポートがインストールされたOracleクライアントで使用するように設計されています。
- 初期チケットを取得するためのokinitユーティリティ・オプション
okinit
ユーティリティでは、Kerberosチケットを取得し、キャッシュします。 - 資格証明を表示するためのoklistユーティリティ・オプション
oklist
ユーティリティは保持しているチケットのリストを表示します。 - キャッシュ・ファイルから資格証明を削除するためのokdstryユーティリティのオプション
okdstry
(okdestroy
)ユーティリティはキャッシュ・ファイルから資格証明を削除します。 - キー表の作成を自動化するためのokcreateユーティリティのオプション
okcreate
ユーティリティは、KDCまたはサービス・エンドポイントから、キー表の作成を自動化します。
親トピック: Kerberos認証の構成
22.2.1 初期チケットを取得するためのokinitユーティリティ・オプション
okinit
ユーティリティでは、Kerberosチケットを取得し、キャッシュします。
通常は、このユーティリティを使用してチケット認可チケットを取得し、ユーザーが入力したパスワードを使用してkey distribution center (KDC)からの資格証明を復号化します。チケット認可チケットは、ユーザーの資格証明キャッシュに格納されます。
次の表に、okinit
で使用できるオプションを示します。表に示されている機能を使用するには、sqlnet.ora
のSQLNET.KERBEROS5_CONF_MIT
パラメータをTRUE
に設定する必要があります。(SQLNET.KERBEROS5_CONF_MIT
は非推奨ですが、okinit
の下位互換性のため現在も維持されていることに注意してください。)
表22-2 okinitユーティリティのオプション
オプション | 説明 |
---|---|
|
転送可能なチケットまたは転送不可のチケットを要求します。データベース・リンクをたどる場合は、このオプションが必要です。 |
|
チケット認可チケットおよびすべての後続チケットの存続期間を指定します。デフォルトで、チケット認可チケットは8時間有効ですが、存続期間がより短いまたは長い資格証明を指定することもできます。KDCはこのオプションを無視するか、各サイトで指定できる時間を制限することができます。次の例に示すように、存続期間の値は、 okinit -l 2wld6h20m30s この例では、存続期間が2週間と1日6時間20分30秒のチケット認可チケットが要求されます。 |
|
チケットが有効になるまでの遅延の期間を指定します。チケットは、無効なフラグ・セットを使用して発行されます。 |
|
合計存続期間が |
|
プロキシ可能なチケットまたはプロキシ不可のチケットを要求します |
|
ホストのローカル・アドレスに制限されているチケットを要求します |
|
アドレスによって制限されていないチケットを要求します |
|
プリンシパル名を企業名として扱います |
|
キャッシュ内のチケット認可チケットをKDCに渡して検証するよう要求します。チケットが要求された期間内のものであれば、キャッシュは検証済のチケットで置き換えられます。 |
|
チケット認可チケットの更新を要求します |
|
ローカル・ホストのキー表内のキーから取得されたチケットを要求します |
|
匿名処理を要求します |
|
プリンシパル名の正規化を要求し、要求されたものとは異なるクライアント・プリンシパルでKDCが応答できるようにします |
|
キャッシュの名前をキャッシュの場所として指定します。UNIXでは、デフォルトは |
|
すでにチケットが含まれている資格証明キャッシュの名前を指定します。そのチケットを取得する際、チケットを取得した方法に関する情報がキャッシュ内に格納されていれば、同じ情報を使用して、新しい資格証明を取得する方法に影響を及ぼします。 |
|
KDCでサポートされている場合、このキャッシュは要求を保護するために使用され、オフラインの辞書攻撃を防ぎ、追加で事前認証メカニズムを使用することを可能にします。 |
|
事前認証属性と値を指定します。次のいずれかの値を指定します。
|
|
コマンドライン・オプションのリストを表示します。 |
親トピック: Kerberos認証アダプタのユーティリティ
22.2.2 資格証明を表示するためのoklistユーティリティ・オプション
oklist
ユーティリティは保持しているチケットのリストを表示します。
次の表に、oklist
の使用可能なオプションを示します。表に示されている機能を使用するには、sqlnet.ora
のSQLNET.KERBEROS5_CONF_MIT
パラメータをTRUE
に設定する必要があります。(SQLNET.KERBEROS5_CONF_MIT
は非推奨ですが、oklist
の下位互換性のため現在も維持されていることに注意してください。)
表22-3 oklistユーティリティのオプション
オプション | 説明 |
---|---|
|
資格証明のフラグを表示します。関連するフラグは次のとおりです。
|
|
代替資格証明キャッシュを指定します。UNIXでは、デフォルトは |
|
UNIX上のサービス表のエントリ(デフォルト |
|
資格証明キャッシュ内の各資格証明のセッション・キーとチケットの暗号化タイプ、またはキー表ファイル内の各キーの暗号化タイプを表示します。 |
|
キャッシュ・コレクションが使用可能な場合、コレクション内に存在するキャッシュを要約した表を表示します。 |
|
キャッシュ・コレクションが使用可能な場合、コレクション内のすべてのキャッシュの内容を表示します。 |
|
出力を生成せずにユーティリティを実行します。キャッシュが読取り不可または期限切れの場合、ユーティリティはステータス1で終了します。それ以外の場合はステータス0です |
|
資格証明内のアドレスのリストを表示します |
|
逆引きのアドレスのかわりに数字のアドレスを表示します |
|
|
|
キー表ファイル内の各キー表入力の時間入力のタイムスタンプを表示します |
|
キー表ファイル内の各キー表入力の暗号化キーの値を表示します |
|
Kerberosバージョンを表示して終了します。 |
フラグ表示オプション(-f
)によって、次のような追加情報が表示されます。
% oklist -f 04-Aug-2015 21:57:51 28-Aug-2015 05:58:14 krbtgt/EXAMPLE.COM@EXAMPLE.COM Flags: FI
親トピック: Kerberos認証アダプタのユーティリティ
22.2.3 キャッシュ・ファイルから資格証明を削除するためのokdstryユーティリティのオプション
okdstry
(okdestroy
)ユーティリティはキャッシュ・ファイルから資格証明を削除します。
次の表に、okdstry
の使用可能なオプションを示します。表に示されている機能を使用するには、sqlnet.ora
のSQLNET.KERBEROS5_CONF_MIT
パラメータをTRUE
に設定する必要があります。(SQLNET.KERBEROS5_CONF_MIT
は非推奨ですが、okdstry
の下位互換性のため現在も維持されていることに注意してください。)
表22-4 okdstryユーティリティのオプション
オプション | 説明 |
---|---|
|
キャッシュ・コレクションが使用可能な場合、コレクション内のキャッシュをすべて破棄します |
|
音なしで実行します。通常、 |
|
資格証明(チケット)のキャッシュの名前および場所として |
親トピック: Kerberos認証アダプタのユーティリティ
22.2.4 キー表の作成を自動化するためのokcreateユーティリティのオプション
okcreate
ユーティリティは、KDCまたはサービス・エンドポイントから、キー表の作成を自動化します。
次の表に、okcreate
の使用可能なオプションを示します。
表22-5 キー表の作成を自動化するためのokcreateユーティリティのオプション
オプション | 説明 |
---|---|
|
キー表を取得する対象となる、Kerberosを使用するサービスのサービス名を指定します。デフォルトは |
|
キー表を取得する対象となるホストをカンマ区切りのリストで指定するか、ホストのリストが含まれるテキスト・ファイルへのパスを指定します。デフォルトは |
|
結果のキー表を格納するための出力パスを指定します。デフォルトはカレント・ディレクトリです。 このディレクトリは、ルート・ユーザーのみがアクセスできるようにします。キー表ファイルは、ネットワークを介してクリアテキストで送信しないでください。 |
|
KDCに対して操作を実行する場合に使用します。 |
|
Kerberosを使用するサービスに対して操作を実行する場合に使用します。 |
|
KDCのユーザー名を指定します。この設定は、Kerberosを使用するサービス・エンドポイントのみで使用します。
|
|
Kerberosレルムを指定します |
|
Kerberosプリンシパルを指定します |
|
Kerberos問合せを指定します |
|
KDCデータベース名を指定します |
|
作成された新しいキーに使用するsaltリストを指定します |
|
KDCマスター・パスワードを要求するよう指定します |
親トピック: Kerberos認証アダプタのユーティリティ
22.3 Kerberosによって認証されたOracleデータベース・サーバーへの接続
Kerberosの構成後は、ユーザー名やパスワードを使用しないでOracleデータベース・サーバーに接続できます。
-
次の構文を使用して、ユーザー名やパスワードを入力しないでデータベースに接続します。
$ sqlplus /@net_service_name
ここで、net_service_name
は、Oracle Net Servicesのサービス名です。たとえば:
$ sqlplus /@oracle_dbname
関連項目:
外部認証の詳細は、『Oracle Database Heterogeneous Connectivityユーザーズ・ガイド』を参照してください。
親トピック: Kerberos認証の構成
22.4 Windows 2008ドメイン・コントローラKDCとの相互運用性の構成
Oracle DatabaseをMicrosoft Windows 2008ドメイン・コントローラのキー配布センター(KDC)と相互作用するように構成できます。
- Microsoft Windows Serverドメイン・コントローラKDCとの相互運用性の構成について
Oracle DatabaseはMIT Kerberosに準拠します。 - ステップ1: Windows 2008ドメイン・コントローラのためのOracle Kerberosクライアントの構成
Microsoft Windows 2008ドメイン・コントローラKDCと相互運用するようにOracle Kerberosクライアントを構成できます。 - ステップ2: OracleクライアントのためのMicrosoft Windows Serverドメイン・コントローラKDCの構成
次に、Oracleクライアントと相互運用するようにMicrosoft Windows Serverドメイン・コントローラKDCを構成します。 - ステップ3: Microsoft Windows Serverドメイン・コントローラKDCのためのOracleデータベースの構成
Oracleデータベースがインストールされているホスト・コンピュータでドメイン・コントローラに対してOracleデータベースを構成する必要があります。 - ステップ4: Kerberos/Oracleユーザーの初期チケットの取得
クライアントがデータベースに接続するには、初期チケットを要求する必要があります。
親トピック: Kerberos認証の構成
22.4.1 Microsoft Windows Serverドメイン・コントローラKDCとの相互運用性の構成について
Oracle Databaseは、MIT Kerberosに準拠しています。
そのためOracle Databaseは、Microsoft Windows Serverドメイン・コントローラ上のKerberosキー発行センター(KDC)から発行されたチケットとの相互運用が可能です。このプロセスにより、OracleデータベースでのKerberos認証が可能になります。
22.4.2 ステップ1: Windows 2008ドメイン・コントローラのためのOracle Kerberosクライアントの構成
Windows 2008ドメイン・コントローラKDCと相互運用するようにOracle Kerberosクライアントを構成できます。
- ステップ1A: クライアントKerberos構成ファイルの作成
Windows 2008ドメイン・コントローラをKerberos KDCとして参照する一連のクライアントKerberos構成ファイルを構成する必要があります。 - ステップ1B: sqlnet.oraファイルでのOracle構成パラメータの指定
Microsoft Windows Serverドメイン・コントローラKerberos Key Distribution Center (KDC)と相互運用するようにOracleクライアントを構成するには、クライアントとデータベース・サーバーでKerberosを構成する場合と同じsqlnet.ora
ファイルのパラメータを使用します。 - ステップ1C: tnsnames.oraを使用した追加のKerberosプリンシパルの指定(オプション)
Oracle Databaseクライアントから接続するように追加のKerberosプリンシパル・ユーザーを構成できます。 - ステップ1D: リスニング・ポート番号の指定
Microsoft Windows Serverドメイン・コントローラKDCはUDP/TCPポート88でリスニングします。
22.4.2.1 ステップ1A: クライアントKerberos構成ファイルの作成
Windows 2008ドメイン・コントローラをKerberos KDCとして参照するKerberosクライアント構成ファイルを構成する必要があります。
22.4.2.2 ステップ1B: sqlnet.oraファイルでのOracle構成パラメータの指定
Microsoft Windows Serverドメイン・コントローラKey Distribution Center(KDC)と相互運用するようにOracleクライアントを構成するには、クライアントおよびデータベース・サーバーでKerberosの構成用に使用されるものと同じsqlnet.ora
ファイルのパラメータを使用します。
22.4.2.3 ステップ1C: tnsnames.oraを使用した追加のKerberosプリンシパルの指定(オプション)
Oracle Databaseクライアントから接続するように追加のKerberosプリンシパル・ユーザーを構成できます。
22.4.3 ステップ2: OracleクライアントのためのMicrosoft Windows Serverドメイン・コントローラKDCの構成
次に、Oracleクライアントと相互運用するようにWindows Serverドメイン・コントローラKDCを構成します。
- ステップ2A: ユーザー・アカウントの作成
Microsoft Windows Serverドメイン・コントローラのKDCにユーザー・アカウントを作成する必要があります。 - ステップ2B: Oracleデータベースのプリンシパル・ユーザー・アカウントおよびキー表の作成
ユーザー・アカウントの作成後、Oracle Databaseプリンシパル・ユーザー・アカウントを作成します。
関連項目:
Active Directoryでユーザーを作成する方法の詳細は、Microsoft社のドキュメントを参照してください。
22.4.3.1 ステップ2A: ユーザー・アカウントの作成
Microsoft Windows Serverドメイン・コントローラのKDCにユーザー・アカウントを作成する必要があります。
-
Microsoft Windows Serverドメイン・コントローラで、Microsoft Active DirectoryにOracleクライアントの新規ユーザー・アカウントを作成します。
22.4.3.2 ステップ2B: Oracle Databaseのプリンシパル・ユーザー・アカウントおよびキー表の作成
ユーザー・アカウントの作成後、Oracle Databaseプリンシパル・ユーザー・アカウントを作成します。
okcreate
ユーティリティを使用して、これをプリンシパル・キー表に登録する必要があります。このユーティリティを同じKDCに対して実行して、すべてのサービス・キー表を作成できます(それらを個々に作成せずに済みます)。または、KDCに接続するサービス・エンドポイントからokcreate
を実行し、必要なコマンドを実行してから、結果のキー表をサービス・エンドポイントにコピーすることもできます。
22.4.4 ステップ3: Microsoft Windows Serverドメイン・コントローラKDCのためのOracleデータベースの構成
Oracleデータベースがインストールされているホスト・コンピュータでドメイン・コントローラに対してOracleデータベースを構成する必要があります。
- ステップ3A: sqlnet.oraファイルでの構成パラメータの設定
最初に、データベースの構成パラメータを設定する必要があります。 - ステップ3B: 外部認証されたOracleユーザーの作成
構成パラメータの設定後、外部認証されるOracleユーザーを作成します。
22.4.4.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)
ノート:
-
SQLNET.KERBEROS5_CONF_MIT
パラメータは非推奨となりましたが、okint
、oklist
およびokdstry
ユーティリティの下位互換性のため維持されています。 -
Windows Serverオペレーティング・システムはMIT Kerberosバージョン5に基づくセキュリティ・サービスとのみ相互運用するように設計されているため、
SQLNET.KERBEROS5_CONF_MIT
パラメータがTRUE
に設定されていることを確認してください。 -
sqlnet.ora
ファイル内の設定はすべてのPDBに適用されるということに注意してください。ただし、Kerberosを使用する場合は、すべてのPDBを1つのKDCで認証する必要があるという意味ではありません。sqlnet.ora
ファイルおよびKerberos構成ファイルの設定では複数のKDCをサポートできます。
22.4.4.2 ステップ3B: 外部認証されたOracleユーザーの作成
構成パラメータの設定後、外部認証されるOracleユーザーを作成します。
-
ステップ8: 外部認証されたOracleユーザーの作成の手順に従って、外部認証されたOracleユーザーを作成します。
ユーザー名はすべて大文字で作成します(たとえば、
ORAKRB@SALES.US.EXAMPLE.COM
)。
関連項目:
Oracle Net Managerを使用してsqlnet.ora
ファイルのパラメータを設定する方法の詳細は、ステップ6: Kerberos認証の構成を参照してください。
22.5 Kerberos認証フォールバック動作の構成
Kerberos認証の障害に備え、フォールバック動作(パスワードベースの認証)を構成できます。
親トピック: Kerberos認証の構成
22.6 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
を実行して新しい初期チケットを取得します。
-
- 一般的なKerberos構成の問題
Oracleは、一般的なKerberos構成の問題についてのガイダンスを提供しています。 - Kerberos構成のORA-12631エラー
ORA-12631: ユーザー名の検索に失敗しました。
エラーは、Kerberos認証に不正なプリンシパルまたは間違った形式のプリンシパルが使用されていることが原因で発生する可能性があります - Kerberos構成のORA-28575エラー
ORA-28575: 外部プロシージャ・エージェントへのRPC接続をオープンできません。
エラーは、クライアントがリモートのときにEXTPROC
プロセスが生成されると発生することがあります。 - Kerberos構成のORA-01017エラー
ORA-01017: ユーザー名/パスワードが無効です。ログオンは拒否されました。
エラーは、okinit
が失敗し、SQL*Plus接続に有効なチケットがない場合に発生する可能性があります。 - Kerberos okinit操作のトレースの有効化
KRB5_TRACE
環境変数を使用すると、Kerberosokinit
操作をトレースできます。
親トピック: Kerberos認証の構成
22.6.1 一般的な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
を実行して新しい初期チケットを取得します。
-
22.6.2 Kerberos構成のORA-12631エラー
ORA-12631: ユーザー名の検索に失敗しました。
エラーは、Kerberos認証に不正なプリンシパルまたは間違った形式のプリンシパルが使用されていることが原因で発生する可能性があります
出力で、Wrong principal in request
のsqlnet
サーバー・トレース・ファイルを確認します。
この問題を修正するには、krb5.conf
ファイルを編集して、[domain_realm]
の設定を確認します。これらの設定では大文字と小文字が区別されるため、domain_realm
名が正しいとしても、小文字の場合は正しく解析されません。この設定が大文字になっていることを確認します。たとえば:
[domain_realm]
.country.<DOMAIN_NAME> = SECWIN.LOCAL
country.<DOMAIN_NAME> = SECWIN.LOCAL
22.6.3 Kerberos構成のORA-28575エラー
ORA-28575: 外部プロシージャ・エージェントへのRPC接続をオープンできません。
エラーは、クライアントがリモートのときにEXTPROC
プロセスが生成されると発生することがあります。
外部プロシージャ・コールにはKerberos認証は不要です。この問題を修正するには、sqlnet.ora
ファイルのKERBEROS5
およびKERBEROS5PRE
パラメータの前にBEQ
を追加します。
22.6.4 Kerberos構成のORA-01017エラー
ORA-01017: ユーザー名/パスワードが無効です。ログオンは拒否されました。
エラーは、okinit
が失敗し、SQL*Plus接続に有効なチケットがない場合に発生する可能性があります。
okinit
トレース・ファイルに、次のエラーが示されます。
nauk5l_sendto_kdc: entry
snauk5l_sendto_kdc: exit
snauk5l_sendto_kdc: exit
nauk5la_get_in_tkt: Returning 25: Additional pre-authentication required
.
snauk5l_sendto_kdc: exit
snauk5l_sendto_kdc: exit
nauk5la_get_in_tkt: Returning 24: Preauthentication failed
.
nauk5la_get_in_tkt: exit
nauk5zi_kinit: Getting TGT failed: Preauthentication failed
.
nauk5fq_free_principal: entry
nauk5fq_free_principal: exit
nauk5fq_free_principal: entry
nauk5fq_free_principal: exit
nauk5zi_kinit: Returning 24: Preauthentication failed
.
nauk5zi_kinit: exit
この問題を解決するには:
krb5.conf
ファイルで、default_tkt_enctypes
パラメータを設定します。これにより、クライアントからリクエストされる暗号化のタイプを制御できます。たとえば:default_tgs_enctypes = aes256-cts-hmac-sha1-96 default_tkt_enctypes = aes256-cts-hmac-sha1-96
- 次のオプションを指定して、
okinit
をテストします。okinit user_name
DES暗号化アルゴリズムがActive Directoryサーバーに実装されていないと、
okinit
は失敗します。okinit user_name Kerberos Utilities for Solaris: Version 23.0.0.0.0 - Production on 15-MAY-2023 11:50:39 Copyright (c) 1996, 2023 Oracle. All rights reserved. Password for user_name@domain: okinit: KDC has no support for encryption type okinit user_name Kerberos Utilities for Solaris: Version 23.0.0.0.0 - Production on 15-MAY-2023 11:50:39 Copyright (c) 1996, 2023 Oracle. All rights reserved. Password for user_name@domain: okinit: Preauthentication failed
ただし、次が成功します。
okinit user_name Kerberos Utilities for Solaris: Version 23.0.0.0.0 - Production on 15-MAY-2023 11:50:39 Copyright (c) 1996, 2023 Oracle. All rights reserved. Password for user_name@domain:
oklist
ユーティリティは、チケットからユーザー・プリンシパルをリスト表示します。有効なチケットが存在する場合は、通常の方法で接続できます。okinit
が正常に完了したら、次に示すように、ユーザー名やパスワードを使用せずにOracle Databaseサーバーに接続できます。% sqlplus /@service_name