管理ガイド> TDVリソースのセキュリティ管理> 行ベースのセキュリティ> 行フィルターポリシーの作成または編集
 
行フィルターポリシーの作成または編集
TDVユーザーインターフェイスを使用して、行ベースのセキュリティのポリシーの作成をガイドできます。デフォルトの表形式オプションを選択することにより、TDVはポリシーの定義に必要なすべてのSQLスクリプトの作成を処理します。
フィルタ式で参照されている列名は検証されません。定義した各行フィルターポリシーをテストして、期待どおりに機能することを確認する必要があります。たとえば、LOCATIONテーブルのREGION_NAMEにフィルターがあり、列がREGION_CODEに変更された場合、その変更を反映するようにフィルターを更新する必要があります。
自由形式の行フィルターポリシーのSQLスクリプトは、Studioを使用して編集できます。行ベースのセキュリティオブジェクトの他のすべての定義、編集、または削除は、Managerを使用して実行する必要があります。
注:行フィルターポリシー内のルールのランク付けや優先順位はありません。ユーザーまたはグループが行フィルターポリシー内の複数のルールに割り当てられている場合、2つの述部はORステートメントを使用して結合されます。
行ベースのセキュリティポリシーを追加または編集するには
1. 行ベースのセキュリティの手順に従います。
2. 新しい行フィルターポリシーを追加するには、[ポリシーの追加]をクリックします。または、既存の行フィルターポリシーを編集するには、それを選択して[ポリシーの編集]をクリックします。
3. 次のフィールドの値を選択または指定します。
フィールド
特定
名前
行フィルターポリシーに付ける名前を指定します。スペースは許可されていません。
フォルダ
新しい行フィルターポリシーを追加するときは、[フォルダー]フィールドでSQLスクリプトプロシージャの/shared 内の場所を指定します。既存の行フィルターポリシーを編集している場合、[フォルダー]フィールドは読み取り専用です。このフィールドのデフォルト値は/sharedです。
有効化
有効-特定の行フィルターポリシーの使用を許可します。
無効-特定の行フィルターポリシーの使用を禁止します。
この設定に関係なく、行フィルターポリシーを追加および編集できます。
ポリシーが無効になっている場合、ポリシーがグループの一部であっても、データに対しては使用されません。たとえば、RBS_groupに3つのポリシー(pig、hive、およびgnu)が含まれ、gnuポリシーが無効になっている場合、RBS_groupが適用されると、pigおよびhiveポリシーのみが使用されます。
仕様
表形式-TDVにSQLスクリプトを作成させる場合に選択します。
自由形式-SQLスクリプトを独自に作成する場合に選択します。
グループ-複数の行フィルターポリシーを含めることができるコンテナーを作成する場合に選択します。
説明
(オプション)行フィルターポリシーの説明を入力します。
自由形式を選択した場合は、手順7に進みます。表形式を選択した場合は、画面に追加のフィールドとボタンが表示されます。
4. [表形式]を選択した場合は、Manager画面を使用して特定のユーザーまたはグループのルールを追加または編集できます。 [追加]または[編集]をクリックしてから、次の表にリストされているフィールドの値を編集または指定します。
フィールド
特定
ユーザーグループ
このIDがグループ用かユーザー用かを指定します。
ドメイン
行フィルターポリシーを適用するドメインを指定します。
名前
行フィルターポリシーを適用するユーザー名またはグループ名を指定します。
ルール
All、None、Predicate、またはProcedureを指定します。
データ経路
[述語]または[プロシージャ]を選択した場合は、データのフィルタリングに使用する文字列を指定します。たとえば、Region=’EUR’です。
5. [OK]をクリックします。
6. 表形式を選択した場合は、次のフィールドに値を指定できます。
フィールド
特定
デフォルトのルール
IDが一致した場合に実行されるルール、またはIDが一致しない場合に使用されるデフォルトのルールを指定します。
すべての行-すべての行を返すことができます。
行なし-行を返さないようにします。
述語-明示的なSQL述語を満たす行のみを返します。述語はWHERE節の一部です。
プロシージャ-別のSQLスクリプトプロシージャによって返される述語を満たす行のみを返します。
データ経路
述語またはプロシージャを選択した場合は、データのフィルタリングに使用する文字列、または有効なフィルタ式を返すSQLスクリプトプロシージャを指定します(通常、これはWHERE句のフラグメントです)。 SQLスクリプトプロシージャは、有効な行フィルタプロシージャである必要があります。
たとえば、Region=’EUR’です。または、プロシージャへのパスを入力することもできます。
7. [OK]をクリックします。
8. カスタム(自由形式)行フィルターポリシーに関連付けられたSQLスクリプトを編集するには以下のとおりです。
a. Studioを開きます。
b. /sharedフォルダーに移動してから、作成したカスタム行フィルターポリシーの名前を持つSQLスクリプトリソースオブジェクトに移動します。
c. SQLスクリプトプロシージャを編集します。表形式の方法を使用して定義された行フィルターポリシーの場合、SQLスクリプトを表示することはできますが、編集することはできません。スクリプトの編集方法については、TDVユーザーガイドの「SQLスクリプトの作成」を参照してください。
次に、行フィルターポリシーを定義するサンプルSQLスクリプトを示します。
PROCEDURE "policy1" (IN alias VARCHAR, OUT result VARCHAR)
BEGIN
DECLARE temp VARCHAR;
DECLARE test BOOLEAN;
SET result = '';
CALL /lib/users/TestUserIdentity('USER','admin','composite',test);
IF(test) THEN
SET result = '(' || alias || '.OrderID = 20)';
END IF;
CALL /lib/users/TestUserIdentity('USER','test','composite',test);
IF(test) THEN
SET temp = '(' || alias || '.OrderID < 20)';
IF (result = '') THEN
SET result = temp;
ELSE
SET result = result || ' OR ' || temp;
END IF;
END IF;
IF ( result = '') THEN
SET result = 'FALSE';
END IF;
END