配置服务帐户 (Analysis Services)

适用于: SQL Server Analysis Services Azure Analysis Services Fabric/Power BI Premium

产品范围的帐户预配记录在 “配置 Windows 服务帐户和权限”中,该主题为所有 SQL Server 服务(包括 SQL Server Analysis Services)提供全面的服务帐户信息。 请参阅它,了解有效的帐户类型、安装程序分配的 Windows 权限、文件系统权限、注册表权限等。

本主题提供 SQL Server Analysis Services 的补充信息,包括表格安装和群集安装所需的其他权限。 它还涵盖支持服务器操作所需的权限。 例如,可以配置处理和查询操作在服务帐户下执行,在这种情况下,需要额外的权限。

此处未记录的另一个配置步骤是为 SQL Server Analysis Services 实例和服务帐户注册服务主体名称(SPN)。 此步骤在双跃点方案中启用从客户端应用程序到后端数据源的直通身份验证。 此步骤仅适用于为 Kerberos 约束委派配置的服务。 有关详细说明,请参阅 为 Kerberos 配置 Analysis Services 的约束委派

登录帐户建议

MSSQLServerOLAPService Windows 服务启动时使用的帐户可以是 Windows 域用户帐户、虚拟帐户、托管服务帐户(MSA)或内置帐户,例如按服务 SID、NetworkService 或 LocalSystem。 使用域用户帐户作为服务登录帐户 提供有关用户帐户格式的详细信息。

在故障转移群集中,Analysis Services 的所有实例都应配置为使用 Windows 域用户帐户。 将同一帐户分配给所有实例。 有关详细信息 ,请参阅 How to Cluster Analysis Services

独立实例应使用默认虚拟帐户、 NT Service\MSSQLServerOLAPService 作为默认实例,或者对命名实例使用 NT Service\MSOLAP$instance-name 。 此建议适用于所有服务器模式下的 Analysis Services 实例,假设 Windows Server 2008 R2 及更高版本适用于作系统,以及适用于 Analysis Services 的 SQL Server 2012 及更高版本。

向 Analysis Services 授予权限

本部分解释了 Analysis Services 本地内部操作所需的权限。 这些作包括启动可执行文件、读取配置文件以及从数据目录加载数据库。 有关设置外部数据访问权限以及与其他服务和应用程序的互操作性的指导,可以在此主题后面的 为特定服务器操作授予额外权限 部分中找到。

对于内部操作,Analysis Services中的权限持有者不是登录账户,而是由安装创建的包含每个服务SID的本地Windows安全组。 向安全组分配权限与以前版本的 Analysis Services 一致。 此外,登录帐户可能会随着时间的推移而更改,但每个服务 SID 和本地安全组在服务器安装的生存期内保持不变。 对于 Analysis Services,安全组是保存权限比登录帐户更好的选择。 每当手动向服务实例授予权限(无论是文件系统权限还是 Windows 权限)时,请务必向为服务器实例创建的本地安全组授予权限。

安全组的名称遵循模式。 前缀始终为 SQLServerMSASUser$,后跟计算机名称,以实例名称结尾。 默认实例为 MSSQLSERVER。 命名实例是在安装过程中提供的名称。

可以在本地安全设置中看到此安全组:

  • 运行 compmgmt.msc | 本地用户和组 | | SQLServerMSASUser$<server-name>$MSSQLSERVER (对于默认实例)。

  • 若要查看其成员,请双击安全组。

组唯一的成员是每项服务的 SID。 就在它旁边的是登录帐户。 登录帐户名称是形式上的,用于为每个服务 SID 提供背景。 如果更改登录帐户,安全组和每个服务 SID 不会更改。 只有登录帐户标签不同。

分配给 Analysis Services 服务帐户的 Windows 权限

Analysis Services 需要来自操作系统的权限以启动服务并请求系统资源。 要求因服务器模式以及实例是否群集而异。

Analysis Services 的所有实例都需要 登录即服务 (SeServiceLogonRight)特权。 SQL Server 安装程序为你在安装期间指定的服务帐户分配特权。 对于在多维和数据挖掘模式下运行的服务器,这是 Analysis Services 服务帐户为独立服务器安装所需的唯一 Windows 特权,也是安装程序为 Analysis Services 配置的唯一特权。 对于群集实例和表格实例,必须手动添加其他 Windows 特权。

