角色(SSAS 表格)

在表格模型中的角色定义模型的成员权限。 每个角色都包含成员、Windows 用户名或 Windows 组和权限(读取、进程、管理员)。 角色的成员可以根据角色权限定义在模型上执行操作。 使用读取权限定义的角色还可以通过使用行级筛选器在行级别提供额外的安全性。

重要

为了使用户使用报告或数据分析客户端应用程序连接到已部署的模型,必须至少创建一个角色,并且至少具有这些用户所属的读取权限。

本主题中的信息适用于使用 SQL Server Data Tools (SSDT)中的“角色管理器”对话框定义角色的表格模型作者。 在模型创作过程中定义的角色适用于模型工作区数据库。 部署模型数据库后,模型数据库管理员可以使用 SQL Server Management Studio 管理角色成员(添加、编辑、删除)。 若要了解如何管理已部署数据库中的角色成员,请参阅表格模型角色(SSAS 表格)。

表格建模(Adventure Works 教程)包括有关如何使用此功能的其他信息和课程。

本主题中的部分:

了解角色

在 Microsoft SQL Server 分析服务中,角色用于管理分析服务和数据的安全性。 Analysis Services 中有两种类型的角色:

  • 服务器角色是一个固定角色,它提供对 Analysis Services 实例的管理员访问权限。

  • 数据库角色、模型作者和管理员定义的角色,用于控制对非管理员用户的模型数据库和数据的访问权限。

为表格模型定义的角色就是数据库角色。 也就是说,角色包含由具有特定权限的 Windows 用户或组组成的成员,定义了这些成员可以对模型数据库采取的操作。 数据库角色作为数据库中的单独对象创建,并且仅适用于创建该角色的数据库。 Windows 用户和/或 Windows 组已被模型作者纳入角色中,该角色默认情况下对工作区数据库服务器拥有管理员权限;而对于已部署的模型,由管理员分配角色。

可以使用行筛选器进一步定义表格模型中的角色。 行筛选器使用 DAX 表达式定义表中的行,以及用户可以查询的许多方向的任何相关行。 只能为读取和读取和处理权限定义使用 DAX 表达式的行筛选器。 有关详细信息,请参阅本主题后面的 行筛选器

默认情况下,创建新的表格模型项目时,该模型项目没有任何角色。 可以使用 SQL Server Data Tools 中的“角色管理器”对话框定义角色。 在模型创作期间定义角色时,这些角色将应用于模型工作区数据库。 部署模型时,应对已部署模型使用相同的角色。 部署模型后,服务器角色(Analysis Services 管理员)和数据库管理员的成员可以使用 SQL Server Management Studio 管理与模型关联的角色和与每个角色关联的成员。

注释

为为 DirectQuery 模式配置的模型定义的角色不能使用行筛选器,但是,为每个角色定义的权限将适用。

权限

每个角色都有一个定义的数据库权限(除了合并的读取和进程权限除外)。 默认情况下,新角色将具有“无”权限。 也就是说,一旦成员添加到具有 None 权限的角色,他们将无法修改数据库、运行进程作、查询数据或查看数据库,除非授予了其他权限。

Windows 组或用户可以是任意数量的角色的成员,每个角色具有不同的权限。 当用户是多个角色的成员时,为每个角色定义的权限是累积的。 例如,如果用户是具有读取权限的角色的成员,并且也是具有 None 权限的角色的成员,该用户将具有读取权限。

每个角色都可以定义以下权限:

权限 DESCRIPTION 使用 DAX 的行筛选器
没有 成员不能对模型数据库架构进行任何修改,也不能查询数据。 行筛选器不适用。 此角色中的用户看不到任何数据
读取 允许成员查询数据(基于行筛选器),但看不到 SSMS 中的模型数据库,不能对模型数据库架构进行任何更改,并且用户无法处理模型。 可以应用行筛选器。 只有行筛选器 DAX 公式中指定的数据对用户可见。
读取和处理 成员可以通过运行包含进程命令的脚本或包来查询数据(基于行级筛选器)并运行进程作,但不能对数据库进行任何更改。 无法在 SQL Server Management Studio 中查看模型数据库。 可以应用行筛选器。 只能查询行筛选器 DAX 公式中指定的数据。
流程 成员可以通过运行包含进程命令的脚本或包来运行进程作。 无法修改模型数据库架构。 无法查询数据。 无法在 SQL Server Management Studio 中查询模型数据库。 行筛选器不适用。 无法以此角色查询任何数据
管理员 成员可以对模型架构进行修改,并且可以查询模型设计器、报告客户端和 SQL Server Management Studio 中的所有数据。 行筛选器不适用。 可以在此角色中查询所有数据。

行筛选器

