目次 前 次 PDF


CORBAセキュリティAPI

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環境のセキュリティ・モデルは、次を定義します。
クライアント・アプリケーションが、Oracle Tuxedoドメインでオブジェクトにアクセスできるようになるための条件
プリンシパルがOracle Tuxedoドメインに対して自身を認証するのに必要な証明資料のタイプ
CORBA環境のセキュリティ・モデルは、CORBAサービス・セキュリティ・サービス仕様で定義したセキュリティ・モデルと、Oracle Tuxedo製品のATMI環境にある、機能を特化して単純化したセキュリティ・モデルを提供する、値を追加した拡張の組合せです。
次の項では、CORBAセキュリティ・モデルの一般的な特性を説明します。
プリンシパルの認証
プリンシパル(個々のユーザー、クライアント・アプリケーション、サーバー・アプリケーション、共同クライアント/サーバー・アプリケーション、またはIIOPリスナー/ハンドラなど)の認証を使用すると、セキュリティ担当者は、登録したプリンシパルのみがシステムのオブジェクトにアクセスできるようにすることができます。認証されたプリンシパルは、オブジェクトへのアクセスを制御する主要なメカニズムとして使用します。プリンシパルの認証を使用すると、セキュリティ・メカニズムで次のことが可能になります。
プリンシパルをそれぞれのアクションに対応したものにすることができます。
保護されたオブジェクトへのアクセスを制御できます。
リクエストの発信元を識別できます。
リクエストのターゲットを識別できます。
オブジェクトへのアクセスの制御
CORBAセキュリティ・モデルは、セキュリティ担当者が、Oracle Tuxedoドメインに対するアクセスを権限のあるユーザーのみに制限できる単純なフレームワークを提供します。オブジェクトへのアクセスを制限すると、セキュリティ担当者は、権限のないプリンシパルによるオブジェクトへのアクセスを禁止できます。アクセス制御フレームワークは、2つの部分で構成されています。
オブジェクト呼出しに対して自動的に適用されるオブジェクト呼出しポリシー
ユーザーが記述したアプリケーションが使用するアプリケーション・アクセス・ポリシー
管理者による制御
システム管理者には、CORBAアプリケーションに対するセキュリティ・ポリシーの設定を行う役割があります。Oracle Tuxedo製品は、一連の構成パラメータとユーティリティを提供します。構成パラメータとユーティリティを使用すると、システム管理者は、プリンシパルを認証し、Oracle TuxedoソフトウェアがインストールされているシステムにそのプリンシパルがアクセスできるようにCORBAアプリケーションを構成できます。構成パラメータを設定するには、システム管理者は、tmloadcfコマンドを使用し、特定のCORBAアプリケーションの構成ファイルを更新します。
CORBAアプリケーションのセキュリティの構成については、6-1ページの「SSLプロトコルの構成」および7-1ページの「認証の構成」を参照してください。
CORBAセキュリティ環境で機能するコンポーネント
CORBAセキュリティ・モデルは、Oracle Tuxedoドメインに対してプリンシパルを認証するプロセスを基にしています。CORBAセキュリティ環境のオブジェクトは、プリンシパルの認証に使用します。プリンシパルは、パスワードなどのIDおよび認証データをクライアント・アプリケーションに提供します。クライアント・アプリケーションは、Principal Authenticatorオブジェクトを使用して、プリンシパルの認証に必要な呼出しを実行します。認証されたプリンシパルの資格証明は、セキュリティ・システムのSecurityCurrentオブジェクトの実装と関連付けられ、Credentialsオブジェクトで表されます。
図12-1に、CORBAセキュリティ・モデルで使用する認証プロセスを示します。
図12-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::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オブジェクトのコピー
SecurityCurrentオブジェクトを介したCredentialsオブジェクトの要求
図12-2 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オブジェクト(図12-3を参照)は、プリンシパルとターゲット・オブジェクトの両方で現在の実行コンテキストを表します。SecurityCurrentオブジェクトは、現在の実行コンテキストに関連付けられたサーバー固有の状態情報を表します。クライアント・アプリケーションとサーバー・アプリケーションの両方が、実行のスレッドに関連付けられた状態と、スレッド実行中のプロセスを表すSecurityCurrentオブジェクトを持っています。
図12-3 SecurityCurrentオブジェクト
SecurityCurrentオブジェクトは、シングルトン・オブジェクトです。つまり、プロセス・アドレス領域で許可されるインスタンスは1つだけです。SecurityCurrentオブジェクトの複数のリファレンスがサポートされています。
CORBAサービス・セキュリティ・サービス仕様は、セキュリティに関連付けられているSecurityCurrentオブジェクトのインタフェースを2つ定義します。
SecurityLevel1::CurrentCORBA::Currentから派生したものです。
SecurityLevel2::CurrentSecurityLevel1::Currentインタフェースから派生したものです。
2つのインタフェースは、実行コンテキストに関連付けられたセキュリティ情報へのアクセスを提供します。
どの段階でも、クライアント・アプリケーションは、Current::get_credentialsメソッドを呼び出して、呼出しの資格証明を要求することで、以降の呼出しに対するデフォルトの資格証明を決定できます。デフォルトの資格証明は、オブジェクト・リファレンスを使用するすべての呼出しで使用されます。
Current::get_attributesメソッドがクライアント・アプリケーションによって呼び出された場合、Credentialsオブジェクトから返された属性はプリンシパルのものです。
SecurityCurrentオブジェクトは、位置制約付きオブジェクトです。このため、DII/DSI機能を介してSecurityCurrentオブジェクトを使用することはできません。このオブジェクトの現在のプロセス外に参照を渡すか、CORBA::ORB::object_to_stringを使用してオブジェクトを外部化すると、CORBA::MARSHAL例外が発生します。
 

Copyright ©1994, 2017,Oracle and/or its affiliates. All rights reserved