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

キューブのディメンションに対する読み取り権限または読み取り/書き込み権限を Microsoft SQL Server 2005 Analysis Services (SSAS) データベース ロールに付与すると、各ディメンション属性メンバに対するセキュリティ (ディメンション セキュリティ) を定義できるようになります。既定では、データベース ロールがキューブに対する読み取りアクセス権を持っている場合、データベース ロールはそのキューブのすべてのディメンション属性のすべてのメンバにアクセスできます。それぞれのディメンション属性について、ロール メンバに特定のアクセス権限を許可 (AllowedSet) または拒否 (DeniedSet) する特定の属性メンバの組み合わせを定義できます。また、各属性階層に既定のメンバを定義することもできます。既定では、All メンバが既定のメンバになります。特定の属性メンバに対する読み取り権限を拒否する場合、All メンバの値としては、属性階層のすべてのメンバの集計値ではなく、ロール メンバがアクセスできるメンバの集計値を設定するケースも考えられます。この動作を指定するには、VisualTotals を有効にします。VisualTotals を有効にすると、集計値は事前計算された集計値から取得されるのではなく、クエリの実行時に計算されます。

注意

ディメンション ロールのメンバが持つアクセス権の種類は、許可されているディメンションのアクセス権、つまり読み取り権限または読み取り/書き込み権限に基づきます。

IsAllowed プロパティについて

IsAllowed プロパティは、データベース ロールが属性メンバにアクセスできるかどうかを決定します。既定では、ディメンションにアクセスできるデータベース ロールは、属性階層にはアクセスできません。

AllowedSet プロパティについて

AllowedSet プロパティでは多次元式 (MDX) を使用して、データベース ロールが表示できる属性メンバ (許可されたセット) を判断します。許可されたセットには、空 (既定)、すべて、または一部の属性メンバを含めることができます。属性へのアクセスを許可しているにもかかわらず、許可されたセットにメンバを定義していない場合は、すべてのメンバへのアクセスが許可されます。属性へのアクセスを許可していて、属性メンバの特定のセットを定義した場合は、許可するように指定したメンバのみが表示されます。許可されたセットを定義すると、許可されたセットの定義後に追加する属性メンバの表示が制限される場合があります。

1 つの属性に関する許可されたセットを制限すると、他の属性の表示に影響します。たとえば、Customer 属性に関する許可されたセットに一部の属性メンバのみが含まれていて、City 属性に関する許可されたセットにはすべての属性メンバが含まれているとします。この場合、表示される City 属性のメンバは、Customer 属性の許可されたセットに顧客が含まれている市のみになります。顧客を含まない市がある場合、その市の属性メンバは表示されません。つまり、属性に関する許可されたセットに少なくとも 1 つのメンバが含まれている場合にのみ、その属性メンバが表示可能になります。

注意

空の属性メンバ セットを定義した場合、属性メンバはデータベース ロールにはまったく表示されません。許可されたセットが存在しない場合は、空のセットが存在するものとして解釈されます。

DeniedSet プロパティについて

DeniedSet プロパティでは、MDX 式を使用して、データベース ロールが明示的にアクセスを拒否されている属性メンバ (拒否されたセット) を判断します。拒否されたセットには、空、すべて (既定)、または一部の属性メンバを含めることができます。既定では、拒否されたセットは定義されません。

拒否されたセットに特定の属性メンバのセットのみが含まれている場合、データベース ロールに対しては、それらの特定のメンバへのアクセスのみが拒否されます。拒否されたセットを定義すると、拒否されたセットの定義後に追加する属性メンバのアクセスに影響する場合があります。

拒否されたセットに特定の属性のセットを定義した場合、他の属性のアクセシビリティに対するこの拒否されたセットの影響は、ApplyDenied プロパティが有効になっているかどうかによって異なります。たとえば、State 属性に関して拒否されたセットが定義されており、ApplyDenied プロパティが有効になっているとします。この場合、データベース ロールからは、拒否されたセットに含まれている州の Customer 属性のいずれにもアクセスできません。

ApplyDenied プロパティについて

ApplyDenied プロパティは、データベース ロールが属性階層のメンバを表示できるかどうかを判断する場合に、拒否されたセットのメンバを使用するかどうかを示します。既定では、属性階層ごとに ApplyDenied プロパティが True (有効) に設定されています。

注意

影響が ApplyDenied プロパティによって左右される拒否されたセットとは異なり、許可されたセットは、データベース ロールが属性階層のメンバを表示できるかどうかを判断する場合に常に適用されます。

ApplyDenied プロパティが有効になっていて、拒否されたセットが定義されている場合、属性階層に拒否されたセットのメンバのいずれかが含まれていると、データベース ロールからはその階層のメンバにアクセスできなくなります。たとえば、ApplyDenied プロパティが有効になっていて、拒否されたセットが State 属性内の州で構成されているとします。データベース ロールでは、State 属性にアクセスできないだけでなく、拒否されたセット内の州の Customers 属性にもアクセスできなくなります。

ApplyDenied プロパティが無効になっていて、拒否されたセットが定義されている場合、データベース ロールは、属性階層のメンバには、その階層に拒否されたセットのメンバのいずれかが含まれている場合でもアクセスできます。たとえば、ApplyDenied プロパティが無効になっていて、拒否されたセットが State 属性内の州で構成されているとします。データベース ロールは State 属性にはアクセスできませんが、拒否されたセット内の州の Customers 属性にはアクセスできます。

VisualTotals プロパティについて

