カスタムポリシー

カスタムポリシーは、Virtual DataPort サーバーがビューに対してクエリを実行する前に呼び出されるクエリインターセプターです。カスタムポリシーは行制限に似ていますが、カスタマイズできるという利点があります。

カスタムポリシーが割り当てられているビューに対してユーザーがクエリを実行する際に、ポリシーによって以下のいずれかのアクションを実行できます。

  • クエリを拒否する。

  • 制限なしにクエリを承認する。

  • クエリを承認するが、制限を加える (クエリが返す行を制限する、フィルター条件を追加するなど)。

これらのアクションから 1 つを選択するために、カスタムポリシーは、クエリのコンテキストの以下のようなパラメーターにアクセスして、処理をどのように進めるかを決定します。

  • ユーザーが実行したいクエリ

  • ユーザーの名前と権限

  • JMX を介して Virtual DataPort のデータにアクセスするためにそのポリシーで使用できる、サーバーへの JMX コネクション

  • ...

カスタムポリシーは再利用可能です。つまり、以下のことが可能です。

  • カスタムポリシーは行制限と同様のものであるため、行制限と同じように割り当てます。したがって、複数のビューに対する同じカスタムポリシーをユーザーまたはロールに割り当てることができます。

  • カスタムポリシーでは構成パラメーターを定義できます。あるビューに対するポリシーをユーザーまたはロールに割り当てている場合、構成パラメーターで動作をカスタマイズできます。この機能により、1 つのポリシーの動作を、割り当て先のユーザーまたはロールに応じて調整できます。たとえば、あるロールを持つユーザーが特定のビューに対して同時に実行できるクエリの数を制限するポリシーを開発する場合、この数をポリシーのパラメーターにすることができます。これにより、このポリシーを「developer」のロールに割り当てるときと、「application」のロールに割り当てるときとで異なる制限を設定できます。

ユーザーがビューに対してクエリを実行する際に、そのユーザーにこのビューに対するカスタムポリシーが割り当てられている場合、ポリシーは次のように評価されます。

  • クエリを実行するユーザーが管理者、データベースの管理者、または「serveradmin」のロールを持つユーザーのいずれかである場合、カスタムポリシーは適用 されません

  • ユーザーがロールを持っておらず、そのビューに対するカスタムポリシーを割り当てられている場合、サーバーはポリシーを 1 つずつ評価します。いずれかのポリシーによってクエリが拒否された場合、クエリは拒否されます。

  • ユーザーに 1 つ以上のロールが割り当てられている場合 (それらのロールにさらに別のロールが割り当てられていることもあります)、カスタムポリシーの評価はグループ単位で実行されます。ロールごとに、そのロールに直接割り当てられたカスタムポリシーのグループが形成され、さらにユーザーに直接割り当てられたカスタムポリシーのグループが形成されます。グループのポリシーの少なくとも 1 つでクエリが拒否された場合、そのグループではクエリは拒否されます。グループのすべてのポリシーでクエリが承認された場合、そのグループではクエリは承認されます。少なくとも 1 つのグループでクエリが承認された場合、クエリは承認されます。

たとえば、R1 と R2 の 2 つのロールを持つユーザーがいるとします。このユーザーには、ビュー V に対する 2 つのポリシー P1 と P2 が割り当てられています。また、このユーザーのロール R1 には、ビュー V に対する別の 2 つのポリシー P3 と P4 が割り当てられており、ロール R2 には、ビュー V に対する別の 2 つのポリシー P5 と P6 が割り当てられています。

このユーザーがビュー V に対してクエリを実行すると、Virtual DataPort はポリシー P1 を評価します。P1 でクエリが承認されると、P2 を評価します。P2 でもクエリが承認されると、サーバーは残りのポリシーは評価せずにクエリを実行します。

P1 でクエリが拒否された場合、サーバーはそのユーザーのポリシーをそれ以上評価せずに、ロール R1 のポリシー P3 と P4 の評価を開始します。P3 でクエリが承認されると、P4 を評価します。P4 でもクエリが承認されると、サーバーは残りのポリシーを評価せずにクエリを実行します。

P3 でクエリが拒否された場合、サーバーはロール R1 のポリシーをそれ以上評価せずに、ロール R2 のポリシー P5 と P6 の評価を開始します。P5 でクエリが承認されると、P6 を評価します。P6 でもクエリが承認されると、サーバーはクエリを実行します。

P5 でクエリが拒否された場合、サーバーはクエリを実行しません。