[Database, Security] Using OES11g from the Oracle Database

Oracle Databaseの将来のバージョンには、きめ細い認可を設定するためのOracle Entitlement Server(以下、OES)との統合が含まれる可能性があります。しかし、現在の10gや11gでは、標準状態では連係できません。では、どのようにOESを使って、Oracle Database中のデータを保護すればよいでしょうか。例として、データベース表から値を照会し、返すストアドプロシージャを考えます。OESを使って、次のような方法でこのデータの認可機能を提供することができます。
  • OESに認可判定を依頼する
  • 認可されると、責務(obligation)を問い合わせを絞る追加のwhere句として解釈する
Java SMクライアントから呼び出せるのであれば、OESのパフォーマンスが最大になるので、結果として、認可ポリシーのローカルコピーの恩恵を受けることができます。マイクロ秒レベルのOESの呼び出しのオーバーヘッドを削減します。それゆえ、今回のストアドプロシージャの場合、Javaから起動している場合にはJavaからOESを呼び出し、パラメータとしてストアドプロシージャに全ての制約を渡すことが最善ですが、これの方法が常にとれるわけではありません。

このケースでは、Oracle Databaseの機能を使ってJavaクラスをロードし、ストアドプロシージャからJavaクラスを呼び出すことができます。OESは、Web ServiceのXACMLインターフェイスを提供していますので、OESを呼び出すJavaコードをロードできます。別の方法として、以前のエントリでご紹介したOESゲートウェイを使い、適切なURLに向けてHTTP GETを発行するような簡単なJavaクラスを使って、OESゲートウェイを呼び出す方法もあります。

A RESTful interface to Oracle Entitlements Server 11g
http://blogs.oracle.com/robsayin/entry/a_restful_interface_to_oracle

[訳注]ロジ子訳はこちら。
http://orablogs-jp.blogspot.com/2011/10/restful-interface-to-oracle.html

このZipファイル(スクリプトとSQLを含む)で、JavaクラスをOracle Databaseにロードし、データベース機能を構成してJavaクラスをサンプルのSQLスクリプトから呼び出せるようにする方法を説明しています。Oracle Database 10gを使用している場合、DatabaseにJDK 1.4が含まれているため、JDK 1.4でクラスをコンパイルする必要があります。Oracle Database 11gの場合はJDK5を含むため、JDK5を使ってクラスをコンパイルする必要があります。
手順は次のとおりです。
  • 適切なJDKを使ってJavaクラスをコンパイルする(mk.shスクリプトを使用)
  • DatabaseにJavaクラスをロードする(OES- loadjava.shスクリプトを使用)
  • データベースの準備スクリプトを実行し、Javaクラスへのインターフェースのための機能を定義し、データベースユーザの適切な権限でJavaコードを実行できるようにする。この例では、ユーザーSYSTEMの使用を前提とする
  • SQLスクリプトを実行して、OESの呼び出し方を表示する。制約のないscott.emp表に対して生のクエリを実行し、その後OESゲートウェイを呼び出すJavaクラスを呼び出して、OESからの認可を回復する。責務が返された場合、プロシージャはscott.empの責務のキーを検索し、見つかった場合にはその値(例えば SAL<2000)を、制約としてテーブルを問い合わせるときに使用する。
[参考資料]

原文はこちら。
http://blogs.oracle.com/robsayin/entry/using_oes11g_from_the_oracle

0 件のコメント:

コメントを投稿