フィルタの作成
データベース値に設定する必要があるアクセス制限のセットごとにフィルタを作成できます。 同じアクセス・ニーズを持つユーザーに対して個別のフィルタを作成する必要はありません。 フィルタを作成した後、複数のユーザーまたはユーザー・グループに割り当てることができます。
ノート:
子や子孫などのメンバーのセットを戻す計算関数を使用し、空のセットに評価される場合、セキュリティ・フィルタは作成されません。 リージョン定義が空のセットに評価されたことを示すエラーがアプリケーション・ログに書き込まれます。
フィルタを作成する前に、次のアクションを実行します:
-
サーバーに接続し、フィルタに関連付けられているデータベースを選択します。
-
「制限」でフィルタのネーミング・ルールを確認します。
「フィルタの作成」を参照してください。
フィルタを作成するには、create filter MaxL文を使用することもできます。
メンバーのフィルタ処理とメンバーの組合せのフィルタ処理
このトピックでは、データベース・セルへのアクセスを制御する様々な方法について説明します。 データを保護するには、メンバー全体をフィルタするか、メンバーの組合せをフィルタします。
-
メンバーを個別にフィルタすると、そのメンバーのデータ・リージョン全体に影響します。
-
メンバーの組合せをフィルタすると、メンバー交差のデータに影響します。
図29-1 フィルタがデータおよび/または関係に与える影響
ノート:
メンバーの組合せ(AND関係)に対するフィルタリングはメタ読取りには適用されません。 メタ読取りは、各メンバーを個別にフィルタ処理します(OR関係)。
メンバーの個別フィルタ処理
1つ以上のメンバーのすべてのデータをフィルタ処理するには、フィルタ・エディタのそれぞれの行で各メンバーのアクセス権を定義します。 フィルタの別々の行のフィルタ定義は、OR関係で処理されます。
たとえば、SalesまたはJanへのアクセスをブロックするには、ユーザーKSmithに次のフィルタが割り当てられているとします:
-
アクセス: なし。 メンバー指定: Sales。
-
アクセス: なし。 メンバー指定: Jan。
次にユーザーKSmithがSample.Basicに接続すると、Qtr1の利益率のスプレッドシート・ビューに、#NOACCESSでマークされているメンバーSalesまたはメンバーJanのデータ値へのアクセス権がないことが示されます。 Salesのすべてのデータがビューからブロックされ、January、insideおよびoutsideのすべてのデータもブロックされます。 売上原価(売上原価)、販売の兄弟およびマージンの子のデータを使用できますが、1月の売上原価は例外です。
図29-2 SalesまたはJanへのアクセスをブロックするフィルタの結果

メンバーの組合せのフィルタ
メンバーの組合せのデータをフィルタするには、フィルタ・エディタの行を使用してメンバーの組合せごとにアクセス権を定義します。 フィルタ定義では、カンマで区切られた2つのメンバー・セットは、これら2つのメンバー・セットの和集合として扱われます(AND関係)。
たとえば、ユーザーRChinnに次のフィルタが割り当てられているとします: アクセス: なし。 メンバー指定: Sales, Jan。
次にユーザーRChinnがSample.Basicに接続すると、Qtr1の利益率のスプレッドシート・ビューに、#NoAccessでマークされているメンバーSalesとJanの交差にあるデータ値にアクセスできないことが示されます。 1月の販売データは表示されません。 ただし、他の月の販売データは使用可能で、1月の販売以外のデータは使用可能です。
図29-3 Sales、Janへのアクセスをブロックするフィルタの結果

代替変数を使用したフィルタ処理
「代替変数」を使用すると、定期的に変更される情報をより簡単に管理できます。 各代替変数には名前と値が割り当てられています。 データベース・マネージャはいつでも値を変更できます。 フィルタで代替変数が指定されている場合は、その時点の代替変数値が使用されます。
たとえば、ユーザーのグループに現在の月のデータのみを表示する場合、CurMonthという名前の代替変数を設定し、メンバー名に&CurMonth
を使用して、アクセス権を指定するフィルタ(MonthlyAccess)を定義できます。 仕様の先頭にアンパサンド(&)を使用すると、そのアンパサンドはEssbaseのメンバー名ではなく代替変数として識別されます。 MonthlyAccessフィルタを適切なユーザーに割り当てます。
毎月、CurMonth代替変数の値のみを現在の月のメンバー名(Jan、Febなど)に変更する必要があります。 新しい値は、割り当てられたすべてのユーザーに適用されます。
「置換変数の使用」を参照してください。
属性関数によるフィルタリング
フィルタを使用して、特定の属性を共有する基本メンバーのデータへのアクセスを制限できます。 属性ディメンションで定義された特定の属性を持つメンバーのデータをフィルタするには、属性メンバーを@ATTRIBUTE関数または@WITHATTR関数と組み合せて使用します。
ノート:
@ATTRIBUTEおよび@WITHATTRは、メンバー・セット関数です。 ほとんどのメンバー・セット関数は、フィルタ定義で使用できます。
たとえば、ユーザーPJonesにこのフィルタが割り当てられているとします: アクセス: なし。 メンバー指定: @ATTRIBUTE(“Caffeinated_False”)。
次にユーザーPJonesがSample.Basicに接続すると、Californiaの第一四半期コーラ販売のスプレッドシート・ビューに、Caffeinated_Falseに関連付けられた基本ディメンション・メンバーのデータ値へのアクセス権がないことが示されます。 Caffeine Free Colaの販売データは表示されません。 Caffeine Free Colaは基本メンバーであり、Caffeinated_Falseは属性ディメンションCaffeinatedの関連メンバーです(前述のスプレッドシート・ビューには表示されていません)。
図29-4 カフェイン・フリー製品へのアクセスをブロックするフィルタの結果

メタデータのフィルタリング
メタデータ・フィルタリングは、データ・フィルタリングおよび追加のセキュリティ・レイヤーを提供します。 メタデータのフィルタリングを使用すると、管理者はアウトライン・メンバーをユーザー・ビューから削除して、ユーザーにとって関心のあるメンバーにのみアクセス権を付与できます。
フィルタを使用してメンバーにMetaRead権限を適用する場合:
-
そのメンバーのすべての祖先のデータは、フィルタ・ユーザーのビューで非表示になります。
-
そのメンバーのすべての兄弟のデータおよびメタデータ(メンバー名)は、フィルタ・ユーザーのビューで非表示になります。
動的フィルタリング
外部ソース・データに基づいて動的フィルタを作成し、必要なフィルタ定義の数を減らすことができます。 これは、メソッド@datasourceLookup
や変数$LoginUser
および$LoginGroup
などの動的フィルタ定義構文を使用して行います。
詳細は、「効率的な動的フィルタの作成」を参照してください。