セル データへのカスタム アクセス権の付与

キューブに対する Read または Read/Write 権限を Microsoft SQL Server 2005 Analysis Services (SSAS) のデータベース ロールに付与すると、ロールのメンバはすべてのセル データにアクセスし、データを表示できるようになります。アクセスできるセルを限定するには、セルへのアクセスを具体的に制限する必要があります。特定のディメンション メンバへのアクセスを制限する方法については、「セル データへのカスタム アクセス権の付与」を参照してください。

特定のセルへのアクセスをデータベース ロールに許可するには、多次元式 (MDX) を使用して、Read、ReadContingent、または Read/Write 権限を持つセルの範囲を定義します。詳細については、「MDX 式を使用したセル データ権限の設定」を参照してください。

権限の設定に関するガイドライン

データベース ロールに、セル データへの Read 権限、ReadContingent 権限、または Read/Write 権限のいずれが付与されているかにかかわらず、これらの権限の取り扱いをさらに容易にするためのガイドラインと背景情報があります。

  • 派生セルに権限を付与する際の注意
    派生セルは、他のセルからデータを取得します。データベース ロールに、派生セルへのアクセスが許可されている一方で、派生セルの値の取得元セルに対するアクセスは許可されていない場合、そのデータベース ロールのメンバは、アクセスの許可されていないセルの値を推測することが可能です。たとえば、データベース ロールに Sales メジャーと Profit メジャーのセルへのアクセスが許可されている (つまり、データベース ロールでこれらのメジャーを表示できる) 一方で、Cost メジャーのセルへのアクセスは許可されていないとします。このデータベース ロールのメンバは、Profit メジャー値を Sales メジャー値から差し引くことで、Cost メジャーの値を判断できます。

  • セル データがキューブに対する権限より高い権限を持つことはできない
    特定のセルに対して付与される権限が、キューブ全体に対してデータベース ロールに付与される権限を超えることはできません。たとえば、データベース ロールに、セルに対する Read/Write 権限が付与されており、キューブに対しては Read 権限のみが付与されているとします。この場合、セル データの権限は、Read/Write ではなく、Read になります。

  • セル データへのアクセス権にはディメンション データへのアクセス権は含まれない
    データベース ロールにセル データへのアクセスが許可されていても、ディメンション データへの Read または Read/Write 権限が個別に付与されていない限り、ディメンション データへのアクセスは許可されません。キューブ データへのアクセス権によって、データベース ロールにアクセス権があるディメンション属性へのアクセスを制限することはできますが、データベース ロールにアクセス権がないディメンション属性にアクセス権を拡張することはできません。

  • セル データへのアクセスを拒否しても、ユーザーにはそのセルが表示される
    セル データのアクセス権は、データベース ロールがセルを表示できるかどうかを制御するのではなく、セルの内容を表示できるかどうかを制御します。データベース ロールにセル データへのアクセス権がなくても、セルはクエリ結果に表示されます。ただし、セルには実際のセルの値ではなく、#N/A の値が含まれます。#N/A の値はクライアント アプリケーションによって値が変換されるか、接続文字列の Secured Cell Value プロパティを設定することで別の値が指定されていない限り、セルに表示されます。

    セルが結果に表示されないようにするには、表示可能なディメンション、ディメンション属性、ディメンション属性メンバなどのメンバを制限する必要があります。詳細については、「ディメンション アクセスの許可」および「ディメンション データへのカスタム アクセス権の付与」を参照してください。

セル データへの Read 権限の設定

データベース ロールのメンバは、データベース ロールで Read 権限があるセルを表示できます。これらのセルは、データベース ロールによるアクセスが許可されていないセルから派生したものであっても、表示可能です。

たとえば、Sales および Cost メジャーのセルから派生する、Profit という計算されるメジャーがあるとします。データベース ロールに Profit セルに対する Read 権限がある場合、Sales または Cost メジャーのセルに対する権限がなくてもこのメジャーは表示されます。

注意

キューブ セルのサブセットに対する Read 権限がデータベース ロールに許可されていても、Read 権限の対象セルを指定する MDX 式がない場合、このデータベース ロールはキューブ内のどのセルに対しても Read 権限を持ちません。これは、Analysis Services でキューブ セルのサブセットが解決されるときに既定で許可されるセットが空のセットであるためです。

ディメンション内のメンバにアクセスを許可するには、ユーザーが Analysis Services サーバー ロールのメンバであるか、フル コントロール (管理者) 権限を持つ Analysis Services データベース ロールのメンバである必要があります。

データベース ロールにセル データへの読み取りアクセス権を許可するには

  1. SQL Server Management Studio で、Analysis Services のインスタンスに接続し、オブジェクト エクスプローラで適切なデータベースの [ロール] を展開し、データベース ロールをクリックするか、新しいデータベース ロールを作成します。

  2. [ページの選択] ペインで [キューブ セル データ] をクリックし、[キューブ] 一覧でキューブを選択し、[Read 権限を有効にする] チェック ボックスをオンにします。

    メンバが [キューブ コンテンツの読み取りを許可する] ボックスに入力されていない場合は、すべてのキューブ セルが表示されます。

  3. 特定のメンバのみにアクセスを許可するには、[キューブ コンテンツの読み取りを許可する] ボックスにそれらのキューブ セルの MDX 式を入力します。その他のキューブは表示されなくなります。

    MDX 式を構築するときは、[MDX の編集] の横にある参照ボタンをクリックし、表示された [MDX ビルダ] ウィンドウを使用して MDX 式を構築します。

    セル データの権限の設定に使用する MDX 式の例については、「MDX 式を使用したセル データ権限の設定」を参照してください。

