|
|
CORBA セキュリティ API
ここでは、次の内容について説明します。
CORBA セキュリティ API の C++、Java、およびオートメーション・メソッドの説明については、以下の項目を参照してください。
CORBA セキュリティ・モデル
BEA Tuxedo 製品の CORBA 環境のセキュリティ・モデルは、セキュリティのフレームワークのみを定義します。BEA Tuxedo 製品は、異なるセキュリティ・メカニズムをサポートする柔軟性と、特定の CORBA アプリケーションに対応したレベルの機能と確実性の実現に使用できる方針を提供します。
CORBA 環境のセキュリティ・モデルは、以下を定義します。
CORBA 環境のセキュリティ・モデルは、CORBA サービス・セキュリティ・サービス仕様で定義したセキュリティ・モデルと、BEA Tuxedo 製品の ATMI 環境にある、機能を特化して単純化したセキュリティ・モデルを提供する、値を追加した拡張の組み合わせです。
以下の節では、CORBA セキュリティ・モデルの一般的な特性を説明します。
プリンシパルの認証
プリンシパル (個々のユーザ、クライアント・アプリケーション、サーバ・アプリケーション、共同クライアント/サーバ・アプリケーション、または IIOP リスナ/ハンドラなど) の認証を使用すると、セキュリティ担当者は、登録したプリンシパルのみがシステムのオブジェクトにアクセスできるようにすることができます。認証されたプリンシパルは、オブジェクトへのアクセスを制御する主要なメカニズムとして使用します。プリンシパルの認証を使用すると、セキュリティ・メカニズムで以下のことが可能になります。。
オブジェクトへのアクセスの制御
CORBA セキュリティ・モデルは、セキュリティ担当者が、BEA Tuxedo ドメインに対するアクセスを権限のあるユーザのみに制限できる単純なフレームワークを提供します。オブジェクトへのアクセスを制限すると、セキュリティ担当者は、権限のないプリンシパルによるオブジェクトへのアクセスを禁止できます。アクセス制御フレームワークは、2 つの部分で構成されています。
管理者による制御
システム管理者には、CORBA アプリケーションに対するセキュリティ方針の設定する役割があります。BEA Tuxedo 製品は、一連のコンフィギュレーション・パラメータとユーティリティを提供します。コンフィギュレーション・パラメータとユーティリティを使用すると、システム管理者は、プリンシパルを認証し、BEA Tuxedo ソフトウェアがインストールされているシステムにそのプリンシパルがアクセスできるように CORBA アプリケーションをコンフィギュレーションできます。コンフィギュレーション・パラメータを設定するには、システム管理者は、tmloadcf
コマンドを使用し、特定の CORBA アプリケーションのコンフィギュレーション・ファイルを更新します。
CORBA アプリケーションのセキュリティのコンフィギュレーションについては、SSL プロトコルのコンフィギュレーションおよび認証のコンフィギュレーションを参照してください。
CORBA セキュリティ環境で機能するコンポーネント
CORBA セキュリティ・モデルは、BEA Tuxedo ドメインに対してプリンシパルを認証するプロセスを基にしています。CORBA セキュリティ環境のオブジェクトは、プリンシパルの認証に使用します。プリンシパルは、パスワードなどの ID および認証データをクライアント・アプリケーションに提供します。クライアント・アプリケーションは、Principal Authenticator オブジェクトを使用して、プリンシパルの認証に必要な呼び出しを実行します。認証されたプリンシパルのクリデンシャルは、セキュリティ・システムの SecurityCurrent オブジェクトのインプリメンテーションと関連付けられ、Credentials オブジェクトで表されます。
図 13-1 では、CORBA セキュリティ・モデルで使用する認証プロセスを示しています。
図13-1 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::CertificateBased
の Security::AuthenticationMethod
値を指定することで制御します。証明書による認証を使用する場合、PrincipalAuthenticator::authenticate
オペレーションのインプリメンテーションは、プリンシパルの秘密鍵とデジタル証明書を取得し、それを SSL プロトコルで使用するように登録して、プリンシパルのクリデンシャルを取得する必要があります。
PrincipalAuthenticator::authenticate
オペレーションの security_name
パラメータと auth_data
パラメータは、プリンシパルの秘密鍵を開くために使用します。ユーザが、この 2 つのパラメータで適切な値を指定しなかった場合は、秘密鍵を開くことができず、認証は失敗します。秘密鍵が正常に開かれると、プリンシパルのローカル ID を表すデジタル証明書チェーンが構築されます。秘密鍵とデジタル証明書チェーンは、SSL プロトコルで使用されるように登録する必要があります。
BEA TuxedoPrincipal Authenticator オブジェクトに対する拡張
BEA Tuxedo 製品の CORBA 環境は、BEA 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 オブジェクト (図 13-2 を参照) は、プリンシパルのセキュリティ属性を保持します。Credentials オブジェクトは、そのオブジェクトが表すプリンシパルのセキュリティ属性を取得および設定するためのメソッドを提供します。これらのセキュリティ属性には、認証済みまたは認証を受けていない ID および権限が含まれています。Credentials オブジェクトにも、セキュリティの関連付けが確立されていない情報が含まれています。
Credentials オブジェクトは、以下のプロセスの結果として作成されます。
図13-2 Credentials オブジェクト
Credentials オブジェクトの複数のリファレンスがサポートされています。Credentials は状態を持つオブジェクトです。Credentials オブジェクトの作成対象となったプリンシパルの代わりに状態を保持します。この情報には、プリンシパルの ID と権限を決定するのに必要な情報が含まれています。Credentials オブジェクトは、オブジェクトを作成した Principal Authenticator オブジェクトに関連付けられていませんが、プリンシパルの ID を認証する認証局を示している必要があります。
Credentials オブジェクトは、位置制約付きオブジェクトです。したがって、DII/DSI 機能を介して Credentials オブジェクトを使用することはできません。このオブジェクトの現在のプロセス外にリファレンスを渡そうとしたり、CORBA::ORB::object_to_string
を使用してオブジェクトを外部化しようとすると、CORBA::MARSHAL
例外が発生します。
Credentials オブジェクトは、アプリケーション開発者が、セキュリティ保護された接続に対してセキュリティ属性を指定できるように機能拡張されています。これらの属性を使用すると、セキュリティ保護された接続で整合性、信頼性、またはその両方が必要かどうかを指定できます。この機能をサポートするために、SecurityLevel2::Credentials
インターフェイスに 2 つの属性が追加されています。
invocation_options_supported
属性は、セキュリティ保護された接続を確立したときに使用可能なセキュリティ・オプションを示します。invocation_options_required
属性を使用すると、アプリケーション開発者は、セキュリティ保護された接続の確立に使用する必要がある必要最低限のセキュリティ・オプションを指定できます。
SecurityCurrent オブジェクト
SecurityCurrent オブジェクト (図 13-3 を参照) は、プリンシパルとターゲット・オブジェクトの両方で現在の実行コンテキストを表します。SecurityCurrent オブジェクトは、現在の実行コンテキストに関連付けられたサーバ固有の状態情報を表します。クライアント・アプリケーションとサーバ・アプリケーションの両方が、実行のスレッドに関連付けられた状態と、スレッド実行中のプロセスを表す SecurityCurrent オブジェクトを持っています。
図13-3 SecurityCurrent オブジェクト
SecurityCurrent オブジェクトは、シングルトン・オブジェクトです。つまり、プロセス・アドレス領域で許可されるインスタンスは 1 つだけです。SecurityCurrent オブジェクトの複数のリファレンスがサポートされています。
CORBA サービス・セキュリティ・サービス仕様は、セキュリティに関連付けられている SecurityCurrent オブジェクトのインターフェイスを 2 つ定義します。
SecurityLevel1::Current
。CORBA::Current
から派生したものです。SecurityLevel2::Current
。SecurityLevel1::Current
から派生したものです。2 つのインターフェイスは、実行コンテキストに関連付けられたセキュリティ情報へのアクセスを提供します。
どの段階でも、クライアント・アプリケーションは、Current::get_credentials
メソッドを呼び出して、呼び出しのクリデンシャルを要求することで、以降の呼び出しに対するデフォルト・クリデンシャルを決定できます。デフォルト・クリデンシャルは、オブジェクト・リファレンスを使用するすべての呼び出しで使用されます。
Current::get_attributes
メソッドがクライアント・アプリケーションによって呼び出された場合、Credentials オブジェクトから返された属性はプリンシパルのものです。
SecurityCurrent オブジェクトは、位置制約付きオブジェクトです。したがって、DII/DSI 機能を介して SecurityCurrent オブジェクトを使用することはできません。このオブジェクトの現在のプロセス外にリファレンスを渡そうとしたり、CORBA::ORB::object_to_string
を使用してオブジェクトを外部化しようとしたりすると、CORBA::MARSHAL
例外が発生します。
|
Copyright © 2001, BEA Systems, Inc. All rights reserved.
|