Share via


セル データへのカスタム アクセス権の付与 (Analysis Services)

[セルのセキュリティ] は、キューブ内のデータを測定するためのアクセスを許可または拒否するために使われます。次の図は、特定のメジャーへのアクセスだけが許可されたロールを持つユーザーとして接続したときの、ピボットテーブル内の許可されたメジャーと拒否されたメジャーの組み合わせを示しています。この例では、このロールで利用できるメジャーは Reseller Sales Amount と Reseller Total Product Cost だけです。その他のメジャーはすべて暗黙的に拒否されます (この結果を得るための手順については、次の「特定のメジャーへのアクセスを許可する」で説明します)。

許可されたセルと拒否されたセルが表示されているピボットテーブル

セル権限は、セルのメタデータではなく、セル内のデータに適用されます。クエリ結果にセルが表示されるときは、実際のセル値ではなく #N/A の値が表示されることに注目してください。#N/A の値はクライアント アプリケーションによって値が変換されるか、接続文字列の Secured Cell Value プロパティを設定することで別の値が指定されていない限り、セルに表示されます。

セル全体を非表示にするには、表示できるディメンション、ディメンション属性、ディメンション属性メンバーなどのメンバーを制限する必要があります。詳細については、「ディメンション データへのカスタム アクセス権の付与 (Analysis Services)」を参照してください。

管理者は、ロール メンバーにキューブ内のセルに対する読み取り権限、Read-Contingent 権限、読み取り/書き込み権限のいずれを与えるかを指定できます。セルに対する権限の設定は許可される最低レベルのセキュリティであるため、このレベルで権限を適用する前に、次の点を考慮する必要があります。

  • セルレベルのセキュリティでは、上位レベルで制限された権限を拡張できません。例 :ロールでディメンション データへのアクセスが拒否される場合、セルレベルのセキュリティでは拒否されたセットを上書きできません。別の例 :キューブに対する Read 権限とセルに対する Read/Write 権限を持つロールがある場合、セル データ権限は Read/Write ではなく Read になります。

  • 多くの場合、同じロール内のディメンション メンバーとセルの間でカスタム権限を調整する必要があります。たとえば、再販業者の組み合わせに応じて、いくつかの割引関連メジャーに対するアクセスを拒否する必要があるとします。ディメンション データとして Resellers があり、メジャーとして Discount Amount がある場合、同じロール内で (このトピックの指示を使用して) メジャーに対する権限とディメンション メンバーに対する権限の両方を組み合わせる必要があります。ディメンション権限の設定の詳細については、「ディメンション データへのカスタム アクセス権の付与 (Analysis Services)」をご覧ください。

セルレベルのセキュリティは、MDX 式を使って指定します。セルは組 (つまり、複数存在する可能性があるディメンションとメジャーの交点) であるため、MDX を使って特定のセルを指定する必要があります。

特定のメジャーへのアクセスを許可する

セルのセキュリティを使って、利用できるメジャーを明示的に選べます。許可されるメンバーを明示的に指定すると、その他のメジャーはすべて利用できなくなります。これは、次の手順に示すように、おそらく MDX スクリプトで実装される最も簡単なシナリオです。

  1. SQL Server Management Studio で、Analysis Services のインスタンスに接続してデータベースを選び、[ロール] フォルダーを展開してデータベース ロールをクリックします (または、新しいデータベース ロールを作成します)。メンバーシップが既に指定され、ロールにキューブへの Read アクセス権が許可されている必要があります。この手順の詳細については、「キューブまたはモデル権限の付与 (Analysis Services)」をご覧ください。

  2. [セル データ] で、正しいキューブを選んだかどうかを確認��、[Read 権限を有効にする] を選びます。

    このチェック ボックスをオンにしただけで、MDX 式を入力しなかった場合、その効果はキューブ内のすべてのセルに対するアクセスを拒否した場合と同じになります。これは、Analysis Services でキューブ セルのサブセットが解決されるたびに既定で許可されるセットが空のセットであるためです。

  3. 次の MDX 式を入力します。

    (Measures.CurrentMember IS [Measures].[Reseller Sales Amount]) OR (Measures.CurrentMember IS [Measures].[Reseller Total Product Cost])
    

    この式で、ユーザーに表示されるメジャーが明示的に指定されます。このロールで接続したユーザーは、他のメジャーを利用できなくなります。CurrentMember (MDX) でコンテキストを設定し、その後ろに許可されているメジャーを指定していることに注目してください。この式の効果として、現在のメンバーにReseller Sales Amount と Reseller Total Product Cost のどちらかが含まれている場合は、値が表示されます。それ以外の場合は、アクセスが拒否されます。式には複数の部分があり、各部分がかっこで囲まれています。OR 演算子は、複数のメジャーを指定するために使われます。