故障转移群集实例(采用表格模式或多维模式)必须具有 “增加计划优先级 ”(SeIncreaseBasePriorityPrivilege)。

表格实例使用以下三个附加权限,必须在安装实例后手动授予这些权限。

权限 DESCRIPTION
增加进程工作集 (SeIncreaseWorkingSetPrivilege) 默认情况下,此权限可通过 “用户 ”安全组向所有用户提供。 如果通过删除此组的权限锁定服务器,Analysis Services 可能无法启动,记录此错误:“客户端不持有所需的权限。发生此错误时,通过将权限授予相应的 Analysis Services 安全组,将权限还原到 Analysis Services。
调整进程的内存配额 (SeIncreaseQuotaPrivilege) 如果进程没有足够的资源来完成其执行,则此特权用于请求更多内存,但受为实例建立的内存阈值的约束。
锁定内存中的页 (SeLockMemoryPrivilege) 仅当完全关闭分页时,才需要此权限。 默认情况下,表格服务器实例使用 Windows 分页文件,但你可以通过将 VertiPaqPagingPolicy 设置为 0 来阻止它使用 Windows 分页。

VertiPaqPagingPolicy 设置为 1(默认值),指示表格服务器实例使用 Windows 分页文件。 分配未锁定,允许 Windows 根据需要分页。 由于使用了分页,因此无需锁定内存中的页。 因此,对于默认配置(其中 VertiPaqPagingPolicy = 1),无需向表格实例授予 内存中的锁定页 权限。

VertiPaqPagingPolicy 到 0。 如果关闭 Analysis Services 的分页,则分配将被锁定,假设 将“锁定内存中的页 ”权限授予表格实例。 鉴于此设置和 锁定内存中的页 权限,当系统面临内存压力时,Windows 无法将内存分配从 Analysis Services 分页出去。 Analysis Services 依赖于 锁定内存中的页 权限,作为 VertiPaqPagingPolicy = 0 背后的支撑点。 请注意,不建议关闭 Windows 分页。 如果允许分页,本可以成功的操作将导致内存不足错误率增加。 有关 VertiPaqPagingPolicy 的详细信息,请参阅内存属性

在服务帐户上查看或添加 Windows 权限

  1. 运行 GPEDIT.msc |本地计算机策略 |计算机配置 |Windows 设置 |安全设置 |本地策略 |用户权限分配。

  2. 查看包含 SQLServerMSASUser$的现有策略。 这是在安装 Analysis Services 的计算机上找到的本地安全组。 向此安全组授予 Windows 特权和文件夹权限。 双击 “以服务方式登录 ”策略,查看如何在系统上指定安全组。 安全组的全名将因是否将 Analysis Services 安装为命名实例而异。 添加帐户特权时,请使用此安全组,而不是实际的服务帐户。

  3. 若要在 GPEDIT 中添加帐户权限,请右键单击“ 增加进程工作集 ”,然后选择“ 属性”。

  4. 单击 “添加用户或组”

  5. 输入 Analysis Services 实例的用户组。 请记住,服务帐户是本地安全组的成员,您需要在帐户的域前面加上本地计算机名称。

    以下列表展示了在名为“SQL01-WIN12”的计算机(本地域名)上的一个默认实例和一个名为“Tabular”的命名实例的两个示例。

    • SQL01-WIN12\SQL01-WIN12$SQLServerMSASUser$MSSQLSERVER

    • SQL01-WIN12\SQL01-WIN12$SQLServerMSASUser$TABULAR

  6. 请对 进程调整内存配额重复执行,然后(可选)对 在内存中锁定页提高计划优先级执行。

注释

以前版本的安装程序无意中将 Analysis Services 服务帐户添加到 性能日志用户组 。 尽管此缺陷已修复,但现有系统安装可能具有没有必要的用户组成员身份。 由于 SQL Server Analysis Services 服务帐户不需要 性能日志用户组 的成员身份,因此可以从组中将其删除。

