データ・フィルタでのアプリケーション・ロールの機能グループの指定について
論理ファクト表などのセマンティック・モデル・オブジェクトに、異なるレベルのアクセスを持つ複数のアプリケーション・ロールからアクセスする場合、機能グループを指定して、制限されたデータがその特定のアプリケーション・ロールで表示されないようにすることができます。
定義された機能グループがない場合、関連付けられたロールにかかわらず、特定の表に適用されたすべてのセキュリティ・フィルタがOR演算子を使用して結合されます。 セキュリティ・フィルタによって選択されたすべての行をロールが表示できるため、ほとんどの場合、OR演算子を使用できます。 たとえば、次のようなフィルタがあるとします。
ロールAにはフィルタProduct = 'Camera'が割り当てられます
ロールBにはフィルタProduct = 'Monitor'が割り当てられます
アプリケーション・ロールにロールAおよびロールBが付与されている場合、ロールはCameraとMonitorの両方の製品のデータを表示できます。
同じ表の2つのセキュリティ・フィルタが問合せで結合される場合、フィルタ条件はOR演算子を使用して結合されます(このことは、ディメンション表で定義されたほとんどのセキュリティ・フィルタに該当します)。たとえば:
Product = 'Camera' OR Product = 'Monitor'
異なるディメンションのデータ・フィルタを使用して単一のファクト表を保護する場合は、機能グループを使用する必要があります。
この例では、ファクト表は次のフィルタを使用して保護されます。
ロールAにはフィルタProduct = 'Camera'が割り当てられます
ロールBにはフィルタProduct = 'Monitor'が割り当てられます
ロールCにフィルタRegion = 'Southwest'が割り当てられます
機能グループを使用しない場合、ロールA、BおよびCのユーザーの問合せでは、3つのフィルタ条件がすべてOR演算子を使用して結合されます。たとえば:
(Product = 'Camera' OR Product = 'Monitor' OR Region = 'Southwest')
ProductとRegionは独立したディメンションであるため、ロールA、BおよびCの結果を結合しても意味をなしません。 OR演算子を使用して異なるディメンションのデータ・フィルタを組み合せると、アプリケーション・ロールは、ロールで表示する必要があるデータ値より多くのデータ値にアクセスできます。
この例では、アプリケーション・ロールは、Southwestリージョン内のすべての製品のデータ、およびCamera and Monitor製品内のすべてのリージョンのデータを表示できます。
アプリケーション・ロールがSouthwestリージョン内のCameraおよびMonitor製品のデータのみを表示できるように、予想される動作を取得するには、フィルタを変更して、AND演算子を使用して製品フィルタをリージョン・フィルタと組み合せる必要があります。次に例を示します:
(Product = 'Camera' OR Product = 'Monitor') AND (Region = 'Southwest')
機能グループを使用してこれを行うには、次のようにセキュリティ・フィルタを機能グループに割り当てる必要があります。
ロールAにはフィルタProduct = 'Camera' with functional group "Product"が割り当てられます
ロールBにはフィルタProduct = 'Monitor' with functional group "Product"が割り当てられます
ロールCにフィルタRegion = 'Southwest' with functional group "Region"が割り当てられます
同じ機能グループ内のすべてのフィルタはOR演算子を使用して結合され、異なる機能グループ内のすべてのフィルタのセットはAND演算子を使用して結合されます。 各セキュリティ・フィルタに関連付けられた機能グループを選択することで、OR演算子とAND演算子を使用してフィルタを結合する方法を制御できます。