セル データへの ReadContingent 権限の設定

データベース ロールが ReadContingent 権限を持つセルは、次の条件のいずれかが満たされている場合にのみ表示されます。

  • ReadContingent 権限を持つセルが他のセルから派生したものではない場合

  • ReadContingent 権限を持つセルが、他のセルから派生したものであるが、データベース ロールにそのセルの派生元のセルすべてに対する Read 権限がある場合

たとえば、データベース ロールに、Profit セルに対する ReadContingent 権限があるとします。Profit セルは、Sales および Cost メジャーから派生したものです。この場合、Profit セルは、データベース ロールに Sales メジャーと Cost メジャーの両方に対する Read 権限がある場合にのみ表示されます。データベース ロールに Cost セルに対する ReadContingent 権限があり、Cost メジャーが他のセルから派生したものである場合、Profit セルは、Cost メジャーの派生元のセルに対する Read 権限がデータベース ロールにある場合にのみ表示されます。したがって、ReadContingent 権限を使用すると、セルが他のセルから派生する場合に、他のセルがさらにまた別のセルから派生するという、条件の連鎖が発生することがあります。

注意

データベース ロールにセルに対する Read 権限と ReadContingent 権限の両方がある場合、データベース ロールではこのセルに対して Read 権限を持つようになります。

注意

キューブ セルのサブセットに対する ReadContingent 権限がデータベース ロールに許可されていても、ReadContingent 権限の対象セルを指定する MDX 式がない場合、このデータベース ロールはキューブ内のどのセルに対しても ReadContingent 権限を持ちません。これは、Analysis Services でキューブ セルのサブセットが解決されるときに既定で許可されるセットが空のセットであるためです。

ディメンション内のメンバにアクセスを許可するには、ユーザーが Analysis Services サーバー ロールのメンバであるか、フル コントロール (管理者) 権限を持つ Analysis Services データベース ロールのメンバである必要があります。

データベース ロールにセル データへの ReadContingent アクセスを許可するには

  1. SQL Server Management Studio で、Analysis Services のインスタンスに接続し、オブジェクト エクスプローラで適切なデータベースの [ロール] を展開し、データベース ロールをクリックするか、新しいデータベース ロールを作成します。

  2. [ページの選択] ペインで [キューブ セル データ] をクリックし、[キューブ] 一覧でキューブを選択し、[ReadContingent 権限を有効にする] チェック ボックスをオンにします。

  3. [セルのセキュリティでセル コンテンツの条件の読み取りを許可する] ボックスに、データベース ロールに ReadContingent 権限があるセルを識別する MDX 式を入力します。

    MDX 式を構築するときは、[MDX の編集] の横にある参照ボタンをクリックし、表示された [MDX ビルダ] ウィンドウを使用して MDX 式を構築します。

    セル データの権限の設定に使用する MDX 式の例については、「MDX 式を使用したセル データ権限の設定」を参照してください。

セル データへの Read/Write 権限の設定

データベース ロールが Read/Write 権限を持っているセルは、データベース ロールのメンバによって表示および更新できます。ただし、メンバがキューブ自体への Read/Write 権限を持っている必要があります。セル レベルで付与される権限は、キューブ レベルで付与される権限以下になる必要があります。

注意

キューブ セルのサブセットに対する Read/Write 権限がデータベース ロールに許可されていても、Read/Write 権限の対象セルを指定する MDX 式がない場合、このデータベース ロールはキューブ内のどのセルに対しても Read/Write 権限を持ちません。これは、Analysis Services でキューブ セルのサブセットが解決されるときに既定で許可されるセットが空のセットであるためです。

特定のセルへのアクセス権限を許可または拒否するには、ユーザーが Analysis Services サーバー ロールのメンバであるか、フル コントロール (管理者) 権限を持つ Analysis Services データベース ロールのメンバである必要があります。

データベース ロールにセル データへの読み取り/書き込みアクセス権を許可するには

  1. SQL Server Management Studio で、Analysis Services のインスタンスに接続し、オブジェクト エクスプローラで適切なデータベースの [ロール] を展開して、データベース ロールをクリックするか、新しいデータベース ロールを作成します。

  2. [ページの選択] ペインで [キューブ セル データ] をクリックし、[キューブ] 一覧でキューブを選択し、[Read/Write 権限を有効にする] チェック ボックスをオンにします。

  3. [キューブ コンテンツの読み取りと書き込みを許可する] ボックスに、データベース ロールに Read/Write 権限があるセルを識別する MDX 式を入力します。

    MDX 式を構築するときは、[MDX の編集] の横にある参照ボタンをクリックし、表示された [MDX ビルダ] ウィンドウを使用して MDX 式を構築します。

    セル データの権限の設定に使用する MDX 式の例については、「MDX 式を使用したセル データ権限の設定」を参照してください。