TOP
>
書籍連動
> Oracle特有の機能
OracleとPHPでウェブサイトを構築する
第2回:Oracleのセキュリティ機能とデータ処理速度の利用
著者:
Robert Mark
2006/2/16
前のページ
1
2
Oracle特有の機能
ファイングレイン監査とも言われる仮想プライベートデータベース(VPD)はOracle特有の機能で、データベース管理者がユーザの権限をテーブル単位はもちろんのこと、テーブルの特定の行単位で定義することができます。
この機能はOracle 8iで導入され、その後のすべてのバージョンで利用できます。VPDをOracleのアプリケーションコンテキストと一緒に使用すると、同じSQLを発行してもユーザごとに異なるデータセットが得られるようになります。これはWebを開発する時に、よりセキュアな管理を行うことができます(図2参照)。
図1:Webを開発する時のよりセキュアな管理
(画像をクリックすると別ウィンドウに拡大図を表示します)
VPDの主な利点はデータベースのユーザごとにコードを書き直す必要がなくなるということです。VPDはすべてのクエリの最後にWHERE句を付け加えるのです。例えば、支社を持っている会社があるとします。VPDを使用すると同じクエリを発行しても、それぞれの支社はその地域に関するデータにのみ閲覧を制限することができます。
データベースはすべてのオフィスに関するデータを同じテーブルに持っていても、そのテーブルに対するクエリではそれぞれのオフィスに関するデータしか取得することができません。ファイングレイン監査によってアプリケーションは共通のSQLを使用して記述しても、データを要求するユーザの権限ごとに設定されたデータを出力することができます。
コード量を減らし、設計を単純化することが可能なので、メンテナンスも簡単になります。VPDのカラムマスキング機能によってデータベース管理者は特定のカラムのデータを隠すことができます。先ほどの例で考えると、"SELECT * FROM TBL_EMPLOYEES"のようなクエリが支社のユーザによって実行された場合は給料のカラムが見えないようにして、本社のユーザによって実行された場合には見えるようにすることができます。
ポリシーマネージャー
Oracle 9iではポリシーマネージャーという列単位でのセキュリティを管理するGUIツールが実装されました。VPDを含んだ設定のステップは以下のようになります。
ルールを定義します。どのユーザがデータを見ることができて、データの操作の可否について決めるガイドラインを作成します。
ロールを設定し、ユーザを作成します
そして、ロールにユーザを割り当てます。
VPDポリシー関数を作成します。テーブルにアクセスされる度に呼ばれる関数を作成するということです。この関数はクエリにWHEREを付加した文字列を返します。
ポリシーを登録された関数もしくはDBMS_RLSを使用したプロシージャによってアクセスされるテーブルに適用します。
ユーザがログインした時にアプリケーションコンテキストを適用します。このアプリケーションコンテキストはテーブルにアクセスされる時にポリシーに渡され、結果のレコードセットはポリシー関数が適用されたパーミションに基づいて作成されます。
表1:ポリシーマネージャーの設定ステップ
前のページ
1
2
著者プロフィール
Robert Mark
ケベックのモントリオールにあるMcGill大学に勤めており、シニアWebプログラマ/データベースプログラマ。主にOracleとPHPを使って、Webサイトを構築している。
INDEX
第2回:Oracleのセキュリティ機能とデータ処理速度の利用
データベース抽象化レイヤー
Oracle特有の機能