| |
Virtual Private Database |
Oracle Database 11g Enterprise Editionの機能であるVirtual Private Database(VPD)は、Oracle8i Databaseで導入された、現在もっとも一般的に利用されているデータベースのセキュリティ機能です。 標準のオブジェクト権限および対応付けられたデータベース・ロールが不十分なために、アプリケーションのセキュリティ要件を満たせない場合に、VPDを使用します。 VPDポリシーは、セキュリティ要件に応じて単純な場合も複雑な場合もあります。 VPDを"アプリケーション・コンテキスト"機能と組み合わせることにより、行や列レベルで、プライバシーや規制遵守に関する高度なセキュリティ要件に対応できます。 たとえば、単純なVPDで営業時間内のデータへのアクセスを制限することも、複雑なVPDでログイン・トリガー時にアプリケーション・コンテキストを読み取り、ORDERS表に対して行レベルのセキュリティを適用することもできます。
ユーザーが保護された表にどのような方法(アプリケーション、Webインタフェース、またはSQL*Plus)で接続しても、結果は同じになります。 アクセス・ポリシーが表にアタッチされているため、アクセス・ポリシーを迂回することができないことから、"アプリケーションのセキュリティ問題"はなくなります。

例:顧客はCUSTOMERS表(上図)にリストされているため、調べられるのはORDERS表(下図)にある顧客自身の注文内容のみです。
"列関連性"を使用すると、重要な列が選択された場合にのみポリシーが実施されるようにVPDを構成できます。

例:ACCOUNT_MGR_IDが"149"である経理担当者は、CUSTOMERS表のすべての行を確認できますが、与信限度を調べることはできません。 CREDIT_LIMIT列の問合せを行った場合、担当する顧客の与信限度のみが表示されます。
VPDの最も高度な構成である"列のマスキング"により、使いやすさとセキュリティのもっとも効果的な組合せが実現します。 担当者は、CUSTOMERS表内のパブリックな情報へはアクセスできますが、機密情報は表示されません。
例:CREDIT_LIMIT列には、この経理担当者が担当する顧客のデータ・セルのみが表示され、それ以外はすべて空白です。
