Oracle Containers for J2EE
セキュリティ・ガイド
10g(10.1.3.4.0) B50832-01 |
|
この章では、OC4JおよびOracle Application Serverのセキュリティの管理および構成のための各機能/ツールの概要を説明します。この章の内容は次のとおりです。
OC4Jでは、J2EE環境においてアプリケーションをデプロイおよび管理するために、次の標準がサポートされています。
J2SEおよびJ2EE環境におけるセキュリティの管理では、レルム、ユーザー、ロール、パーミッションおよびポリシーの作成および管理を行う必要があります。次のOracleツールをセキュリティ構成の管理で使用します。
oidadmin
): Oracle Internet Directoryにおいて、Oracle Identity Management用にユーザーおよびロールの管理に使用します。
これらのツールに関しては、次の各項で詳細に説明します。
注意
OC4Jセキュリティを含むOC4Jの管理ツールとして、できるだけOracle Enterprise Manager 10g Application Server Controlを使用するようにしてください。Application Server Controlがサポートしていない機能については、必要に応じてOracleAS JAAS Provider Admintoolを使用してください。場合によっては、構成ファイル、特にインスタンス・レベルの構成ファイルである |
アプリケーションのデプロイおよび管理には、通常Application Server Controlを使用します。このためのユーザー・インタフェースがApplication Server Controlコンソールです。Application Server Controlには次の機能が用意されています。
OC4J固有のXML構成ファイルは、Application Server Controlコンソールを使用すると、OC4Jによって自動更新されます。
関連項目
|
開発時に使用するOracleAS JAAS Provider Admintoolは、次の管理機能を持つ軽量のJavaアプリケーションです。
管理機能は、コマンドラインまたは対話型のシェルから直接コールできます。Admintoolは、ORACLE_HOME
/j2ee/home/jazn.jar
にあります。
一般的なコマンドライン構文は次のとおりです。
% java -jar jazn.jar [-user username -password pwd] [option1 option2 ... ]
ファイルベース・プロバイダに対してAdmintoolを使用すると、ORACLE_HOME
/j2ee/home/config
ディレクトリのsystem-jazn-data.xml
ファイルがデフォルトで更新されます。
この項では、Oracle Identity Managementをセキュリティ・プロバイダとして使用する場合の、Oracle Internet Directoryの管理ツールについての概要を説明します。
委任管理は、Oracle Identity Managementインフラストラクチャの重要な機能の1つです。ユーザー、グループおよびサービスのすべてのデータを中央のディレクトリに保存し、それらのデータの管理を複数の管理者およびエンド・ユーザーに委任できます。委任は、使用する環境の様々なセキュリティ要件を満たす方法で行われます。
たとえば、企業がすべてのユーザー、グループおよびサービスのデータを中央ディレクトリに保存しており、ユーザー・データの管理に1人の管理者、電子メール・サービスの管理にもう1人の管理者が必要であると想定します。Oracle Identity Managementインフラストラクチャが提供する委任管理を使用することで、セキュリティ要件の異なる複数の管理者が、中央で保存されているデータをセキュアでスケーラブルな方法で管理することができます。Oracle Delegated Administration Serviceで委任できる権限は、(特に)ユーザーおよびグループの作成、編集および削除、ユーザーおよびグループへの権限の割当て、サービスおよびアカウントの管理です。
Oracle Delegated Administration Service(DAS)には、ユーザーの代理として行うWebベースのディレクトリ操作単位のセットが事前定義されています。ディレクトリ管理者は、これを使用して、各役割をより多くその他の管理者およびエンド・ユーザーに委任することで、日常的なディレクトリ管理タスクから開放されます。ユーザー・エントリの作成、グループ・エントリの作成、エントリの検索およびユーザー・パスワードの変更など、ディレクトリ対応のアプリケーションで必要になるほとんどの機能が用意されています。
DASを使用すると、ディレクトリのアプリケーション・データを管理する独自のツールを開発できます。または、DASをベースにしたツールであるOracle Internet Directoryセルフ・サービス・コンソールを使用することもできます。このツールは、Oracle Internet Directoryで使用できるようになる予定です。
Oracle Directory Managerは、Javaベースのグラフィカル・ユーザー・インタフェースを持つ管理ツールであり、Oracle Internet Directoryの管理に使用できます。実行可能ファイルはORACLE_HOME
/bin
ディレクトリに置かれ、コマンドラインから次のように実行できます。
% oidadmin
一般に、Application Server Controlで実行できない、ディレクトリ固有の構成またはメンテナンス・タスクは、Oracle Directory Manager(およびOracle Internet Directoryが提供する各種コマンドライン・インタフェース)で実行できます。
Oracle Directory Managerは次のタスクに対して使用できます。
また、属性の一意性、プラグイン、ガベージ・コレクション、変更ログ、レプリケーション、問合せの最適化、デバッグのロギングおよびアクセス制御リストなどの機能も管理できます。
OC4JはJMX仕様をサポートしているため、J2EE環境においてリソースを動的に管理する、標準インタフェースを作成できます。JMXのOC4J実装によって、JMXクライアントであるシステムMBeanブラウザが提供され、OC4J付属のMBeanを介して、OC4Jインスタンスを管理できます。
MBeanは、JMXで管理可能なリソースを表すJavaオブジェクトです。OC4J内にある管理可能なリソースは、適切なMBeanのインスタンスを介して管理されます。OC4J付属の各MBeanは、Application Server ControlコンソールのシステムMBeanブラウザを介してアクセス可能な管理インタフェースを公開しています。MBean属性の設定、MBeanのメソッドをコールする操作の実行、エラーまたは特定イベントの通知のサブスクライブ、および実行統計の表示ができます。
OC4Jホームページからこのブラウザにアクセスするには、「管理」タブを選択し、タスク・リストからJMXタスクの「システムMBeanブラウザ」を選択します。ブラウザからは次の処理が可能です。
MBeanおよびその属性の変更が有効になるタイミングは様々であることに注意してください。ランタイム・モデルでは、変更がただちに有効になります。構成モデルでは、変更が有効になるタイミングには、変更の種類に応じて、リソースの再起動時、アプリケーションの再起動時、およびOC4Jの再起動時があります。変更が永続するかどうかもそれぞれ異なります。
この項では、セキュリティ構成の上で重要な、次のXMLファイルおよびその要素の概要を示します。
関連項目
orion-application.xml
(およびsystem-application.xml
)ファイルの要素の詳細は、『Oracle Containers for J2EE開発者ガイド』の付録を参照してください。
OC4Jのorion-application.xml
ファイルは、(セキュリティ関連のみでなく)一般的なアプリケーション・レベルの構成に使用されます。このファイルの設定は、1つのJ2EEアプリケーション(EARファイル)にのみ適用されます。
orion-application.xml
のセキュリティ設定は、<jazn>
要素で行います。具体的には、この要素は、セキュリティ・プロバイダ、ユーザーおよびロール・リポジトリの場所、およびアプリケーションのデフォルト・レルムを指定できます。ファイルベース・プロバイダを使用している次の例を参照してください。
<jazn provider="XML" location="./system-jazn-data.xml" default-realm="jazn.com" > ... </jazn>
(「system-jazn-data.xmlファイル」で説明しているsystem-jazn-data.xml
ファイルは、実際はデフォルトのリポジトリですが、ここでは説明上指定してあります。)
orion-application.xml
の<jazn>
のサブ要素は、Webアプリケーション用のOC4J固有の認証方式を(auth-method
属性を使用して)指定する<jazn-web-app>
要素です。
OC4J構成ファイルは、「OC4JのSystemアプリケーション」で説明されている、OC4Jのsystem
アプリケーションと関連付けられています。system
アプリケーションの場合は、system-application.xml
が、デプロイ済アプリケーションに対するorion-application.xml
ファイルに相当します。
system-application.xml
ファイルは、それに含まれる<jazn>
要素を介して、OC4Jインスタンス・レベルのユーザーおよびロール設定(特殊なOC4J機能で使用されるものを含む)にファイルベースのセキュリティ・プロバイダを指定します。system-application.xml
ファイルは、同じくインスタンス・レベルのsystem-jazn-data.xml
ファイル(次の項を参照)を、これらの設定(格納場所は<jazn-realm>
要素内)のリポジトリとして参照します。
デフォルトでは、OC4Jはsystem-application.xml
を、ORACLE_HOME
/j2ee/
instance_name
/config
ディレクトリに存在するものとみなします。
system-jazn-data.xml
ファイルは、OC4J 10.1.3実装で追加されたファイルです。このファイル(およびsystem-application.xml
)は、「OC4JのSystemアプリケーション」で説明されている、OC4Jのsystem
アプリケーションに関連付けられています。
system-application.xml
ファイルは、system-jazn-data.xml
ファイルを、ファイルベース・プロバイダに対する、OC4Jインスタンス・レベルのユーザーおよびロール設定のリポジトリとして参照します(設定は<jazn-realm>
要素下に格納されます)。ファイルベース・プロバイダは、認証および認可にsystem-jazn-data.xml
を使用します。(ファイルベース・プロバイダがデフォルトのセキュリティ・プロバイダであることに注意してください。)
アプリケーションに対してファイルベース・プロバイダを使用する場合、オプションでユーザー・リポジトリとしてsystem-jazn-data.xml
を使用することができます。また、次項「アプリケーション固有のjazn-data.xmlファイル(オプション)」で説明するように、アプリケーションとともにパッケージ化するアプリケーション固有のjazn-data.xml
ファイルを使用することもできます。
system-jazn-data.xml
ファイルには、JAASログイン・モジュール構成(<jazn-loginconfig>
要素下に)とJAASポリシー構成(<jazn-policy>
要素下に)も保存されます。
デフォルトでは、OC4Jはsystem-jazn-data.xml
ファイルを、ORACLE_HOME
/j2ee/
instance_name
/config
ディレクトリに存在するものとみなします。
変更内容をsystem-jazn-data.xml
ファイルや、(ファイルベース・プロバイダについて必要な場合に)アプリケーション・レベルのjazn-data.xml
ファイルに書き込む頻度を制御する永続性モードがあります。永続性には、インスタンス・レベルのjazn.xml
ファイルまたはアプリケーション・レベルのorion-application.xml
ファイル内の<jazn>
要素のpersistence
属性により、次に示す3種類の値があります。
次に例を示します。
<jazn provider="XML" persistence="ALL" ... > ... </jazn>
注意
|
ファイルベース・プロバイダを使用する場合は、オプションでユーザーおよびロールのリポジトリとしてjazn-data.xml
ファイルを使用できます。OC4J 10.1.3.x実装の場合、このファイルはアプリケーション固有になります。デプロイ先に応じて、orion-application.xml
ファイルの<jazn>
要素で場所を指定できます。
<jazn provider="XML" location="path/jazn-data.xml"> ... </jazn>
関連項目
|
orion-application.xml
を正確に次の例のように構成してあるが、jazn-data.xml
ファイルがアプリケーションとともにパッケージ化されていない場合は、jazn-data.xmlファイルがデプロイ時に作成されます。
<jazn provider="XML" location="./jazn-data.xml" />
また、system-jazn-data.xml
に関する前項で説明している、リポジトリへの変更に関する永続性モードは、jazn-data.xml
にも影響します。
jazn.xml
ファイルは、OracleAS JAAS Provider用のOC4Jインスタンス・レベルの構成ファイルであり、ORACLE_HOME
/j2ee/
instance_name
/config
ディレクトリに置かれます。このファイルには、インスタンス・レベルのセキュリティ・プロバイダ、ならびにポリシーおよびパーミッション設定のリポジトリを指定します。jazn.xml
ファイルの主要な要素は<jazn>
要素です。これはアプリケーション・レベル設定用のorion-application.xml
ファイルとほぼ同じ機能を持ちます。
デフォルトでは、jazn.xml
は、system-jazn-data.xml
をリポジトリとして、jazn.com
をデフォルトのレルムとして設定し、ファイルベース・プロバイダを指定します。
<jazn provider="XML" location="./system-jazn-data.xml" default-realm="jazn.com"> ... </jazn>
OC4J home
インスタンスのjazn.xml
ファイル(ブートストラップjazn.xml
ファイル)は、通常、ORACLE_HOME
/j2ee/home/config
ディレクトリに置かれます。このファイルは、OC4Jの起動時に読み取られ、OracleAS JAAS Providerランタイムによって使用されます。有効なjazn.xml
ファイルが存在しない場合は、OracleAS JAAS Providerは起動できません。
Oracle Identity Managementセキュリティ・プロバイダを使用するために、Application Server Controlを使用してOC4JをOracle Internet Directoryインスタンスと関連付けた場合は、ブートストラップjazn.xml
ファイルの<jazn>
要素がOracle Internet Directoryインスタンス用に適切に更新されます。次に例を示します。
<jazn provider="LDAP" location="ldap://myoid.oracle.com:389" default-realm="us" > ... </jazn>
オプションでシステム・プロパティを使用し、ブートストラップjazn.xml
ファイルの代替場所を指定できます。OracleAS JAAS Providerは、起動されると、jazn.xml
を次の順序で検索し、ファイルの存在を確認した時点で検索を終了します。
oracle.security.jazn.config
で指定されている場所
java.security.auth.policy
で指定されている場所
J2EE_HOME
/config
(J2EE_HOME
はシステム・プロパティoracle.j2ee.home
で指定)
ORACLE_HOME
/j2ee/home/config
(ORACLE_HOME
はシステム・プロパティoracle.home
で指定され、通常はJ2EE_HOME
/config
と同じ場所)
./config
サンプルのjazn.xml
ファイルを次にあげます。最初のファイルは、ファイルベース・プロバイダ用のデフォルト構成を含んだものです。
<?xml version="1.0" encoding="UTF-8" standalone='yes'?> <jazn xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation= "http://xmlns.oracle.com/oracleas/schema/jazn-10_0.xsd" schema-major-version="10" schema-minor-version="0" provider="XML" location="./system-jazn-data.xml" default-realm="jazn.com" />
次に示すのは、LDAPベース・プロバイダ用のデフォルト構成を含んだファイルです。
<?xml version="1.0" encoding="UTF-8" standalone='yes'?> <jazn xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation= "http://xmlns.oracle.com/oracleas/schema/jazn-10_0.xsd" schema-major-version="10" schema-minor-version="0" provider="LDAP" location="ldap://myoid.us.oracle.com:389" />
OC4Jのsystem
アプリケーションは、OC4J 10.1.3.x実装で定義される内部コンポーネントです。OC4Jを最初に起動したときに、OC4Jのインスタンスに自動デプロイされます。このアプリケーションが追加された主な理由は、OC4Jへのアプリケーションのデプロイまたは再デプロイに関する問題を解決するためです。
system
アプリケーションは、アプリケーション階層のルートに置かれ、OC4J起動時に必要なクラス(これには他のすべてのデプロイ済アプリケーションによってデフォルトでインポートされる共有ライブラリも含まれる)および構成を提供します。これはOC4Jの内部コンポーネントとしてのみ使用されます。これに対するアプリケーションのデプロイ、または他のアプリケーションの親としての宣言はできません。(すべてのデプロイ対象アプリケーションのデフォルトの親としての役割は、前のOC4J実装と同様に、OC4Jのdefault
アプリケーションが引き続き受け持ちます。)
デフォルトで、system
アプリケーションは、system-jazn-data.xml
をリポジトリとして使用し、ユーザーおよびロール設定に関してファイルベース・プロバイダを使用するように構成されます。(これは、MBeansおよびadmin_client.jar
など、すべてのシステム・リソースの認可がsystem-jazn-data.xml
内のエントリに基づいていることを意味します。)この構成を変更することはお薦めしません。
system
アプリケーションの場合は、system-application.xml
がOC4J固有のアプリケーション・ディスクリプタであり、デプロイ済アプリケーションに対するorion-application.xml
ファイルと同じ機能を持ちます。(default
アプリケーションの場合、OC4J固有のアプリケーション・ディスクリプタはapplication.xml
です。デプロイ済アプリケーションに対するJ2EE標準のapplication.xml
ファイルと混同しないでください。これはデフォルトで、system-jazn-data.xml
リポジトリも使用するdefault
アプリケーションを構成します。)これらのファイルは、ORACLE_HOME
/j2ee/
instance_name
/config
ディレクトリにあります。
この項では、主要なOC4Jアカウントのサマリーを提供します。この項の内容は次のとおりです。
OC4J 10.1.3.x実装には、Oracle Internet Directory(Oracle Identity Managementを使用する場合)またはファイルベース・プロバイダ用のブートストラップ・ユーザーとロールが事前定義され、含まれています。
ファイルベース・プロバイダの場合は、これらのアカウントが事前定義されている場所はsystem-jazn-data.xml
ファイルです。Oracle Internet Directory(OID)の場合、アカウントは、OC4JとOIDの関連付けプロセスの一環としてデフォルトで自動作成されます。
次の事前定義アカウントは、両方のプロバイダに共通です。
oc4jadmin
ユーザー(以前のadmin
)。これがデフォルトの管理者アカウントです。Oracle Application ServerまたはOC4Jのインストール中に、このアカウントのパスワードを指定する必要があります。パスワードの指定後、このアカウントを使用してApplication Server Controlコンソールにログインできます。このアカウントは、(OC4Jのsystem
アプリケーションを介した)管理機能の実行時に、Application Server Controlからも使用されます。
クラスタ環境の場合、oc4jadmin
名とパスワードは、クラスタ管理用の資格証明として機能します。クラスタ管理用の資格証明は1セットのみであるため、各OC4Jインスタンスにはデフォルトで、同じパスワードを持つoc4jadmin
アカウントが必要です。そのため、このアカウントのパスワードを変更する場合には注意が必要です。
日常の管理業務には、oc4jadmin
を使用するのではなく、追加の管理アカウントを作成することをお薦めします。
oc4j-administrators
ロール(以前のadministrators
)。メンバーとしてoc4jadmin
を含み、RMIパーミッションloginおよび管理パーミッションadministrationが付与されています(それぞれ、com.evermind.server.rmi.RMIPermission
およびoracle.security.jazn.policy.AdminPermission
)。
oc4j-app-administrators
ロール(以前のjmx-users
)。RMIパーミッションloginが付与されており、JMXのアプリケーション・レベルのコネクタにアクセスできます。
oc4jadmin
を含んだascontrol_admin
(Application Server Controlを含めたすべてのSOAコントロールの管理ロール)。
ascontrol_appadmin
(Application Server Controlの必須ロール)。
ascontrol_monitor
(Application Server Controlの必須ロール)。ファイルベース・プロバイダに対してのみ、次の追加アカウントが事前定義されています。
anonymous
ユーザー。初期段階では非アクティブです。anonymous
は、system-jazn-data.xml
ファイルで直接アクティブにします。これを行うには、そのファイル内で、<user>
要素のdeactivated
属性をtrue
からfalse
に変更します。oc4jadmin
とは異なり、OracleAS JAAS Provider Admintoolでは、anonymous
のアクティブ化はサポートされていません。
users
ロール。EJB/RMIアクセス用です。
jtaadmin
ユーザー。トランザクションをORMI全体に伝播できます。
この項で説明するアカウントは削除しないでください。削除すると、OracleAS JAAS Providerの管理機能が動作しなくなります。
関連項目
|
oc4jadmin
アカウント(以前のadmin
アカウント)は、Oracle Application Serverのインストール時にアクティブになりますが、スタンドアロンOC4Jのファイルベースのプロバイダに対しては、最初は非アクティブです。次の状況でアクティブになります。
-activateadmin
オプションを指定して実行した場合このコマンドも、その一部としてパスワードの入力が必要です。
% java -jar jazn.jar -activateadmin password
前述のように、デフォルトでは、oc4jadmin
がOC4Jの管理者アカウントになります。この項では、SOAコンポーネント(Application Server Controlコンソール やOracle Web Services Managerなど)にアクセスする場合などに代替の管理者アカウントを使用する方法と、OC4Jのsystem
アプリケーションによる内部使用について説明します。system
アプリケーションは、Application Server Controlにより、様々な管理機能(アプリケーションのデプロイとアンデプロイなど)に対して使用されます。
oc4jadmin
を使用するかわりに、新しい管理者アカウントを作成して使用することができます。これにより、Application Server ControlコンソールなどのSOAコンポーネントに(通常はJava SSOを介して)アクセスできます。ここでは、このシナリオを想定しています。
実行する手順は、SOAコンポーネントのセキュリティ・プロバイダがファイル・ベース・プロバイダかOracle Identity Managementかによって異なります。いずれのプロバイダにも、必要なRMIパーミッションが設定された主要な管理者ロールがあります(デフォルトで定義)。外部LDAPプロバイダなど他のセキュリティ・プロバイダの場合、ロールとパーミッションを手動で設定する必要があります。
ファイルベース・プロバイダまたはOracle Identity ManagementをSOAコンポーネントのセキュリティ・プロバイダとして使用する場合は、次の手順を実行してカスタム管理者アカウントを使用する必要があります。
oc4j-administrators
ロールとascontrol_admin
ロールを付与します。
admin.user
プロパティを設定し、OC4Jのsystem
アプリケーションで新しいアカウントを使用できるようにします。「システム・アプリケーションに対する新しい管理者アカウントの構成」を参照してください。system-jazn-data.xml
をリポジトリとして使用しない場合、system
アプリケーションで使用するための新しい管理者アカウントをsystem-jazn-data.xml
で作成し、必要な管理者ロールを付与する必要もあります。
追加の手順は必要ありません。デフォルトで、oc4j-administrators
ロールとascontrol_admin
ロールは、ファイルベース・プロバイダとOracle Internet Directory内に存在し、RMIパーミッションのloginが付与されています。
注意
|
ファイルベース・プロバイダまたはOracle Identity Management以外をSOAコンポーネントのセキュリティ・プロバイダとして使用する場合は、次の手順を実行してカスタム管理者アカウントを使用する必要があります。
oc4j-administrators
とascontrol_admin
を作成します。外部LDAPプロバイダの場合、これらのロールは、LDAPプロバイダ用に構成されたグループ検索ベースの下に存在する必要があります。(グループ検索ベースの詳細は、表10-4および表10-7を参照してください。)
oc4j-administrators
ロールとascontrol_admin
ロールを付与します。
oc4j-app-administrators
、ascontrol_appadmin
およびascontrol_monitor
を作成します。(これらは管理ユーザーに付与する必要はありません。)
oc4j-administrators
ロールとascontrol_admin
ロールにRMIパーミッションのloginを付与します。この場合、次の例に示すようにOracleAS JAAS Provider Admintoolを使用できます。
% java -jar jazn.jar -grantperm myrealm -role oc4j-administrators \ com.evermind.server.rmi.RMIPermission login
ロールは外部LDAPプロバイダで定義されていますが、これらのパーミッション付与はsystem-jazn-data.xml
ファイルに格納されていることに注意してください。
admin.user
プロパティを設定し、OC4Jのsystem
アプリケーションで新しいアカウントを使用できるようにします。次項の「システム・アプリケーションに対する新しい管理者アカウントの構成」を参照してください。この手順の場合、system
アプリケーションで使用するためsystem-jazn-data.xml
に新しい管理アカウントを作成し、必要な管理ロールを付与する必要もあります。OC4Jのsystem
アプリケーションで使用するため、次のように別の管理者アカウントを指定できます。
system-jazn-data.xml
ファイルに目的のアカウントを作成し、oc4j-administrators
ロールとascontrol_admin
ロールを付与します。ユーザーおよびロールの管理に、Application Server Controlコンソールを使用します。詳細は、「Application Server Controlでのファイルベース・プロバイダの構成」を参照してください。
jazn.xml
ファイルにadmin.user
プロパティを設定します。
<jazn ... > ... <property name="admin.user" value="desired_admin_user_name" /> ... </jazn>
(ここに示す手順は、通常のように、OC4Jのsystem
アプリケーションがファイルベースのセキュリティ・プロバイダを使用するように構成されていることを前提としています。)
指定されたアカウントは、Application Server Controlによるデプロイとアンデプロイなど、様々な管理機能で使用されます。
ファイルベース・プロバイダまたはOracle Identity Managementを使用している場合は、インスタンス・レベルのjazn.xml
ファイルでanonymous.user
プロパティを設定することで、匿名ユーザーを既存のユーザーにマップできます。たとえば、ユーザーPUBLIC
がOracle Internet Directoryに存在する場合は、次のようにします。
<jazn ... > ... <property name="anonymous.user" value="PUBLIC" /> ... </jazn>
管理ツールおよび構成リポジトリに関しては前述していますが、表4-1に、各セキュリティ・プロバイダの様々なタイプの構成別に、使用する構成リポジトリおよび推奨する管理ツールを一覧で示します。
使用可能な場合は、Application Server Controlが推奨ツールになります。
|
Copyright © 2003, 2008 Oracle Corporation. All Rights Reserved. |
|