本文属于SQL Server安全专题系列


 在安装SQL Server时,很重要的一步就是选择所需的服务,由于每个服务必须有一个服务帐号,所以也就需要帐号的选择和配置,应该坚持最小所需权限原则。最小所需权限原则应该针对日常运行所需来制定,如果偶发性的需求,可以临时提权但是记住要用完后马上降权。

 下表列出了常规服务帐号的基本所需权限,当然只是“基本”的,如果需要进行额外操作,也可以适当搭配。




服务

用户权限分配

文件及文件夹权限

数据库引擎

  • 以服务身份登录
  • 替换进程级别标记(token)
  • 跳过遍历检查
  • 调整进程内存配额
  • 启动SQL Writer
  • 读取事件日志服务
  • 读取RPC服务


SQL Agent

  • 以服务身份登录
  • 替换进程级别标记(token)
  • 跳过遍历检查
  • 调整进程内存配额


SSAS

  • 以服务身份登录
  • 增加进程工作集(仅适用于表格)
  • 调整进程内存配额(仅适用于表格)
  • 锁定内存页(仅适用于表格)
  • 提高计划优先级(仅适用于表格)


SSRS

以服务身份登录


SSIS

  • 以服务身份登录
  • 跳过遍历检查
  • 身份验证后模拟客户端

 

Full-Text

  • 以服务身份登录
  • 调整进程的内存配额
  • 跳过遍历检查

 

SQL Browser

以服务身份登录


SQL Server Distributed Replay 控制器

以服务身份登录


SQL Server Distributed Replay 客户端

以服务身份登录


PolyBase 引擎和 DMS

以服务身份登录

 

R 服务:SQLRUserGroup

允许在本地登录

 

Instid\MSSQL\backup

完全控制

Instid\MSSQL\binn

读取和执行

Instid\MSSQL\data

完全控制

Instid\MSSQL\FTData

完全控制

Instid\MSSQL\Install

读取和执行

Instid\MSSQL\Log

完全控制

Instid\MSSQL\Repldata

完全控制

130\shared

读取和执行

Instid\MSSQL\Template Data(仅限 SQL Server Express)

读取




 绝大部分情况下都建议使用SQL Server配置管理器进行配置,但是如果同时装了多版本的SQL Server,可能不方便查找配置管理器,下面列出常见的配置管理器路径以供备用:




SQL Server版本

配置管理器路径

SQL Server 2016

C:\Windows\SysWOW64\SQLServerManager13.msc

SQL Server 2014

C:\Windows\SysWOW64\SQLServerManager12.msc

SQL Server 2012

C:\Windows\SysWOW64\SQLServerManager11.msc

SQL Server 2008

C:\Windows\SysWOW64\SQLServerManager10.msc

 又到了大家最喜欢的最佳实践,不过我不是非常喜欢,因为在面向搜索引擎编程及快餐文化盛行的今天,由于缺乏对问题的思考,大部分人把最佳实践当作唯一方式来全盘照抄,从我用词上面大家应该懂得。不喜欢归不喜欢,还是有必要列一下:



何时使用域帐号:



1. 需要和其他网络中的服务器、服务或资源交互


2. 使用Linked server(链接服务器)访问网络中的服务器


则可以使用低权限的域用户来运行SQL 引擎服务。但是Windows域管理员应该对其进行严格管控。




何时使用NETWORK SERVICE帐号:


 别想了。这个帐号也会被本机运行其他服务,只是比本地用户组具有更多的网络资源访问权限。用这个帐号来运行SQL 服务,需要用证书来访问网络资源。麻烦。




何时使用LOCAL USER帐号:


1. 不需要跟网络中的其他服务器、服务或资源交互,可以使用低权限本地用户帐号来运行。


注意:不建议使用具有管理特权的本地用户运行SQL Server服务,对于即时文件初始化功能,可以额外授权。




何时使用LOCAL SYSTEM帐号:



最好不要,因为它的权限过大。




总结:




 如果环境在域中,优先选择域帐号作为服务帐号,并且配置低权限,不够才提权,如果是完全独立的服务器,在保证外围安全的前提下,使用LOCAL User,要是想省事,用LOCAL SYSTEM也不是不可以。


 但是,又要保证SQL Server对数据、日志和备份目录具有完全控制权限。