用户访问安全性体系结构

Microsoft SQL Server Analysis Services 依赖 Microsoft Windows 来对用户进行身份验证。默认情况下,只有经过身份验证的用户(在 Analysis Services 内具有权限)才能建立与 Analysis Services 的连接。用户连接到 Analysis Services 之后,用户在 Analysis Services 内具有的权限将由直接分配或通过 Windows 角色的成员身份分配给该用户所属的 Analysis Services 角色的权限来决定。

  • Analysis Services 包含单个固定服务器角色,该角色授予其成员在整个实例内执行任何任务的权限。

  • 属于非固定服务器角色成员的用户可以成为一个或多个数据库角色的成员。每个数据库角色都具有一组自定义的权限,以允许用户在特定数据库内访问数据以及执行任务。

  • 数据库角色可以被授予管理员权限、处理对象权限、查看对象元数据权限以及在每个 Analysis Services 数据库内查看或修改多个级别的数据的权限。

  • 具有管理员权限的数据库角色的成员可以查看或更新数据库内的所有数据。其他数据库角色的成员仅可以查看或更新那些针对其专门授予相应权限的数据对象。

  • Analysis Services 数据库内的权限最初在数据库级别进行授予。如果数据库角色具有数据库级别的权限,则必须针对数据库内的每个对象授予该角色特定的权限。可针对其授予角色权限的对象包括数据库维度和多维数据集维度、各个维度成员、多维数据集、多维数据集内的各个单元、挖掘结构、挖掘模型、数据源以及存储过程。

  • 除了这些安全性体系结构组件以外,Analysis Services 还会对所有的客户端/服务器通信进行加密,从而降低未经授权的用户访问未经授权的信息的风险。最后,默认禁用那些如果配置不当或在不适当的环境中使用就可能危及安全的 Analysis Services 功能。例如,您可以让用户在不经过身份验证的情况下连接到 Analysis Services,也可以接受以明文形式提交的身份验证。但是,如果未能正确执行,这样做可能会危及安全,所以启动这些类型的功能需要您修改默认的设置。

Windows 身份验证

对 Analysis Services 的访问权限基于 Microsoft Windows 身份验证。这种身份验证模式要求所有用户在访问 Analysis Services 中存储的数据以及管理 Analysis Services 对象之前都经过 Windows 操作系统的身份验证。操作系统执行身份验证可使 Analysis Services 利用 Windows 的各种安全功能,包括安全验证和密码加密、审核、密码过期、密码最小长度以及在多次无效的登录请求之后锁定帐户。

注意注意

如果将 Analysis Services 实例配置为允许匿名访问,则 Windows 不会对用户进行身份验证。

Windows 身份验证和 Analysis Services 按如下方式配合使用:

  1. 当用户登录到 Windows 网络时,Windows 域控制器便会验证用户的用户名和密码,从而建立用户的网络身份验证凭据。

  2. 之后,当用户尝试连接到 Analysis Services 时,Analysis Services 将通过 Windows 域控制器验证用户的网络身份验证凭据。

授权

对用户进行了身份验证之后,Analysis Services 接下来会确定该用户是否具有查看数据、更新数据、查看元数据或执行管理任务的权限。如果用户或用户所属的组在 Analysis Services 实例内具有某些类型的权限,则 Analysis Services 允许用户进行连接。默认情况下,如果用户在 Analysis Services 实例内不具有某些类型的权限,则 Analysis Services 不允许用户进行连接。

但是,当用户成功连接到 Analysis Services 之后,授权不会停止。当用户在 Analysis Services 内执行操作(例如,当用户执行服务器存储过程、数据挖掘扩展插件 (DMX) 语句、多维表达式 (MDX) 查询或分析管理对象 (AMO) 命令)时,授权仍会继续。每次当 Analysis Services 必须执行操作或访问对象时,它都会验证用户访问对象或执行命令的权限。如果用户没有相应的权限,则 Analysis Services 将返回权限错误。

服务器角色和数据库角色

Analysis Services 有两种角色:服务器角色和数据库角色。下面是对这两种角色之间的差异的简要说明:

  • 只有一个服务器角色,并且此角色的成员在 Analysis Services 实例内具有完全的管理员权限。

    注意注意

    本地计算机上的 Administrators 本地组的成员自动成为 Analysis Services 实例中服务器角色的成员。

  • 可以有多个数据库角色。服务器角色成员在每个数据库内创建这些数据库角色,向这些数据库角色授予管理或用户权限(例如,读取或读/写多维数据集、维度、单元、挖掘结构、挖掘模型以及数据源对象的权限),然后将 Windows 用户和组添加到这些数据库角色中。

    重要说明重要提示

    角色权限具有累加性。Windows 用户或用户组通过某个数据库角色获得的权限可添加到同一个 Windows 用户或用户组通过其他数据库角色获得的权限上。如果某个角色拒绝用户或用户组执行特定任务或查看特定数据的权限,但是另一个角色为该用户或用户组授予相应的执行或查看权限,则该用户或用户组将具有执行任务或查看数据的权限。

有关详细信息:标识和访问控件(Analysis Services - 多维数据)

管理员权限

