![]() ![]() ![]() ![]() ![]() ![]() ![]() |
注意: | 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++およびオートメーション・メソッドの説明については、以下の項目を参照してください。
Oracle Tuxedo製品のCORBA環境のセキュリティ・モデルは、セキュリティのフレームワークのみを定義します。 Oracle Tuxedo製品は、異なるセキュリティ・メカニズムをサポートする柔軟性と、特定のCORBAアプリケーションに対応したレベルの機能と確実性の実現に使用できるポリシーを提供します。
CORBA環境のセキュリティ・モデルは、CORBAサービス・セキュリティ・サービス仕様で定義したセキュリティ・モデルと、Oracle Tuxedo製品のATMI環境にある、機能を特化して単純化したセキュリティ・モデルを提供する、値を追加した拡張の組合せです。
以下の項では、CORBAセキュリティ・モデルの一般的な特性を説明します。
プリンシパル(個々のユーザー、クライアント・アプリケーション、サーバー・アプリケーション、共同クライアント/サーバー・アプリケーション、またはIIOPリスナー/ハンドラなど)の認証を使用すると、セキュリティ担当者は、登録したプリンシパルのみがシステムのオブジェクトにアクセスできるようにすることができます。 認証されたプリンシパルは、オブジェクトへのアクセスを制御する主要なメカニズムとして使用します。 プリンシパルの認証を使用すると、セキュリティ・メカニズムで以下のことが可能になります。
CORBAセキュリティ・モデルは、セキュリティ担当者が、Oracle Tuxedoドメインに対するアクセスを権限のあるユーザーのみに制限できる単純なフレームワークを提供します。オブジェクトへのアクセスを制限すると、セキュリティ担当者は、権限のないプリンシパルによるオブジェクトへのアクセスを禁止できます。アクセス制御フレームワークは、2つの部分で構成されています。
システム管理者には、CORBAアプリケーションに対するセキュリティ・ポリシーの設定を行う役割があります。Oracle Tuxedo製品は、一連の構成パラメータとユーティリティを提供します。構成パラメータとユーティリティを使用すると、システム管理者は、プリンシパルを認証し、Oracle TuxedoソフトウェアがインストールされているシステムにそのプリンシパルがアクセスできるようにCORBAアプリケーションを構成できます。構成パラメータを設定するには、システム管理者は、tmloadcf
コマンドを使用し、特定のCORBAアプリケーションの構成ファイルを更新します。
CORBAアプリケーションのセキュリティの構成については、「SSLプロトコルの構成」および「認証の構成」を参照してください。
CORBAセキュリティ・モデルは、Oracle Tuxedoドメインに対してプリンシパルを認証するプロセスを基にしています。CORBAセキュリティ環境のオブジェクトは、プリンシパルの認証に使用します。プリンシパルは、パスワードなどのIDおよび認証データをクライアント・アプリケーションに提供します。クライアント・アプリケーションは、Principal Authenticatorオブジェクトを使用して、プリンシパルの認証に必要な呼出しを実行します。認証されたプリンシパルの資格証明は、セキュリティ・システムのSecurityCurrentオブジェクトの実装と関連付けられ、Credentialsオブジェクトで表されます。
図12-1に、CORBAセキュリティ・モデルで使用する認証プロセスを示します。
以下の項では、CORBAセキュリティ・モデルのオブジェクトについて説明します。
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オブジェクトは、証明書による認証をサポートするように機能拡張されています。証明書による認証の使用は、PrincipalAuthenticator::authenticate
オペレーションに対するパラメータとしてTobj::CertificateBased
のSecurity::AuthenticationMethod
値を指定することで制御します。証明書による認証を使用する場合、PrincipalAuthenticator::authenticate
オペレーションの実装は、プリンシパルの秘密鍵とデジタル証明書を取り出し、それをSSLプロトコルで使用するように登録して、プリンシパルの資格証明を取得する必要があります。
PrincipalAuthenticator::authenticate
オペレーションのsecurity_name
パラメータとauth_data
パラメータは、プリンシパルの秘密鍵を開くために使用します。 ユーザーが、この2つのパラメータで適切な値を指定しなかった場合は、秘密鍵を開くことができず、認証は失敗します。 秘密鍵が正常に開かれると、プリンシパルのローカルIDを表すデジタル証明書チェーンが構築されます。 秘密鍵とデジタル証明書チェーンは、SSLプロトコルで使用されるように登録する必要があります。
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オブジェクト(図12-2を参照)は、プリンシパルのセキュリティ属性を保持します。 Credentialsオブジェクトは、そのオブジェクトが表すプリンシパルのセキュリティ属性を取得および設定するためのメソッドを提供します。 これらのセキュリティ属性には、認証済みまたは認証を受けていないIDおよび権限が含まれています。 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オブジェクト(図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
例外が発生します。
![]() ![]() ![]() |