分配给 Analysis Services 服务帐户的文件系统权限

注释

有关与每个程序文件夹关联的权限列表,请参阅 “配置 Windows 服务帐户和权限 ”。

有关 IIS 配置和 SQL Server Analysis Services 的文件权限信息,请参阅 “在 Internet Information Services 8.0 上配置对 Analysis Services 的 HTTP 访问”

服务器作所需的所有文件系统权限(包括从指定数据文件夹中加载和卸载数据库所需的权限)由 SQL Server 安装程序在安装过程中分配。

数据文件、程序文件可执行文件、配置文件、日志文件和临时文件的权限持有者是由 SQL Server 安装程序创建的本地安全组。

为安装的每个实例创建一个安全组。 安全组根据实例命名——对于默认实例,是SQLServerMSASUser$MSSQLSERVER,而对于命名实例,则是SQLServerMSASUser$<servername>$<instancename>。 设置分配此安全组,授予执行服务器操作所需的文件权限。 如果检查 \MSAS13.MSSQLSERVER\OLAP\BIN 目录的安全权限,您将看到安全组(不是服务帐户或其每个服务 SID)是该目录的权限持有者。

安全组仅包含一个成员:SQL Server Analysis Services 实例启动帐户的每个服务安全标识符(SID)。 安装程序将每个服务 SID 添加到本地安全组。 与数据库引擎相比,使用具有其 SID 成员资格的本地安全组,虽然只是 SQL Server 安装程序配置 Analysis Services 时的一个小差异,但却非常明显。

如果认为文件权限已损坏,请按照以下步骤验证服务是否已正确预配:

  1. 使用服务控制命令行工具(sc.exe)获取默认服务实例的 SID。

    SC showsid MSSqlServerOlapService

    对于命名实例(其中实例名称为表格),请使用以下语法:

    SC showsid MSOlap$Tabular

  2. 使用计算机管理器 | 本地用户和组 | 来查看 SQLServerMSASUser$<servername>$<instancename> 安全组的成员情况。

    成员 SID 应与步骤 1 中的每个服务 SID 匹配。

  3. 使用 Windows 资源管理器 | 程序文件 | Microsoft SQL Server |MSASxx.MSSQLServer | OLAP | bin 用于验证文件夹安全属性是否已授予步骤 2 中的安全组。

注释

从不删除或修改 SID。 若要还原无意中删除的每服务 SID,请参阅 使用服务 SID 向 SQL Server 2017 中的服务授予权限

有关每个服务 SID 的详细信息

每个 Windows 帐户都有关联的 SID,但服务也可以具有 SID,因此称为每个服务 SID。 每当安装服务实例时,将创建一个按服务的 SID 作为该服务的唯一永久标识。 每个服务的 SID 是根据服务名称生成的特定于本地计算机的 SID。 在默认实例上,其用户友好名称为 NT SERVICE\MSSQLServerOLAPService。

每个服务 SID 的好处是,它允许任意更改更广可见的登录帐户,而不会影响文件权限。 例如,假设你安装了两个 Analysis Services 实例,即默认实例和命名实例,这两个实例都在同一 Windows 用户帐户下运行。 即使登录帐户是共享的,每个服务实例都将拥有一个特定于服务的唯一 SID。 此 SID 不同于登录帐户的 SID。 每个服务 SID 用于文件权限和 Windows 特权。 相比之下,登录帐户 SID 用于身份验证和授权方案 • 不同的 SIDS,用于不同的目的。

由于 SID 是不可变的,因此,无论更改服务帐户的频率如何,在服务安装期间创建的文件系统 ACL 都可以无限期使用。 作为一项添加的安全措施,通过 SID 指定权限的 ACL 可确保程序可执行文件和数据文件夹只能由单个服务实例访问,即使其他服务在同一帐户下运行也是如此。

为特定服务器操作授予额外的 Analysis Services 权限

SQL Server Analysis Services 在用于启动 SQL Server Analysis Services 的服务帐户(或登录帐户)的安全上下文中执行一些任务,并在请求该任务的用户的安全上下文中执行其他任务。

