Kerberosは、信頼性のあるサード・パーティ認証システムです。これは、共有秘密に依存するもので、サード・パーティが安全であることが前提になります。Kerberos認証を使用するようにOracle Databaseを構成できます。
内容は次のとおりです。
関連項目:
KerberosユーザーをKerberos認証のエンタープライズ・ユーザーに移行する方法の詳細は、『Oracle Databaseエンタープライズ・ユーザー・セキュリティ管理者ガイド』を参照してください。Oracle Databaseに対してKerberos認証を有効にするには、これをインストールしてから一連の構成手順に従います。
内容は次のとおりです。
Kerberosバージョン5をインストールしてください。
Kerberosの構築とインストールに関する注意事項の供給元配布資料に詳細が記載されています。Kerberosのインストール後、POWERシステム(64ビット)でIBM AIXを使用する場合、Kerboros 5が推奨の認証方式であることを確認する必要があります。
Kerberosを使用して自己を認証するクライアントの識別情報をOracleデータベース・サーバーで検証できるようにするには、Oracle Databaseのサービス・プリンシパルを作成する必要があります。
次に、Kerberosからサービス・キー表を抽出し、Oracleデータベース・サーバー/Kerberosクライアント・システムにコピーします。
たとえば、dbserver.example.com
のサービス・キー表を抽出するには、次の手順を実行します。
Kerberosからサービス・キー表を抽出した後、Oracleデータベース・サーバーおよびOracleクライアントをインストールします。
Oracleデータベース・サーバーおよびクライアント・ソフトウェアのインストールの詳細は、Oracle Databaseオペレーティング・システムに固有のインストール・ドキュメントを参照してください。
Oracleデータベース・サーバーとクライアントのインストール後、サーバーとクライアントでOracle Net Servicesを構成できます。
Oracleデータベース・サーバーおよびクライアントでのOracle Net Servicesの構成の詳細は、次のドキュメントを参照してください。
オペレーティング・システム固有のOracle Databaseインストール関連ドキュメント
Oracle Database Net Services管理者ガイド
Oracleデータベース・サーバーおよびクライアントのsqlnet.ora
ファイルで必須パラメータを設定する必要があります。
マルチテナント環境では、sqlnet.ora
ファイルの設定はすべてのプラガブル・データベース(PDB)に適用されることに注意してください。
次に、OS_AUTHENT_PREFIX
初期化パラメータを設定します。
注意:
30文字を超えるKerberosユーザー名を持つ外部データベース・ユーザーを作成できます。詳細は、「手順8: 外部認証されたOracleユーザーの作成」を参照してください。
セキュリティを強化するために、必須パラメータに加えて、オプションのsqlnet.ora
パラメータを設定できます。
オプションで、クライアントおよびOracleデータベース・サーバーの両方に、次の表に示すパラメータを設定します。
表17-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 |
管理ツールがインストールされている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
次に、外部認証されるOracleユーザーを作成します。
注意:
データベース管理者は、2つのデータベース・ユーザーが同じKerberosプリンシパル名で外部から識別されないことを確認する必要があります。
データベースに接続するには、Key Distribution Center (KDC)に初期チケットを要求する必要があります。
初期チケットを要求するには、クライアントで次のコマンドを実行します。
% okinit username
データベース・リンク間で使用可能な資格証明を有効にするには、-f
オプションを含めて、プロンプトが表示された場合はKerberosパスワードを指定します。
% okinit -f Password for krbuser@EXAMPLE.COM:(password does not display)
Oracle Kerberos認証アダプタのユーティリティは、Oracle Kerberos認証サポートがインストールされたOracleクライアントで使用するように設計されています。
内容は次のとおりです。
okinit
ユーティリティでは、Kerberosチケットを取得し、キャッシュします。
通常は、このユーティリティを使用してチケット認可チケットを取得し、ユーザーが入力したパスワードを使用してkey distribution center (KDC)からの資格証明を復号化します。チケット認可チケットは、ユーザーの資格証明キャッシュに格納されます。
表17-2に、okinit
で使用可能なオプションを示します。
表17-2 okinitユーティリティのオプション
オプション | 説明 |
---|---|
|
転送可能なチケット認可チケットを要求します。データベース・リンクをたどる場合は、このオプションが必要です。 |
|
チケット認可チケットおよびすべての後続チケットの存続期間を指定します。デフォルトで、チケット認可チケットは8時間有効ですが、存続期間がより短いまたは長い資格証明を指定することもできます。KDCはこのオプションを無視したり、各サイトで指定できる時間を制限したりできます。次の例に示すように、存続期間の値は、 okinit -l 2wld6h20m30s この例では、存続期間が2週間と1日6時間20分30秒のチケット認可チケットが要求されます。 |
|
代替資格証明キャッシュを指定します。UNIXでは、デフォルトは |
|
使用するKerberos暗号化タイプを表す数字を指定します。 このオプションは、セッションに対して特定のKerberos暗号化タイプの鍵を要求する場合に使用できます。複数の暗号化タイプを指定すると、KDCでは一般的で最も強力な暗号化タイプがリストから選択されます。 許容される値は次のとおりです。
次の例では、 okinit -e 18 krbuser@REALM 複数の暗号化タイプを要求するには、このオプションを繰り返します。 |
|
コマンドライン・オプションのリストを表示します。 |
oklist
ユーティリティを実行して、保持しているチケットのリストを表示できます。
表17-3に、使用可能なokinit
オプションを示します。
表17-3 oklistユーティリティのオプション
オプション | 説明 |
---|---|
|
資格証明のフラグを表示します。関連するフラグは次のとおりです。
|
|
代替資格証明キャッシュを指定します。UNIXでは、デフォルトは |
|
UNIX上のサービス表のエントリ(デフォルト |
フラグ表示オプション(-f
)によって、次のような追加情報が表示されます。
% oklist -f 27-Jul-1999 21:57:51 28-Jul-1999 05:58:14 krbtgt/EXAMPLE.COM@EXAMPLE.COM Flags: FI
Kerberosの構成後は、ユーザー名やパスワードを使用しないでOracleデータベース・サーバーに接続できます。
次の構文を使用して、ユーザー名やパスワードを入力しないでデータベースに接続します。
$ sqlplus /@net_service_name
ここで、net_service_name
は、Oracle Net Servicesのサービス名です。例:
$ sqlplus /@oracle_dbname
関連項目:
外部認証の詳細は、『Oracle Database Heterogeneous Connectivityユーザーズ・ガイド』を参照してください。
Oracle DatabaseはMIT Kerberosに準拠しており、OracleデータベースでのKerberos認証を可能にするために、Windows 2008ドメイン・コントローラ上で、Kerberos Key Distribution Center (KDC)によって発行されたチケットを相互運用できます。
内容は次のとおりです。
Microsoft Windows 2008ドメイン・コントローラKDCと相互運用するようにOracle Kerberosクライアントを構成するには、次の手順を実行する必要があります。Oracle Kerberosクライアントで、次の手順を実行します。
内容は次のとおりです。
Windows 2008ドメイン・コントローラをKerberos KDCとして参照するKerberosクライアント構成ファイルを構成する必要があります。
krb.conf
、krb5.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
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
に設定されていることを確認してください。
次に、Oracleクライアントと相互運用するようにWindows 2008ドメイン・コントローラKDCを構成します。Windows 2008ドメイン・コントローラで、次の手順を実行する必要があります。
内容は次のとおりです。
関連項目:
Active Directoryでユーザーを作成する方法の詳細は、Microsoft社のドキュメントを参照してください。
Microsoft Windows 2008ドメイン・コントローラのKDCにユーザー・アカウントを作成する必要があります。
Windows 2008ドメイン・コントローラで、Microsoft Active DirectoryにOracleクライアントの新規ユーザー・アカウントを作成します。
ユーザー・アカウントの作成後、Oracle Databaseプリンシパル・ユーザー・アカウントを作成します。
ユーザー・アカウントの作成後、Oracle Databaseプリンシパル・ユーザー・アカウントを作成します。
関連項目:
Windows 2008とKerberos 5の相互運用の詳細は、次のURLを参照してください。
http://technet.microsoft.com/hi-in/windowsserver/2000/bb735396(en-us).aspx
Oracleデータベースがインストールされているホスト・コンピュータでドメイン・コントローラに対してOracleデータベースを構成する必要があります。
内容は次のとおりです。
最初に、データベースの構成パラメータを設定する必要があります。
データベース・サーバーの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に適用されることに注意してください。
構成パラメータの設定後、外部認証されるOracleユーザーを作成します。
手順8: 外部認証されたOracleユーザーの作成の手順に従って、外部認証されたOracleユーザーを作成します。
ユーザー名はすべて大文字で作成します(例: ORAKRB@SALES.US.EXAMPLE.COM
)。
関連項目:
Oracle Net Managerを使用してsqlnet.ora
ファイルのパラメータを設定する方法の詳細は、手順6: Kerberos認証の構成を参照してください。
クライアントがデータベースに接続するには、初期チケットを要求する必要があります。
初期チケットを要求するには、手順9: Kerberos/Oracleユーザーの初期チケットの取得のタスク情報に従います。
注意:
ユーザーは、Windows固有のキャッシュを使用する場合、okinit
コマンドを使用して初期チケットを明示的に要求する必要はありません。
OracleクライアントがMicrosoft Windows 2008以上で実行されている場合、KerberosチケットはユーザーがWindowsにログインしたときに自動的に取得されます。
関連項目:
システムのKerberosチケット情報を表示するために使用できるKerbtray.exe
ユーティリティの詳細は、Microsoft社のドキュメントを参照してください。
Kerberos認証の障害に備え、フォールバック動作(パスワードベースの認証)を構成できます。
関連項目:
SQLNET.FALLBACK_AUTHENTICATION
パラメータの詳細は、『Oracle Database Net Servicesリファレンス』を参照してください。一般的な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
を実行して新しい初期チケットを取得します。