虽然服务器角色成员自动具有完全的管理员权限,但数据库角色成员并非如此。可以授予数据库角色“完全控制”权限(也称为管理员权限),还可以授予下列一组更具限制性的管理员权限:

  • 处理数据库

  • 读取数据库元数据

  • 处理一个或多个维度

  • 读取一个或多个维度的定义

  • 处理一个或多个多维数据集

  • 读取一个或多个多维数据集的定义

  • 处理一个或多个挖掘结构

  • 处理一个或多个挖掘模型

  • 读取一个或多个挖掘结构的定义

  • 读取一个或多个挖掘模型的定义

  • 读取一个或多个数据源的定义

只有服务器角色成员以及具有“完全控制”权限的数据库角色成员才能在不需要其他权限的情况下读取 Analysis Services 数据。其他用户只能读取 Analysis Services 数据,但前提是他们的数据库角色明确授予读取或读/写 Analysis Services 中的数据对象(如维度、多维数据集、单元以及挖掘模型)的权限。

有关详细信息:授予管理访问权限

维度级别的安全性

数据库角色可以指定其成员是否具有查看或更新指定数据库维度中的维度成员的权限。而且,在每个针对其为数据库角色授予权限的维度内,可以授予角色仅查看或更新特定维度成员(而非所有维度成员)的权限。如果未授予数据库角色查看或更新特定维度以及某些或全部维度成员的权限,则该数据库角色的成员无权查看维度或该维度的任何成员。

注意注意

除非在使用数据库维度的多维数据集内明确授予不同的权限,否则,授予数据库角色的维度权限适用于基于数据库维度的多维数据集维度。

有关详细信息,请参阅:授予维度访问权限授予对维度数据的自定义访问权限

多维数据集级别的安全性

数据库角色可以指定其成员是否具有读取或读/写数据库中一个或多个多维数据集的权限。如果未授予数据库角色读取或读/写至少一个多维数据集的权限,数据库角色的成员便无权查看数据库中的任何多维数据集,无论这些成员是否通过角色获得任何查看维度成员的权限。

有关详细信息,请参阅:授予对多维数据集的访问权限

单元级别的安全性

数据库角色可以指定其成员是否具有读取、有条件读取或读/写多维数据集内的某些或所有单元的权限。如果未授予数据库角色对多维数据集内的单元的权限,该数据库角色的成员将无权查看任何多维数据集数据。如果拒绝数据库角色基于维度安全性查看特定维度的权限,单元级别的安全性便不能将数据库角色成员的权限扩展为包含该维度的单元成员。另一方面,如果授予数据库角色查看维度成员的权限,则可以使用单元级别的安全性来限制数据库角色成员可查看的维度的单元成员。

有关详细信息,请参阅:授予对单元数据的自定义权限

挖掘结构、挖掘模型和数据源的安全性

数据库角色可以指定其成员是否具有读取或读/写挖掘结构和挖掘模型的权限。还可以授予数据库角色钻取源数据以及浏览一个或多个挖掘模型的权限。最后可以授予数据库角色读/写数据源对象的权限。此权限允许角色在 OPENQUERY 子句中引用该数据源,并使用数据源对象中定义的连接字符串。

有关详细信息,请参阅:授予访问挖掘结构和挖掘模型的权限授予对数据源的访问权限

存储过程的安全性

Analysis Services 中的存储过程是使用 Microsoft .NET 编程语言编写的外部例程,扩展了 Analysis Services 的功能。通过这些存储过程,开发人员可以利用跨语言集成、异常处理、版本支持、部署支持以及调试支持。

任何用户都可以调用存储过程。根据存储过程配置方式的不同,该过程既可以在调用它的用户的上下文中运行,也可以在匿名用户的上下文中运行。由于匿名用户没有安全上下文,因此可使用此功能将 Analysis Services 实例配置为允许进行匿名访问。

在用户调用存储过程之后但在 Analysis Services 运行存储过程之前,Analysis Services 会评估存储过程内的操作。Analysis Services 根据授予用户的权限和用于运行过程的权限集的交集来评估存储过程内的操作。如果存储过程包含任意无法由用户的数据库角色执行的操作,则不会执行该操作。

下面便是用于运行存储过程的权限集:

  • 安全 存储过程无法使用“安全”权限集来访问 Microsoft .NET Framework 中受保护的资源。此权限集仅允许执行计算。它是最安全的权限集;不会将信息泄露到 Analysis Services 之外,不能评估权限,并且最大限度地减低了数据篡改攻击的风险。

  • 外部访问 借助“外部访问”权限集,存储过程可以使用托管代码访问外部资源。将存储过程设置为此权限集不会导致可引起服务器不稳定的编程错误。但是,此权限集可能导致信息泄露到服务器之外,并可能导致权限提升以及数据篡改攻击。

  • 无限制 借助“无限制”权限集,存储过程可以使用任何代码访问外部资源。使用此权限集,存储过程没有安全性或可靠性保证。

加密

默认情况下,Analysis Services 要求对客户端和 Analysis Services 实例之间的所有通信进行加密。

有关详细信息,请参阅:保护客户端与 Analysis Services 实例的通信

Off By Default

默认情况下,Analysis Services 实例在设计上是安全的。因此,可能危及安全的功能默认处于禁用状态。下列功能默认情况下处于禁用状态,如果要使用它们,就必须专门进行启用:

  • HTTP 连接

  • 跟踪

  • 存储过程

  • 远程分区

  • 链接对象(目标)

  • 链接对象(来源)

  • 数据挖掘聚合器

  • 客户端保护级别

  • Web 保护级别

  • 所需的客户端身份验证

  • Active Directory 集成

  • 即席 OpenRowset 查询

  • 8.0 客户端连接

  • 故障报告