VisualTotals プロパティは、表示される集計セル値がすべてのセル値に基づいて計算されるか、データベース ロールが表示可能なセル値のみに基づいて計算されるかを示します。

既定では、VisualTotals プロパティは無効になっています (False に設定されています)。この既定の設定では、Analysis Services は、計算に使用するセル値の選択に時間を費やすことなく、すべてのセル値の合計をすばやく計算できるので、最大限のパフォーマンスが実現します。

ただし、VisualTotals プロパティを無効にすると、集計されたセル値を使用して、ユーザーのデータベース ロールにアクセス権のない属性メンバの値をユーザーが推定しようとした場合に、セキュリティの問題が発生するおそれがあります。たとえば、Analysis Services では 3 つの属性メンバの値を使用して、集計セル値を計算します。データベース ロールには、これらの 3 つの属性メンバのうちの 2 つを表示するためのアクセス権が許可されています。集計セル値を使用すると、このデータベース ロールのメンバは、3 番目の属性メンバの値を推定できるようになります。

ユーザーのデータベース ロールにアクセス権がない属性メンバの値をユーザーが推定できる場合は、属性の VisualTotals プロパティを有効にする (True に設定する) のがセキュリティ上のベスト プラクティスです。VisualTotals プロパティを有効にすると、データベース ロールでは、権限のあるディメンション メンバの集計合計のみを表示できるようになります。たとえば、VisualTotals プロパティを有効にすると、データベース ロールでは、表示可能な州 (State 属性のメンバ) のみを含む集計合計を表示できます。集計合計にはすべての州の値は含まれません。

DefaultMember プロパティについて

DefaultMember プロパティは、属性がクエリに明示的に含まれていない場合に、クライアントに返されるデータセットを決定します。属性が明示的に含まれていない場合、Analysis Services では属性に対して次の既定メンバのいずれかを使用します。

  • データベース ロールで属性の既定メンバを定義している場合、Analysis Services ではこの既定メンバを使用します。

  • データベース ロールが属性の既定メンバを定義していない場合、Analysis Services では属性自体に定義されている既定メンバを使用します。属性の既定メンバは、特別に指定していない限り、All のメンバになります (属性が非集計として定義されている場合を除く)。

たとえば、データベース ロールで、Male を Gender 属性の既定のメンバとして指定しているとします。クエリに、Gender 属性が明示的に含まれており、この属性に別のメンバが指定されているのでない限り、Analysis Services では男性顧客のみを含むデータセットを返します。既定メンバの設定の詳細については、「既定メンバの定義」を参照してください。

ディメンションのメンバに対するアクセス権の設定

ディメンションのメンバにアクセス権を設定する前に、さまざまなアクセス設定によって、メンバのクエリ時に返される結果セットがどのような影響を受けるかの例を確認することをお勧めします。以下のトピックでは、このような設定例を示します。

さまざまなアクセス権がどのように機能するかを理解すると、これらの権限を与える準備が整います。ディメンション内のメンバにアクセスを許可するには、ユーザーが Analysis Services サーバー ロールのメンバであるか、フル コントロール (管理者) 権限を持つ Analysis Services データベース ロールのメンバである必要があります。

Business Intelligence Development Studio を使用してディメンションのメンバにアクセスを許可するときは、[ディメンション データ アクセス] タブの [基本] タブにある標準のオプションを使用するか、[詳細設定] タブにあるカスタマイズされたオプションを使用する必要があります。

重要な注意事項重要

Microsoft Windows のユーザーまたはグループが複数のデータベース ロールに属している場合、ユーザーまたはグループに有効な権限は、すべてのデータベース ロールの権限を合わせたものになります (権限の和集合)。1 つのデータベース ロールで属性メンバへのユーザー アクセスが拒否されていても、別のデータベース ロールでその属性メンバへのユーザー アクセスが許可されている場合、ユーザーはその属性メンバにアクセスできます。

[基本] タブを使用してデータベース ロールにディメンション内のメンバへのアクセスを許可するには

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

  2. [ページの選択] ペインの [ディメンション データ] をクリックし、[ディメンション] 一覧からディメンションを選択し、[詳細設定] タブで属性を選択します。

    このオプションを選択すると、IsAllowed プロパティが True に設定されます。

  3. [属性] 一覧で、データベース ロールが表示できるようにするメンバの属性を選択します。

  4. 特定の属性メンバのアクセスを拒否するように指定するには、[拒否されたメンバ セット] ボックスに、その属性メンバの MDX 式を入力します。その他すべての属性メンバは表示可能になります。

    • 特定の属性メンバのみのアクセスを許可するように指定するには、[許可されたメンバ セット] ボックスに、その属性メンバの MDX 式を入力します。その他すべての属性メンバは表示されなくなります。

[詳細設定] タブを使用してデータベース ロールにディメンション内のメンバへのアクセスを許可するには

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

  2. [ページの選択] ペインの [ディメンション データ] をクリックし、[ディメンション] 一覧からディメンションを選択し、[詳細設定] タブで属性を選択します。

    このオプションを選択すると、IsAllowed プロパティが True に設定されます。

  3. [属性] 一覧で、データベース ロールが表示できるようにするメンバの属性を選択します。

  4. 特定の属性メンバのアクセスを拒否するように指定するには、[拒否されたメンバ セット] ボックスに、その属性メンバの MDX 式を入力します。その他すべての属性メンバは表示可能になります。

    特定の属性メンバのみのアクセスを許可するように指定するには、[許可されたメンバ セット] ボックスに、その属性メンバの MDX 式を入力します。その他すべての属性メンバは表示されなくなります。