Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

SQL Server Reporting Services 2008 R2 - Folder and Report Security

Is there any way I can list (either using a SSRS report or querying through SQL code), the Username or Group security that has been assigned against root folders, sub-folders or reports ?

I've been asked to identify as an audit, which AD groups have access to all root folders and sub-folders within that root folder, or even down to the individual report level - of who has access!

How do I accomplish this request?

like image 511
Learner74 Avatar asked Jun 04 '13 14:06

Learner74


People also ask

Where are report server reports stored?

Report server items are always stored in libraries or in a folder within a library.

How do I restrict access to SSRS reports?

Denying Access to My Reports You can prevent users from accessing My Reports by: Disabling My Reports on the Site Settings page. For more information, see Enable and Disable My Reports.

How do I manage security in SSRS?

To provide security for a single SSRS report, Please click the down arrow beside the report to open the menu items. Please select the Security option from the menu items. Browser: This is the basic role that can assign to the user. A user with Browser role can View Reports, Folders, Models, and resources.


1 Answers

You can query the ReportServer database for this information, e.g.

SELECT 
    CASE [Catalog].[Type]
        WHEN 1 THEN 'Folder'
        WHEN 2 THEN 'Report'
        WHEN 3 THEN 'Resource'
        WHEN 4 THEN 'Linked Report'
        WHEN 5 THEN 'Data Source'
        WHEN 6 THEN 'Report Model'
        WHEN 8 THEN 'Shared Dataset'
        WHEN 9 THEN 'Report Part'       
    END AS CatalogType,
    [Catalog].[Type]
    --, [Catalog].ItemID 
    ,[Catalog].Name
    , Roles.RoleName
    , Users.UserName
FROM PolicyUserRole 
INNER JOIN Roles ON PolicyUserRole.RoleID = Roles.RoleID
INNER JOIN Policies ON PolicyUserRole.PolicyID = Policies.PolicyID
INNER JOIN Users ON PolicyUserRole.UserID = Users.UserID
INNER JOIN [Catalog] ON PolicyUserRole.PolicyID = [Catalog].PolicyID
ORDER BY 
    1
    , [Catalog].ItemID
    , [Catalog].Name
    , Roles.RoleName
    , Users.UserName
like image 71
Nathan Griffiths Avatar answered Sep 19 '22 20:09

Nathan Griffiths