s-s-rS 权限

Posted

技术标签:

【中文标题】s-s-rS 权限【英文标题】:s-s-rS Permissions 【发布时间】:2018-04-11 14:49:04 【问题描述】:

我在互联网上查看过,但找不到任何直截了当的内容。我正在使用 s-s-rS(本机模式,在 VS 中开发报告)并且对权限有疑问,因为我担心我做得过火了。我们使用 AD 组进行 Windows 身份验证,以获取报表服务器上各种报表的权限。目前,它的设置方式是分别授予服务器、数据库和每个存储过程的权限(通过 SSMS)。在报表服务器 URL 上,授予站点设置、文件夹设置和报表级别的权限。

    这太过分了吗?是否需要所有这些权限? 有没有更有效的方法来建立权限? 用户是否需要访问“数据源”和“数据集”文件夹才能运行报告?

我只想清理我们目前拥有的内容并使用最佳实践。在此先感谢!

【问题讨论】:

是的,所有权限都是必需的。是的,但您是否只想授予查看权限或发布等取决于您。参考bhushan.extreme-advice.com/user-roles-and-permissions-in-s-s-rs 您在整理权限时仍然遇到问题吗? 【参考方案1】:

我一直在积极清理我们的报表服务器内容和标准。因此,这是我可以根据该经验提供的内容。

这是不是太过分了;所有这些权限都需要吗?

回答:Windows AD 组是设置报表服务器权限的好方法。最好有几个包含报表的文件夹,然后为文件夹提供所需的访问权限,并允许该文件夹中的所有报表继承文件夹安全性。子文件夹可能具有更高级别的安全性(我们已经在我们的报告环境中完成了其中的一些工作)。

有没有更有效的方法来建立权限?

回答:试着对服务器上需要哪些文件夹有一个很好的了解,在幻灯片或 Word 文档中组织这些信息。从您的管理层和业务负责人那里获得各个部门的支持。此外,分析任何现有的报告系统并尝试确定它们如何适应用户访问。至于存储过程权限,最好让您的 DBA 使用对您的各种数据源进行身份验证的同一用户授予存储过程权限,并使用同一用户(例如“myDomain\s-s-rsreports”)。

用户是否需要访问“数据源”和“数据集”文件夹才能运行报告?

回答:用户不需要访问这些文件夹。只要共享数据源通过“Windows 帐户”或“SQL Server 帐户”进行身份验证,引用该数据源的数据集将为所有可以访问报告的用户执行。

进一步阅读...

如果您可以访问 Pluralsight 培训网站,那里有一些 s-s-rS 的好视频。如果您没有 Pluralsight 订阅,则可以使用 Microsoft Visual Studio Dev Essentials 帐户免费试用 3 个月,该帐户可免费创建。

Reporting Services Report Server Administration Reporting Services Report Development Fundamentals Part 1 Microsoft Visual Studio Dev Essentials

【讨论】:

【参考方案2】:

    我将按 AD 组/报告文件夹分隔权限。转到个人报告级别有点矫枉过正。

    我还为报表文件夹创建了一些新角色,以按文件夹级别管理谁可以阅读报表以及谁拥有它们。在 s-s-rS 中,必须在 SQL Server Management Studio、SSMS 中执行新角色和对现有角色的调整。打开 SSMS 后,点击“连接”并选择“报告服务...”

输入您的服务器名称和登录信息,然后单击连接。

连接到报表服务器后,打开安全文件夹右键单击“角色”,然后单击“新建角色...”

我创建了 2 个与“浏览器”具有相同权限的新角色(“浏览器组”、“功能所有者”)。

然后在报告管理器上单击文件夹的向下箭头并选择“安全”

然后点击“新角色分配”

然后输入 Active Directory 组或电子邮件地址并检查您创建的新角色。

然后您可以向服务器查询权限并将其显示在报告中。

