セル データへのカスタム アクセス権の付与 (Analysis Services)
セルのセキュリティは、キューブ内のメジャー データへのアクセスを許可または拒否するために使用します。 次の図は、ロールに特定のメジャーへのアクセスのみが許可されているユーザーとして接続されたときに、ピボットテーブルで許可されるメジャーと拒否されるメジャーの組み合わせを示しています。 この例では、このロールで利用できるメジャーは Reseller Sales Amount と Reseller Total Product Cost だけです。 他のすべてのメジャーは、暗黙的に拒否されます (この結果を取得するために使用する手順については、次のセクション「特定のメジャーへのアクセスの許可」で説明します)。
セル権限は、セル内のデータに適用され、そのメタデータには適用されません。 セルが引き続きクエリの結果に表示され、実際のセルの値ではなく #N/A
という値が表示されている状況を確認してください。 #N/A
クライアント アプリケーションが値を変換しない限り、または接続文字列の [セキュリティで保護されたセル値] プロパティを設定して別の値を指定しない限り、値はセルに表示されます。
セル全体を非表示にするには、表示可能なメンバーディメンション、ディメンション属性、ディメンション属性メンバーを制限する必要があります。 詳細については、「 ディメンション データへのカスタム アクセスを許可する (Analysis Services)」を参照してください。
管理者は、ロール メンバーに、キューブ内のセルに対する権限として Read、Read-Contingent、読み取り/書き込みのいずれを与えるかを指定できます。 セルに権限を設定するのは許可されるセキュリティの最小レベルであるため、このレベルで権限を適用する前に、次の事実を認識する必要があります。
セル レベルのセキュリティでは、より上位のレベルで制限されている権限を拡張することはできません。 例: ロールによってディメンション データへのアクセスが拒否される場合、セル レベルのセキュリティでその拒否されたセットをオーバーライドすることはできません。 別の例: キューブに対するアクセス許可を持つロールと、セルに対する読み取り/書き込みアクセス許可を持つ
Read
ロールを考えてみましょう。セル データのアクセス許可は読み取り/書き込みではなく、Read
になります。同じロール内のディメンション メンバーとセルとの間でカスタム権限の調整が必要になる場合がよくあります。 たとえば、再販業者のさまざまな組み合わせを対象とした複数の割引関連メジャーへのアクセスを拒否するとします。 ディメンション データとして Resellers があり、メジャーとして Discount Amount がある場合、同じロール内で (このトピックの指示を使用して) メジャーに対する権限とディメンション メンバーに対する権限の両方を組み合わせる必要があります。 ディメンションのアクセス許可の設定の詳細については、「 ディメンション データへのカスタム アクセスを許可する (Analysis Services)」 を参照してください。
セル レベルのセキュリティを指定するには、MDX 式を使用します。 セルは組であるため (つまり、複数のディメンションおよびメジャーの交差ポイントとなる可能性があります)、MDX を使用して特定のセルを識別する必要があります。
特定のメジャーへのアクセスの許可
セルのセキュリティを使用すると、使用可能なメジャーを明示的に選択できます。 許可するメンバーを明確に特定すると、他のすべてのメジャーは使用できなくなります。 これは、次の手順に示すように、MDX スクリプトで実装されるシナリオの中でも特に単純なものです。
Analysis Services のインスタンスに接続SQL Server Management Studio、データベースを選択し、[ロール] フォルダーを開き、データベース ロールをクリックします (または、新しいデータベース ロールを作成します)。 メンバーシップは既に指定され、ロールにはキューブへの
Read
アクセス権があるはずです。 この手順に関するヘルプが必要な場合は、「 キューブまたはモデルのアクセス許可を付与する (Analysis Services)」 を参照してください。[セル データ]で、キューブの選択を見て適切なキューブを選択していることを確認し、 [Read 権限を有効にする]を選択します。
このチェック ボックスをオンにしただけで MDX 式を指定しなかった場合は、キューブのすべてのセルへのアクセスを拒否するのと同じ効果が得られます。 これは、Analysis Services がキューブ セルのサブセットを解決するたびに、既定の許可セットが空のセットであるためです。
次の 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
使用できなくなります。 他のすべてのメジャーは、このロールで接続しているユーザーに表示されます。
(NOT Measures.CurrentMember IS [Measures].[Discount Amount]) AND (NOT Measures.CurrentMember IS [Measures].[Discount Percentage])
Excel では、セルのセキュリティは次の図のように示されます。
する
計算メジャーに対する Read 権限の設定
計算メジャーに対する権限は、メジャーの構成要素とは関係なく設定できます。 計算メジャーとその従属メジャーとの間で権限を調整する場合は、Read-Contingent に関する次のセクションに進んでください。
計算メジャーに対して Read 権限がどのように機能するかを理解するために、AdventureWorks での Reseller Gross Profit について検討します。 その派生元は、 Reseller Sales Amount メジャーおよび Reseller Total Product Cost メジャーです。 ロールに Reseller Gross Profit セルに対する Read 権限がある限り、他のメジャーに対して権限が明示的に拒否されている場合でも、このメジャーは表示できます。 デモとして、次の MDX 式を [Create RoleCell Data | Allow reading of cube content]\(キューブ コンテンツの読み取りを許可する\) | にコピーします。
(NOT Measures.CurrentMember IS [Measures].[Reseller Sales Amount])
AND (NOT Measures.CurrentMember IS [Measures].[Reseller Total Product Cost])
Excel で、現在のロールを使用してキューブに接続し、3 つすべてのメジャーを選択してセルのセキュリティの効果を確認します。 拒否されたセットのメジャーは使用できませんが、計算メジャーはユーザーに表示できることに注意してください。
がある
計算メジャーに対する Read-Contingent 権限の設定
セルのセキュリティには、計算に参加する関連セルに権限を設定するための代替手段として Read-Contingent が用意されています。 もう一度 Reseller Gross Profit の例を検討します。 前のセクションで指定したのと同じ MDX 式を入力すると、今度は [ ロール | セル データ の作成] ダイアログ ボックスの 2 番目のテキスト領域に配置されます ([セル のセキュリティに依存するセルコンテンツの読み取りを許可する] の下のテキスト領域で)、Excel で表示すると結果が明らかになります。 Reseller Gross Profit は Reseller Sales Amount および Reseller Total Product Costに基づくため、総利益の構成要素にアクセスできず、そのためこの時点では総利益にアクセスできません。
注意
同じロール内のセルに Read 権限と Read-Contingent 権限の両方を設定するとどうなりますか。 ロールによって、セルに対する Read 権限は設定されますが、Read-Contingent 権限は設定されません。
前のセクションで説明したように、 [Read-Contingent 権限を有効にする] チェック ボックスをオンにしても、MDX 式を指定しなければ、キューブ内のすべてのセルへのアクセスは拒否されます。 これは、Analysis Services がキューブ セルのサブセットを解決するたびに、既定の許可セットが空のセットであるためです。
セルに対する読み取り/書き込み権限の設定
セルに対する読み取り/書き込み権限は、メンバーがキューブ自体に対する読み取り/書き込み権限を持っている場合に限り、書き戻しを有効にするために使用します。 セル レベルで付与される権限は、キューブ レベルで付与される権限以下になる必要があります。 詳細については、 「パーティションの書き戻しの設定」 を参照してください。
参照
MDX ビルダー (Analysis Services - 多次元データ)
基本的な MDX スクリプト (MDX)
処理権限の付与 (Analysis Services)
ディメンションに対する権限の付与 (Analysis Services)
ディメンション データへのカスタム アクセス権の付与 (Analysis Services)
キューブ権限またはモデル権限の付与 (Analysis Services)