データへのアクセスのフィルタ
フィルタはEssbaseキューブ内のデータ値へのセキュリティ・アクセスを制御します。フィルタは、利用可能な最も粒度の細かいセキュリティ形式です。フィルタは、特定のキューブ・セルまたはセルの範囲に一連の制約を指定します。管理者またはマネージャは、ユーザーまたはグループのアクセスを規制するフィルタを割り当てます。
自分のセキュリティ・ロールによって、自分がフィルタを作成、割当て、編集、コピー、名前変更、または削除できるかどうかが決まります。
- アプリケーション・マネージャ・ロールがある場合は、ユーザーまたはグループに対するフィルタを管理できます。フィルタは自分には影響を与えません。
- データベース更新ロールがある場合は、自分が作成したアプリケーションに対するフィルタを管理できます。
- データベース・マネージャ・ロールがある場合は、アプリケーションまたはキューブ内のフィルタを管理できます。
- データベース・アクセス・ロールがある場合は(デフォルト)、自分のアクセス権がフィルタでさらに制限されていないかぎり、すべてのセル内のデータ値に対して読取りアクセス権があります。
Essbase Webインタフェースを使用したフィルタの作成
Essbase Webインタフェースのデータベース・カスタマイズ・セクションで、ユーザーまたはグループへのキューブ・アクセスを制限するセキュリティ・フィルタを作成できます。
1つのキューブに対して複数のフィルタを作成できます。フィルタを編集した場合、その定義に加えた変更は、そのフィルタのすべてのユーザーによって継承されます。
フィルタを編集するには、キューブを選択し、左側のパネルの「フィルタ」オプションをクリックします。次に、フィルタ名をクリックしてフィルタ・エディタで変更を加え、フィルタを編集します。既存の行を編集するには、その行をダブルクリックします。
フィルタをコピー、名前変更または削除するには、フィルタ名の右にある「アクション」メニューをクリックしてオプションを選択します。
フィルタの作成後、フィルタをユーザーまたはグループに対して割り当てます。
セキュリティ・フィルタの使用によるデータベース・セルへのアクセスの制御を参照してください。
効率的な動的フィルタの作成
外部ソース・データに基づく動的フィルタを作成して、必要なフィルタ定義の数を削減できます。
@datasourceLookupおよび変数$LoginUserと$LoginGroupを含む動的フィルタ定義構文を使用してこれを実行します。外部ソース・データはcsvファイルまたはリレーショナル表です。リレーショナル・ソース・データの場合は、.csvをリレーショナル表にロードできます。
動的フィルタ構文
動的フィルタ構文を使用して、複数のユーザーとグループに割当て可能な柔軟なフィルタを作成します。
フィルタ行の定義には、通常のメンバー式に加えて、次の要素を含めることができます。
$loginuser
この変数には、現在のログイン・ユーザーの値が実行時に格納されます。@datasourcelookupメソッドと組み合せて使用可能です。
$logingroup
この変数には、現在ログインしているユーザーが属するすべてのグループの値が格納されます。直接グループと間接グループの両方が含まれます。@datasourcelookupメソッドと組み合せて使用すると、各グループがデータソースに対して個別に検索されます。
@datasourcelookup
このメソッドは、データソースからレコードをフェッチします。
構文
@datasourcelookup (dataSourceName, columnName, columnValue, returnColumnName)| パラメータ | 説明 |
|---|---|
| dataSourceName |
Essbaseで定義された外部データソースの名前です。アプリケーション・レベル・データソースの場合は、名前の前にアプリケーション名と期間を付加します。 |
| columnName |
指定されたcolumnValueを検索するデータソース列の名前。 |
| columnValue |
columnName内で検索する値。 |
| returnColumnName |
値のリストを返すデータソース列の名前。 |
ノート:
データソース列名には、USER、GROUP、ROLEなどのSQL予約語を使用しないでください。予約語を使用すると、SQL解析エラーまたは予期しないフィルタ動作が発生する可能性があります。説明
@datasourcelookupコールは次のSQL問合せと同じです。
select returnColumnName from dataSourceName where columnName=columnValue@datasourcelookupは、指定のデータソースを参照してcolumnNameにcolumnValueが含まれているレコードを検索します。columnValueに$loginuserを指定した場合、このメソッドではcolumnNameに現在ログインしているユーザーの名前が含まれているレコードが検索される。
Essbaseでは、リスト要素をカンマ区切りの文字列として組み合せることによりフィルタ定義行を作成します。レコードに特殊文字、スペース、または数値のみが含まれている場合、引用符で囲まれます。
ノート:
@optionsパラメータは、ルックアップの失敗動作を制御するために使用できます。strictLookup=trueの場合、ルックアップの失敗は致命的エラーとして扱われ、フィルタ結果は返されません。例
パラメータを引用符で囲みます。
次のコールではグローバル・データソースを参照し、Maryがストア・マネージャであるストア名のリストを返します。
@datasourceLookup("StoreManagersDS","STOREMANAGER","Mary","STORE")次のコールではアプリケーション・レベルのデータソースを参照し、現在のログイン・ユーザーがストア・マネージャであるストア名のリストを返します。
@datasourceLookup("Sample.StoreManagersDS","STOREMANAGER","$loginuser","STORE")次のコールではアプリケーション・レベルのデータソースを参照し、ログイン・ユーザーが属するグループのいずれかとストア部門が一致するストア名のリストを返します。
@datasourceLookup("Sample.StoreManagersDS","STORE_DEPARTMENT","$logingroup","STORE")ログイン・ユーザーが3つグループに属している場合、前述の@datasourcelookupメソッドは、各グループについて一致するすべての列値を返します。
次の例では、動的フィルタ式内でSQL関数を使用します。
@datasourceLookup("Sample.StoreManagersDS",LOWER(CAST("STOREMANAGER" AS VARCHAR(30))),LOWER("$loginuser"),"STORE")次の例では、明示的な大文字と小文字を区別する関数を使用して、大文字と小文字を区別する評価を実行します。
@datasourceLookup("Sample.StoreManagersDS",UPPER("STOREMANAGER"),UPPER("$loginuser"),"STORE")次の例では、営業部門またはマーケティング部門に属する店舗を戻します。
@datasourceLookup("Sample.StoreManagersDS","STORE_DEPARTMENT","Sales","Marketing","STORE")次の例では、@datasourceLookupを持つメンバー・セット関数を使用しています。
@DESCENDANTS(@datasourceLookup("Sample.StoreManagersDS","STOREMANAGER","$loginuser","STORE"))次の例では、ネストされたメンバー・セット関数をデータソース参照とともに使用します。
@CHILDREN(@LSIBLING(@datasourceLookup("Sample.StoreManagersDS","STOREMANAGER","$loginuser","STORE")))次の例では、厳密なルックアップ動作を使用します。検索が失敗した場合、フィルタ結果は返されません。
@datasourceLookup("Sample.StoreManagersDS","STOREMANAGER","$loginuser","STORE",@options(strictLookup=true))動的フィルタを作成するためのワークフロー
動的フィルタを作成するには、次の一般的なワークフローを使用します。
この動的フィルタのワークフローは、すでにキューブがあり、ユーザーおよびグループがプロビジョニングされていることを前提としています。
- データのソースがファイルかそれともリレーショナル・ソースかを識別します。
- 接続およびEssbaseのデータソースを、グローバルまたはアプリケーション・レベルで定義します。
- フィルタをキューブ・レベルで作成します。キューブにナビゲートし、「フィルタ」を選択します。
- 必要に応じて動的フィルタ構文で
$loginuser変数、$logingroup変数および@datasourcelookupメソッドを使用して、各フィルタのフィルタ行を定義します。 - フィルタをユーザーまたはグループに割り当てます。
- フィルタをグループに割り当てた場合、そのグループをフィルタ対象のアプリケーションに割り当てます。アプリケーションに移動し、「権限」を選択します。