行筛选器定义特定角色的成员可以查询表中的哪些行。 可使用 DAX 公式为模型中的每个表定义行筛选器。

可仅为具有“读取”和“读取和处理”权限的角色定义行筛选器。 默认情况下,如果未为特定表定义行筛选器,则具有读取或读取和处理权限的角色的成员可以查询表中的所有行,除非交叉筛选从另一个表应用。

为特定表定义行筛选器后,必须使用 DAX 公式,并确保其计算结果为 TRUE/FALSE 值,以定义可供该特定角色成员查询的行。 DAX 公式中未包含的行将无法查询。 例如,对于“销售”角色的成员,“客户”表的以下行筛选器表达式 =Customers [Country] = “USA”(销售角色的成员)只能看到美国的客户。

行筛选器适用于指定的行和相关行。 如果表具有多个关系,筛选器将对处于活动状态的关系应用安全性。 行筛选器将与为相关表定义的其他行筛选器相交,例如:

DAX 表达式
区域 =Region[Country]=“USA”
产品类别 =ProductCategory[Name]="自行车"
交易 =Transactions[Year]=2008

这些权限对交易表的净影响是,允许成员查询这样的数据行:客户在美国,产品类别为自行车,年份为2008年。 除非用户是被授予这些权限的其他角色的成员,否则用户将无法查询美国以外的任何交易、非自行车的交易、或非2008年的交易。

可以使用筛选器 =FALSE() 拒绝访问整个表的所有行。

动态安全性

动态安全性提供了一种基于当前登录的用户的用户名或从连接字符串返回的 CustomData 属性定义行级别安全性的方法。 若要实现动态安全性,必须在模型中包括具有登录名(Windows 用户名)值的表以及可用于定义特定权限的字段;例如,具有登录 ID(域\用户名)的 dimEmployees 表以及每个员工的部门值。

若要实现动态安全性,可以使用以下函数作为 DAX 公式的一部分返回当前登录的用户的用户名或连接字符串中的 CustomData 属性:

功能 DESCRIPTION
USERNAME 函数 (DAX) 返回当前登录的用户的域\ 用户名。
CUSTOMDATA 函数 (DAX) 返回连接字符串中的 CustomData 属性。

可以使用 LOOKUPVALUE 函数返回 Windows 用户名与 USERNAME 函数返回的用户名或 CustomData 函数返回的字符串相同的列的值。 然后,查询可以受到限制,其中 LOOKUPVALUE 返回的值与同一表或相关表中的值匹配。

例如,使用此公式:

='dimDepartmentGroup'[DepartmentGroupId]=LOOKUPVALUE('dimEmployees'[DepartmentGroupId], 'dimEmployees'[LoginId], USERNAME(), 'dimEmployees'[LoginId], 'dimDepartmentGroup'[DepartmentGroupId])

LOOKUPVALUE 函数返回 dimEmployees[DepartmentId] 列的值,其中 dimEmployees[LoginId] 与当前登录的用户的 LoginID 相同,USERNAME 返回的 dimEmployees[DepartmentId] 的值与 dimDepartmentGroup[DepartmentId] 的值相同。 然后,LOOKUPVALUE 返回的 DepartmentId 值用于限制查询 dimDepartment 表和与 DepartmentId 相关的任何表的行。 仅返回 DepartmentId 包含在 LOOKUPVALUE 函数返回的 DepartmentId 值中的行。

dimEmployees

FirstName 登录ID 部门名称 部门编号
棕色 凯文 Adventure-works\kevin0 “营销” 7
布拉德利 大卫 Adventure-works\david0 “营销” 7
Dobney JoLynn Adventure-works\JoLynn0 生产 4
Baretto DeMattos 宝拉 Adventure-works\Paula0 人力资源 2

dimDepartment

部门编号 部门名称
1 公司
2 行政与综合管理
3 库存管理
4 制造
5 质量保证
6 研发
7 销售和营销

测试角色

创作模型项目时,可以使用“在 Excel 中分析”功能来测试已定义角色的有效性。 在模型设计器的 “模型 ”菜单中,单击“ 在 Excel 中分析”之前,将显示“ 选择凭据和透视 ”对话框。 在此对话框中,您可以指定当前用户名、其他用户名、角色,以及用于连接到工作区模型来作为数据源的视图或视角。 有关详细信息,请参阅“在 Excel 中分析”(SSAS 表格)。

相关任务

主题 DESCRIPTION
创建和管理角色 (SSAS 表格) 本主题中的任务介绍如何使用 “角色管理器 ”对话框创建和管理角色。

另请参阅

视角(SSAS 表格)
在 Excel 中分析 (SSAS 表格)
USERNAME 函数 (DAX)
LOOKUPVALUE 函数 (DAX)
CUSTOMDATA 函数 (DAX)