Reporting services 在2019年Ssrs中,如何解释任务掩码和角色标签?
如果执行Reporting services 在2019年Ssrs中,如何解释任务掩码和角色标签?,reporting-services,ssrs-2019,Reporting Services,Ssrs 2019,如果执行操作,请从角色中选择*,其中1=1在Ssrs数据库目录中,可以看到如下内容: 如何解释“任务掩码”和“角色标签”中的值?我在网上到处都找到了部分信息,但没有从微软那里找到任何信息。在网上没有什么很容易发现的东西,所以我去反编译ReportingServicesLibrary.dll(我使用了“”)并进行搜索,直到在Microsoft.ReportingServices.Library.AuthzData类中找到了我要查找的内容 关于Ssrs数据库目录中的“角色”表,我发现了以下内容:
操作,请从角色中选择*,其中1=1
在Ssrs数据库目录中,可以看到如下内容:
如何解释“任务掩码”和“角色标签”中的值?我在网上到处都找到了部分信息,但没有从微软那里找到任何信息。在网上没有什么很容易发现的东西,所以我去反编译ReportingServicesLibrary.dll(我使用了“”)并进行搜索,直到在Microsoft.ReportingServices.Library.AuthzData类中找到了我要查找的内容 关于Ssrs数据库目录中的“角色”表,我发现了以下内容:
Roles.RoleFlags
中的值实际上只是SecurityScope
enum的基础值。它们指示用于解释任务掩码的枚举角色.TaskMask
中的值对应于CatalogItemTaskEnum
、CatalogTaskEnum
或ModelItemTaskEnum
枚举的成员。“1”表示成员/设置为“开”,而“0”表示它为“关”。从左到右读取字符串,每个位置(基于0)对应于枚举成员的基础值。如果右端缺少位置,则假定设置为“关”SetRoleProperties和InValidatePolicys
存储过程。该存储过程负责将链接到角色的所有现有策略(将数据标记为“脏”)上的SecData.NtSecDescState
列设置为1。下次Ssrs ReportServer服务检查策略更新时,它将更新存储在SecData.NtSecDescPrimary
列中的序列化(AceCollection
)数据,用于该表中的所有“脏”记录,以用于授权扩展。(当检查权限/访问权限时,授权扩展将显示SecData
data。)
例如。
考虑内置的“文件夹查看器”角色。由于RoleFlags
是“0”,对应于SecurityScope。CatalogItem
和meansTaskMask
使用catalogitemtasknum
进行解释。接下来,由于TaskMask
是“0000001000000000000”,这意味着它们拥有ViewFolders
任务权限,因为“1”位于TaskMask
字符串中的位置/索引6(从零开始),并且CatalogItemTaskEnum.ViewFolders
的基础值为6
代码定义
内部枚举安全范围
{
目录项,
目录
模型项
}
内部枚举CatalogItemTaskEnum
{
无效=268435455,
ConfigureAccess=0,
创建LinkedReports,
查看报告,
管理报告,
查看资源,
管理资源,
查看文件夹,
管理文件夹,
管理快照,
订阅
管理任何订阅,
ViewDataSources,
管理数据源,
视图模型,
管理模式,
消费者报告,
评论,,
经理评论
}
内部枚举目录任务枚举
{
无效=268435455,
ManageRoles=0,
管理系统安全,
ViewSystemProperties,
ManageSystemProperties,
ViewSharedSchedules,
ManageSharedSchedules,
生成事件,
管理工作,
ExecuteReportDefinitions
}
内部枚举ModelItemTaskEnum
{
无效=268435455,
ViewModelItems=0
}
多年来,他们添加了一些项目。例如,Ssrs2012中不存在CatalogItemTaskEnum.Comment