ストアド プロシージャを使用した一連の SSRS レポートがあり、レポートの閲覧のみのアクセス権を誰かに付与したいと考えています。これは、ユーザー/グループの「ブラウザー」SSRS ロールを割り当てることで実行できると考えていました。しかし、うまくいきません。
レポート アクセスの許可/拒否は、基になるストアド プロシージャに対する EXECUTE 権限の許可/拒否によってのみ実行できます。
ここで何か不足していますか?上記が当てはまる場合、SSRS の役割の重要性は何ですか。
ストアド プロシージャを使用した一連の SSRS レポートがあり、レポートの閲覧のみのアクセス権を誰かに付与したいと考えています。これは、ユーザー/グループの「ブラウザー」SSRS ロールを割り当てることで実行できると考えていました。しかし、うまくいきません。
レポート アクセスの許可/拒否は、基になるストアド プロシージャに対する EXECUTE 権限の許可/拒否によってのみ実行できます。
ここで何か不足していますか?上記が当てはまる場合、SSRS の役割の重要性は何ですか。
データ ソースの権限は、レポートのアクセス権限とは異なります。
SSRS ロールは、ユーザーがレポートにアクセスできるかどうかを制御します。ほとんどの場合、レポート データ ソースは、ユーザー資格情報をデータベースに渡すように設定されているため、ストアド プロシージャに渡されます。これが、そのレベルでも権限を設定する必要がある理由です。
ユーザーがレポートへのアクセス権を持っていない場合、レポートを実行することはできず、データベースへのアクセスも発生しません。
別の見方をするために、資格情報が Windows 認証を使用して渡されるだけでなく、データ ソースに格納されているレポートを考えてみましょう。これは、レポートを実行しているすべてのユーザーが、自分自身としてではなく、保存されている資格情報を使用してデータベースに接続することを意味します。データ ソースの資格情報に対するデータベースのアクセス許可についてのみ心配する必要があります。レポートへのアクセスを許可/拒否できるようにする必要があります。これは、レポートのアクセス許可が違いを生む場所です。
コメント後に編集:
2 つのシナリオについて言及しました。1 つはデータベース ユーザー資格情報を格納するようにデータ ソースが設定されているシナリオで、もう 1 つはレポートを実行しているユーザーの資格情報を使用するようにデータ ソース データベース アクセスが設定されているシナリオです。
どちらのシナリオでも、レポート サーバー レベルでレポート自体へのアクセスを制御します。
そのため、 Domain\User1に直接レポート レベル以上のブラウザロールを付与すると、レポートにアクセスできます。アクセス権が設定されていない場合、Domain\User2はレポートを実行できません。
レポート権限が設定されたので、データ ソースの設定方法を検討する必要があります。
資格情報がデータ ソースに格納されている場合は、このユーザーのデータベース権限のみを考慮する必要があります。たとえば、 Domain\ReportUserとしてデータベースに接続するようにデータ ソースを設定したとします。このユーザーだけが、基になるストアド プロシージャにアクセスする必要があります。Domain\User1はデータベースにアクセスしないためEXECUTE
、これらのオブジェクトには必要ありません。Domain\ReportUserのみが行います。
資格情報が保存されていない場合、データ ソース データベースへのアクセスは、レポートを実行しているユーザーによって実行されます。この場合、Domain\User1がレポートを実行すると、基になるストアド プロシージャも実行されるためEXECUTE
、オブジェクトに対する特権が必要になります。 .
どちらのデータ ソース シナリオでも、Domain\User2はレポートのアクセス許可が原因でレポートにアクセスできないため、データベースのアクセス許可は問題になりません。