Tuxedo CORBA アプリケーションのセキュリティ機能

     前  次    新しいウィンドウで目次を開く     
ここから内容の開始

CORBA セキュリティ API

ここでは、以下の内容について説明します。

注意 : Oracle Tuxedo CORBA Java クライアントと Oracle Tuxedo CORBA Java クライアント ORB は Tuxedo 8.1 で非推奨になり、今後はサポートされなくなりました。すべての Oracle Tuxedo CORBA Java クライアントおよび Oracle Tuxedo CORBA Java クライアント ORB のテキスト リファレンスとコード サンプルは、サード パーティ製の Java ORB ライブラリを実装または実行する際の参考や、プログラマの参照用としてのみ使用してください。
注意 : サード パーティの CORBA Java ORB のテクニカル サポートは、各ベンダによって提供されます。Oracle Tuxedo では、サード パーティの CORBA Java ORB に関する技術的なサポートやマニュアルは提供していません。

CORBA セキュリティ API の C++ およびオートメーション メソッドの説明については、以下の項目を参照してください。

 


CORBA セキュリティ モデル

Oracle Tuxedo 製品の CORBA 環境のセキュリティ モデルは、セキュリティのフレームワークのみを定義します。Oracle Tuxedo 製品は、異なるセキュリティ メカニズムをサポートする柔軟性と、特定の CORBA アプリケーションに対応したレベルの機能と確実性の実現に使用できるポリシーを提供します。

CORBA 環境のセキュリティ モデルは、以下を定義します。

CORBA 環境のセキュリティ モデルは、CORBA サービス セキュリティ サービス仕様で定義したセキュリティ モデルと、Oracle Tuxedo 製品の ATMI 環境にある、機能を特化して単純化したセキュリティ モデルを提供する、値を追加した拡張の組み合わせです。

以下の節では、CORBA セキュリティ モデルの一般的な特性を説明します。

プリンシパルの認証

プリンシパル (個々のユーザ、クライアント アプリケーション、サーバ アプリケーション、共同クライアント/サーバ アプリケーション、または IIOP リスナ/ハンドラなど) の認証を使用すると、セキュリティ担当者は、登録したプリンシパルのみがシステムのオブジェクトにアクセスできるようにすることができます。認証されたプリンシパルは、オブジェクトへのアクセスを制御する主要なメカニズムとして使用します。プリンシパルの認証を使用すると、セキュリティ メカニズムで以下のことが可能になります。

オブジェクトへのアクセスの制御

CORBA セキュリティ モデルは、セキュリティ担当者が、Oracle Tuxedo ドメインに対するアクセスを権限のあるユーザのみに制限できる単純なフレームワークを提供します。オブジェクトへのアクセスを制限すると、セキュリティ担当者は、権限のないプリンシパルによるオブジェクトへのアクセスを禁止できます。アクセス制御フレームワークは、2 つの部分で構成されています。

管理者による制御

システム管理者には、CORBA アプリケーションに対するセキュリティ ポリシーの設定を行う役割があります。Oracle Tuxedo 製品は、一連のコンフィグレーション パラメータとユーティリティを提供します。コンフィグレーション パラメータとユーティリティを使用すると、システム管理者は、プリンシパルを認証し、Oracle Tuxedo ソフトウェアがインストールされているシステムにそのプリンシパルがアクセスできるように CORBA アプリケーションをコンフィグレーションできます。コンフィグレーション パラメータを設定するには、システム管理者は、tmloadcf コマンドを使用し、特定の CORBA アプリケーションのコンフィグレーション ファイルを更新します。

CORBA アプリケーションのセキュリティのコンフィグレーションについては、「SSL プロトコルのコンフィグレーション」および「認証のコンフィグレーション」を参照してください。

 


CORBA セキュリティ環境で機能するコンポーネント

CORBA セキュリティ モデルは、Oracle Tuxedo ドメインに対してプリンシパルを認証するプロセスを基にしています。CORBA セキュリティ環境のオブジェクトは、プリンシパルの認証に使用します。プリンシパルは、パスワードなどの ID および認証データをクライアント アプリケーションに提供します。クライアント アプリケーションは、Principal Authenticator オブジェクトを使用して、プリンシパルの認証に必要な呼び出しを実行します。認証されたプリンシパルの資格は、セキュリティ システムの SecurityCurrent オブジェクトの実装と関連付けられ、Credentials オブジェクトで表されます。

図 12-1 に、CORBA セキュリティ モデルで使用する認証プロセスを示します。

