Sql server 是否应授予NT AUTHORITY\System系统管理员角色?

Sql server 是否应授予NT AUTHORITY\System系统管理员角色?,sql-server,octopus-deploy,Sql Server,Octopus Deploy,我似乎找不到这个问题的确切答案 问题:我正在使用Octopus Deploy运行一个可执行文件,该文件将运行我的数据库迁移脚本。当八达通“触手”Windows服务以localsystem运行时发生错误,该服务转换为NT AUTHORITY\System 一种解决方案是更改SQL server安全设置,并将适当的角色授予NT AUTHORITY\System用户,从而允许以localsystem用户身份运行的进程创建数据库 进行此更改对安全有何影响?它允许任何以localsystem运行的进程在数

我似乎找不到这个问题的确切答案

问题:我正在使用Octopus Deploy运行一个可执行文件,该文件将运行我的数据库迁移脚本。当八达通“触手”Windows服务以
localsystem
运行时发生错误,该服务转换为
NT AUTHORITY\System

一种解决方案是更改SQL server安全设置,并将适当的角色授予
NT AUTHORITY\System
用户,从而允许以
localsystem
用户身份运行的进程创建数据库

进行此更改对安全有何影响?它允许任何以
localsystem
运行的进程在数据库上执行操作,但如果我控制安装到服务器上的内容,这是一件坏事吗

似乎在SQL Server 2012年前后发生了一次更改,
localsystem
帐户以前默认为
sysadmin
,但后来发生了更改。我看到的一件事是,此更改阻止服务器管理员访问服务器,但鉴于您无论如何都不能以
localsystem
身份登录,我看不出这是如何实现的

我错过了什么

参考资料:

我回答这个问题:

我看到的一件事是,此更改阻止了服务器管理员 有权访问服务器,但我看不出这是怎么可能的 您无论如何都不能以localsystem身份登录

本地Windows管理员无论如何都可以访问服务器,在单用户模式下启动SQL server时,他将完全控制该服务器:

但这需要重新启动服务器


以sysadmin身份访问服务器而无需重新启动的另一个选项是使用
PsExec
(-s):您甚至可以通过SSMS以localsystem身份登录。如果此登录名是系统管理员,则您可以完全控制服务器

如果有人能够破坏您的Octopus部署实例,SA角色将提供足够的访问权限来删除服务器上的每个数据库

我认为创建初始数据库是一个非常重要的事件。一个更安全的选择是手动创建数据库,并授予NT Authority运行迁移脚本的最低权限

我们采用了这种方法,从SA到db_所有者,再到具有

[db_datareader]
[db_datawriter]
[db_ddladmin]

我将创建一个用于您的服务的特定帐户,并且只向该用户授予最低权限。根据,运行向导的用户必须在SQL Server上具有创建数据库和授予权限的权限