下表描述了支持作为服务帐户执行的任务所需的其他权限。

服务器运行 工作项 理由
远程访问外部关系数据源 为服务帐户创建数据库登录名 处理是指从外部数据源(通常是关系数据库)检索数据,后者随后加载到 SQL Server Analysis Services 数据库中。 用于检索外部数据的凭据选项之一是使用服务帐户。 仅当为服务帐户创建数据库登录名并向源数据库授予读取权限时,此凭据选项才有效。 有关服务帐户选项用于此任务的详细信息,请参阅 “设置模拟选项”(SSAS - 多维 )。 同样,如果将 ROLAP 用作存储模式,则提供相同的模拟选项。 在这种情况下,帐户还必须对源数据具有写入访问权限才能处理 ROLAP 分区(即存储聚合)。
DirectQuery 为服务帐户创建数据库登录名 DirectQuery 是一种表格功能,用于查询外部数据集,这些数据集太大而无法容纳在表格模型中,或者具有其他特征,使 DirectQuery 更适合默认内存中存储选项。 DirectQuery 模式下可用的连接选项之一是使用服务帐户。 仅当服务帐户具有数据库登录名和对目标数据源的读取权限时,此选项才有效。 有关服务帐户选项用于此任务的详细信息,请参阅 “设置模拟选项”(SSAS - 多维 )。 或者,当前用户的凭据可用于检索数据。 在大多数情况下,此选项涉及双跳连接,因此请确保为 Kerberos 受限委派配置服务帐户,以便服务帐户可以将身份委派给下游服务器。 有关详细信息,请参阅 配置 Analysis Services for Kerberos 约束委派
对其他 SSAS 实例的远程访问 将服务帐户添加到在远程服务器上定义的 Analysis Services 数据库角色中 在其他远程 SQL Server Analysis Services 实例上分区和引用链接对象都是需要远程计算机或设备权限的系统功能。 当用户创建和填充远程分区或设置链接对象时,该作在当前用户的安全上下文中运行。 如果随后自动执行这些操作,SQL Server Analysis Services 将在其服务帐户的安全上下文中访问远程实例。 为了访问 SQL Server Analysis Services 远程实例上的链接对象,登录帐户必须具有读取远程实例上某些对象的权限,例如对某些维度的读取权限。 同样,使用远程分区要求服务帐户对远程实例具有管理权限。 在远程 Analysis Services 实例上授予此类权限,将允许的操作与特定对象相关联的角色。 有关如何授予允许处理和查询作的完全控制权限的说明 ,请参阅“授予数据库权限”(Analysis Services )。 有关远程 分区的详细信息,请参阅“创建和管理远程分区”(Analysis Services )。
写回 将服务帐户添加到在远程服务器上定义的 Analysis Services 数据库角色中 在客户端应用程序中启用时,写回是多维模型的一项功能,允许在数据分析期间创建新的数据值。 如果在任何维度或多维数据集中启用写回,SQL Server Analysis Services 服务帐户必须具有对源 SQL Server 关系数据库中写回数据表的写入权限。 如果此表尚不存在且需要创建,则 SQL Server Analysis Services 服务帐户还必须在指定的 SQL Server 数据库中具有创建表权限。
写入 SQL Server 关系数据库中的查询日志表 为服务帐户创建数据库登录名,并为查询日志表分配写入权限 可以启用查询日志记录来收集数据库表中的使用情况数据以供后续分析。 SQL Server Analysis Services 服务帐户必须具有对指定 SQL Server 数据库中查询日志表的写入权限。 如果此表尚不存在且需要创建,则 SQL Server Analysis Services 登录帐户还必须在指定的 SQL Server 数据库中具有创建表权限。 有关详细信息,请参阅 使用基于使用情况的优化向导(博客)提高 SQL Server Analysis Services 性能

配置 Windows 服务帐户和权限
SQL Server 服务帐户和 Per-Service SID(博客)
使用服务 SID 向 SQL Server 2017 中的服务授予权限
访问令牌 (MSDN)
安全标识符 (MSDN)
访问令牌 (维基百科)
访问控制列表 (维基百科)