図 12-1 CORBA セキュリティ モデルでの認証プロセス

CORBA セキュリティ モデルでの認証プロセス

以下の節では、CORBA セキュリティ モデルのオブジェクトについて説明します。

 


Principal Authenticator オブジェクト

Principal Authenticator オブジェクトは、認証を受ける必要があって、まだ受けていないプリンシパルで、オブジェクト システムを呼び出す前に使用します。プリンシパルの認証によって、Credentials オブジェクトが作成されます。これは、アプリケーションのデフォルトの資格として使用できます。

Principal Authenticator オブジェクトは、シングルトン オブジェクトです。つまり、プロセス アドレス領域で許可されるインスタンスは 1 つだけです。また、Principal Authenticator も、ステートレス オブジェクトです。Credentials オブジェクトは、作成元の Principal Authenticator オブジェクトには関連付けられていません。

すべての Principal Authenticator オブジェクトは、CORBA サービス セキュリティ サービス仕様で定義されている SecurityLevel2::PrincipalAuthenticator インタフェースをサポートします。このインタフェースには、プリンシパルの認証に使用する 2 つのメソッドがあります。メソッドが 2 つあるのは、プリンシパルの認証では複数の手順を必要とする可能性があるからです。authenticate メソッドでは、呼び出し側は、認証を行い、必要に応じてこのセッションのプリンシパルの属性を選択できます。

セキュリティ インフラストラクチャが許可していないために呼び出しが失敗すると、標準例外 CORBA::NO_PERMISSION が発生します。セキュリティ インフラストラクチャの実装が機能をサポートしていないためにメソッドが失敗すると、標準例外 CORBA::NO_IMPLEMENT が発生します。パラメータに不適切な値を指定すると、標準例外 CORBA::BAD_PARAM が発生します。タイミングに関連する問題が起こると、CORBA::COMM_FAILURE が発生します。Bootstrap オブジェクトは、ほとんどのシステム例外を CORBA::Invalid_Domain にマッピングします。

Principal Authenticator は、位置制約付きオブジェクトです。したがって、CORBA の DII/DSI 機能を介して Principal Authenticator オブジェクトを使用することはできません。このオブジェクトの現在のプロセス外にリファレンスを渡そうとしたり、CORBA::ORB::object_to_string を使用してオブジェクトを外部化しようとしたりすると、CORBA::MARSHAL 例外が発生します。

証明書による認証での Principal Authenticator オブジェクトの使用

Principal Authenticator オブジェクトは、証明書による認証をサポートするように機能拡張されています。証明書の使用は、PrincipalAuthenticator::authenticate オペレーションに対するパラメータとして Tobj::CertificateBasedSecurity::AuthenticationMethod 値を指定することで制御します。証明書による認証を使用する場合、PrincipalAuthenticator::authenticate オペレーションの実装は、プリンシパルのプライベート キーとデジタル証明書を取り出し、それを SSL プロトコルで使用するように登録して、プリンシパルの資格を取得する必要があります。

PrincipalAuthenticator::authenticate オペレーションの security_name パラメータと auth_data パラメータは、プリンシパルのプライベート キーを開くために使用します。ユーザが、この 2 つのパラメータで適切な値を指定しなかった場合は、プライベート キーを開くことができず、認証は失敗します。プライベート キーが正常に開かれると、プリンシパルのローカル ID を表すデジタル証明書チェーンが構築されます。プライベート キーとデジタル証明書チェーンは、SSL プロトコルで使用されるように登録する必要があります。

Oracle Tuxedo Principal Authenticator オブジェクトに対する拡張

Oracle Tuxedo 製品の CORBA 環境は、Oracle Tuxedo 製品の ATMI 環境のセキュリティと同様のセキュリティ メカニズムをサポートするために Principal Authenticator オブジェクトを拡張します。拡張機能は、Tobj::PrincipalAuthenticator インタフェースを定義することで提供されます。このインタフェースは、tpinit 関数を介して ATMI 環境で使用できる機能と同様の機能を提供するメソッドを含んでいます。Tobj::PrincipalAuthenticator インタフェースは、SecurityLevel2::PrincipalAuthenticator インタフェースから派生したものです。

拡張された Principal Authenticator オブジェクトは、CORBA サービス セキュリティ サービス仕様で定義した Principal Authenticator オブジェクトと同じ規則に従います。