;WITH 
catalog_type_description
AS
(
    SELECT tbl.* FROM (VALUES
      ( 1, 'Folder')
    , ( 2, 'Report')
    , ( 3, 'Resource')
    , ( 4, 'Linked Report')
    , ( 5, 'Data Source')
    , ( 6, 'Report Model')
    , ( 8, 'Shared Dataset')
    , ( 9, 'Report Part')
    ) tbl ([TypeID], [TypeDescription]) 
    WHERE 
        TypeID = 1
)
, 
nonreport_folders
AS
(
    SELECT tbl.* FROM (VALUES
      ( 'Images')
    , ( 'SharedDataSets')
    , ( 'Data Sources')
    , ( '')
    ) tbl ([FolderName]) 
)
, 
reporting_role_names -- added roles to the report server
AS
(
    SELECT tbl.* FROM (VALUES
      ( 'Browser Group')
    , ( 'Functional Owner')
    ) tbl ([RoleName]) 
)
, 
user_list
AS
(
    SELECT 
          usr.[UserID]
        , usr.[UserName]
        , [UserNameFormat] = 
            CASE 
                WHEN CHARINDEX('\', usr.[UserName]) > 0 THEN UPPER(SUBSTRING(usr.[UserName] ,CHARINDEX('\', usr.[UserName]) + 1, LEN(usr.[UserName])))
                ELSE usr.[UserName] 
            END 
    FROM 
        dbo.[Users] AS usr
)
, 
reporting_roles
AS
(
    SELECT 
          cat.[Name]
        , rol.[RoleName]
        , usr.[UserNameFormat]
        , [ReportingRoleName] = rpt.[RoleName]
    FROM 
        dbo.[Catalog] AS cat
        INNER JOIN catalog_type_description AS tpd ON cat.[Type] = tpd.[TypeID] 
        LEFT JOIN dbo.PolicyUserRole AS urol ON urol.[PolicyID] = cat.[PolicyID]
        LEFT JOIN dbo.Roles AS rol ON urol.[RoleID] = rol.[RoleID]
        LEFT JOIN reporting_role_names AS rpt ON rpt.[RoleName] = rol.[RoleName]
        LEFT JOIN dbo.Policies AS pol ON urol.[PolicyID] = pol.[PolicyID]
        LEFT JOIN user_list AS usr ON urol.[UserID] = usr.[UserID]
        LEFT JOIN nonreport_folders AS nrf ON nrf.[FolderName] = cat.[Name]
    WHERE 
        1=1
        AND nrf.[FolderName] IS NULL
)
SELECT DISTINCT
      [FolderName] = rpt.[Name]
    , rpt.[RoleName]
    , [UserNameFormat] = STUFF((SELECT '; ' + rol.[UserNameFormat] FROM reporting_roles rol WHERE rol.[RoleName] = rpt.[RoleName] AND rol.[Name] = rpt.[Name] FOR XML PATH('')),1,1,'')
    , [ReportingRoleName]
FROM 
    reporting_roles AS rpt
    用户需要“数据源”和“数据集”文件夹的读取权限。我会为此使用一个 AD 组,例如 Domain Users

参考资料:

https://code.msdn.microsoft.com/SQL-Server-Reporting-s-s-rS-50c4d06b

http://bhushan.extreme-advice.com/user-roles-and-permissions-in-s-s-rs/

https://www.mssqltips.com/sqlservertip/2793/sql-server-reporting-services-2012-permissions/

【讨论】:

以上是关于s-s-rS 权限的主要内容,如果未能解决你的问题,请参考以下文章

s-s-rS 来宾用户权限

s-s-rS 权限不足,无法执行此操作

用于 SharePoint 2010 集成的 s-s-rS 2008 配置 - 权限问题

生产环境中 s-s-rS 2008 R2 的权限

如何为用户(已经 dbo)授予存储过程的执行权限以运行 s-s-rS 报告

s-s-rS 2008 R2 + 授予用户的权限不足以执行此操作。(rsAccess Denied)