特定のメジャーへのアクセスを拒否する

次の MDX 式が [ロールの作成] | [セル データ] | [キューブ コンテンツの読み取りを許可する] でも指定されていると、反対の効果、つまり特定のメジャーが利用できなくなります。この例では、NOT 演算子と AND 演算子を使って Discount Amount と Discount Percentage を利用不可能にしています。このロールで接続したユーザーには、他のすべてのメジャーが表示されます。

(NOT Measures.CurrentMember IS [Measures].[Discount Amount]) AND (NOT Measures.CurrentMember IS [Measures].[Discount Percentage])

Excel では、セルのセキュリティは次の図のように明白です。

セルが使用不可として表示されている Excel の列

計算されるメジャーに読み取り権限を設定する

計算されるメジャーに対する権限は、その構成要素と無関係に設定できます。計算されるメジャーとその依存メジャーの間で権限を調整する場合は、Read-Contingent に関する次のセクションに進んでください。

計算されるメジャーに対する読み取り権限の動作を理解するため、AdventureWorks の Reseller Gross Profit について考えてみます。これは、Reseller Sales Amount メジャーと Reseller Total Product Cost メジャーから生成されます。Reseller Gross Profit セルに対する読み取り権限がロールにあるかぎり、他のメジャーに対する権限が明示的に拒否される場合でも、このメジャーは表示されます。示されているように、以下の MDX 式を [ロールの作成] | [セル データ] | [キューブ コンテンツの読み取りを許可する] にコピーします。

(NOT Measures.CurrentMember IS [Measures].[Reseller Sales Amount])
AND (NOT Measures.CurrentMember IS [Measures].[Reseller Total Product Cost])

Excel で、現在のロールを使ってキューブに接続し、3 つのメジャーをすべて選んで、セルのセキュリティの効果を確認します。拒否されたセット内のメジャーは利用できないものの、計算されるメジャーはユーザーに表示されることに注目してください。

使用可能なセルと使用できないセルのある Excel テーブル

計算されるメジャーに Read-Contingent 権限を設定する

セルのセキュリティには、計算に関与するセルに権限を設定する別の方法として、Read-Contingent が用意されています。もう一度 Reseller Gross Profit の例について考えてみます。前のセクションで示されていたのと同じ MDX 式を入力します。今回は、[ロールの作成] |[セル データ] ダイアログ ボックスの 2 つ目のテキスト領域 ([セルのセキュリティでセル コンテンツの条件の読み取りを許可する] の下のテキスト領域) に入力します。結果は Excel で表示したときにわかります。Reseller Gross ProfitReseller Sales AmountReseller Total Product Cost を条件としているため、その構成要素にアクセスできないことで、売上総利益にもアクセスできなくなります。

注意

同じロール内で、あるセルに読み取り権限と Read-Contingent 権限の両方を設定した場合はどうなるでしょうか。このロールは、そのセルに Read-Contingent 権限ではなく読み取り権限を付与します。

前のセクションで説明したように、MDX 式を入力せずに [Read-Contingent 権限を有効にする] チェック ボックスをオンにしただけでは、キューブ内のすべてのセルへのアクセスが拒否されます。これは、Analysis Services でキューブ セルのサブセットが解決されるたびに既定で許可されるセットが空のセットであるためです。

セルに読み取り/書き込み権限を設定する

セルの読み取り/書き込み権限は、キューブ自体の読み取り/書き込み権限がメンバーに付与されている場合に、書き戻しを有効にするために使われます。セル レベルで付与される権限は、キューブ レベルで付与される権限以下になる必要があります。詳細については、「パーティションの書き戻しの設定」を参照してください。

関連項目

タスク

処理権限の付与 (Analysis Services)

ディメンションにおける権限の付与 (Analysis Services)

ディメンション データへのカスタム アクセス権の付与 (Analysis Services)

参照

[MDX ビルダー] ダイアログ ボックス (Analysis Services - 多次元データ)

概念

基本的な MDX スクリプト (MDX)

キューブまたはモデル権限の付与 (Analysis Services)