拡張された Principal Authenticator オブジェクトの実装では、ユーザは、認証に使用するユーザ名、クライアント名、追加認証データ (パスワードなど) を提供する必要があります。情報は、ネットワークを介して IIOP リスナ/ハンドラに送信する必要があるので、信頼性を確保するためにセキュリティ保護されています。保護には、ユーザが提供した暗号化などがあります。

Tobj::PrincipalAuthenticator インタフェースをサポートする拡張された Principal Authenticator オブジェクトは、プリンシパルの認証に SecurityLevel2::PrincipalAuthenticator インタフェースを使用するのと同等の機能を提供します。ただし、SecurityLevel2::PrincipalAuthenticator::authenticate メソッドとは異なり、Tobj::PrincipalAuthenticator インタフェースで定義された logon メソッドは、Credentials オブジェクトを返しません。

 


Credentials オブジェクト

Credentials オブジェクト (図 12-2 を参照) は、プリンシパルのセキュリティ属性を保持します。Credentials オブジェクトは、そのオブジェクトが表すプリンシパルのセキュリティ属性を取得および設定するためのメソッドを提供します。これらのセキュリティ属性には、認証済みまたは認証を受けていない ID および権限が含まれています。Credentials オブジェクトにも、セキュリティの関連付けが確立されていない情報が含まれています。

Credentials オブジェクトは、以下のプロセスの結果として作成されます。

Credentials オブジェクトの複数のリファレンスがサポートされています。Credentials はステートフル オブジェクトです。Credentials オブジェクトの作成対象となったプリンシパルの代わりに状態を保持します。この情報には、プリンシパルの ID と権限を決定するのに必要な情報が含まれています。Credentials オブジェクトは、オブジェクトを作成した Principal Authenticator オブジェクトに関連付けられていませんが、プリンシパルの ID を認証する認証局を示している必要があります。

Credentials オブジェクトは、位置制約付きオブジェクトです。したがって、DII/DSI 機能を介して Credentials オブジェクトを使用することはできません。このオブジェクトの現在のプロセス外にリファレンスを渡そうとしたり、CORBA::ORB::object_to_string を使用してオブジェクトを外部化しようとしたりすると、CORBA::MARSHAL 例外が発生します。

Credentials オブジェクトは、アプリケーション開発者が、セキュリティ保護された接続に対してセキュリティ属性を指定できるように機能拡張されています。これらの属性を使用すると、セキュリティ保護された接続で整合性、信頼性、またはその両方が必要かどうかを指定できます。この機能をサポートするために、SecurityLevel2::Credentials インタフェースに 2 つの属性が追加されています。

 


SecurityCurrent オブジェクト

SecurityCurrent オブジェクト (図 12-3 を参照) は、プリンシパルと対象オブジェクトの両方で現在の実行コンテキストを表します。SecurityCurrent オブジェクトは、現在の実行コンテキストに関連付けられたサーバ固有の状態情報を表します。クライアント アプリケーションとサーバ アプリケーションの両方が、実行のスレッドに関連付けられた状態と、スレッド実行中のプロセスを表す SecurityCurrent オブジェクトを持っています。

図 12-3 SecurityCurrent オブジェクト

SecurityCurrent オブジェクト

SecurityCurrent オブジェクトは、シングルトン オブジェクトです。つまり、プロセス アドレス領域で許可されるインスタンスは 1 つだけです。SecurityCurrent オブジェクトの複数のリファレンスがサポートされています。

CORBA サービス セキュリティ サービス仕様は、セキュリティに関連付けられている SecurityCurrent オブジェクトのインタフェースを 2 つ定義します。

2 つのインタフェースは、実行コンテキストに関連付けられたセキュリティ情報へのアクセスを提供します。

どの段階でも、クライアント アプリケーションは、Current::get_credentials メソッドを呼び出して、呼び出しの資格を要求することで、以降の呼び出しに対するデフォルトの資格を決定できます。デフォルトの資格は、オブジェクト リファレンスを使用するすべての呼び出しで使用されます。

Current::get_attributes メソッドがクライアント アプリケーションによって呼び出された場合、Credentials オブジェクトから返された属性はプリンシパルのものです。

SecurityCurrent オブジェクトは、位置制約付きオブジェクトです。したがって、DII/DSI 機能を介して SecurityCurrent オブジェクトを使用することはできません。このオブジェクトの現在のプロセス外にリファレンスを渡そうとしたり、CORBA::ORB::object_to_string を使用してオブジェクトを外部化しようとしたりすると、CORBA::MARSHAL 例外が発生します。


  ページの先頭       前  次