0

SSAS のディメンション レベルでセキュリティを実装する際に問題が発生しました。これが私がしたことです-1.SSASでロールを定義し、ディメンションレベルでセキュリティを適用しました(このロールにアクセスさせたくないキューブディメンションのチェックを外し、許可および拒否セットを設定します)。2. Cube Browser を使用してテストしたところ、問題なく動作しました。3. SSRS を使用してテストしましたが、変更はありませんでした。ディメンションをクエリして、望ましくない結果を得ることができました。

質問 - キューブ レベルで定義したセキュリティを SSRS に伝達することは可能ですか? そうであると信じたいです。

はいの場合、ここに私が必要とするものがあります-

  1. ユーザーは、Windows ID を使用して Report Manager にログオンします (IIS での統合認証がオン - 完了)。
  2. この ID をキャプチャして、彼らが属する SSAS ロールを見つけます - これはクエリを介して行われると思いますが、自動的には機能しないようです (これを行う方法は?)
  3. ユーザーは、SSRS (SSAS レベルで適用されるロール ベースのセキュリティ) のこのロールの制限内で作業します。つまり、ユーザーがディメンション X を使用できない場合、クエリを実行することはできません。(これを行う方法?)

私はこれについてかなりの数のブログを参照しており、1 つさえ見つけました - http://www.sqlmag.com/Article/ArticleID/96763/sql_server_96763.html

ただし、これには、SSRSでこれを使用する方法ではなく、SSAS内で設定する方法に関する詳細情報があるようです。

このアプローチに取り組んだことのある人、またはこれを理解している人は、私に知らせてください。

4

3 に答える 3

3

レポートサーバーのSSRSでデータソースを確認し、認証されたログインユーザーのWindows credを使用するように設定されていることを確認する必要があると思います。これは、探しているものである可能性があります。

于 2009-02-21T07:14:33.827 に答える
2

あなたがする必要があるのは、次のとおりです。

SSRS レポートのデータ ソースで、次のように SSAS データベースで作成されたロール名を指定します。

データ ソース=LOCALHOST;初期カタログ=XXXXX;ロール=RoleName

ありがとう

于 2009-03-03T21:41:36.187 に答える
0

SSAS ではこれを実行していませんが、エンジンで実行しました。Jeremiah Peschkaは行ベースのセキュリティ セットアップに関するブログを書いています。これを統合 Windows セキュリティで行う場合は、user_name() 関数を使用して現在のログイン名を取得できます。ディメンションごとにルックアップ テーブルを使用し、各ディメンション行に 1 行とユーザー名を追加します。クエリを実行するときは、次のようにディメンション セキュリティ テーブルに結合します。

FROM dbo.Customers cs
INNER JOIN dbo.CustomersSecurity css ON cs.CustomerId = css.CustomerId AND css.UserName = User_Name()

そうすれば、結合によって、ユーザーが表示できる顧客のレコードのみが返されます。

欠点は、パーティショニングを使用している場合、ユーザーが見ることができるものに基づいて適切なパーティションから適切なレコードのみを抽出するための適切な実行計画がエンジンによって構築されないことです。たとえば、フロリダのレコードのみを表示できるユーザーとしてログインし、データが州ごとに分割されていても問題ありません。エンジンはすべてのパーティションをスキャンします。プラン作成時のユーザー情報。

于 2009-02-21T18:34:28.683 に答える