Sql server 如何确定程序可以使用且仍能正常运行的最严格的SQL server安全权限? 问题背景

Sql server 如何确定程序可以使用且仍能正常运行的最严格的SQL server安全权限? 问题背景,sql-server,security,permissions,Sql Server,Security,Permissions,对不起,如果这是一个有点乏味的阅读,但请容忍我 我的任务是确定最严格的安全权限…或者更确切地说,调查是否可以为我们的程序使用的SQL server登录配置更严格的安全设置,但仍能正常工作 当前,该程序作为Windows服务运行,配置为使用已在SQL server中配置为trusted auth的Windows用户帐户登录。所使用的登录名已被分配了一个db_owner角色,并且服务工作正常 因此,为了缩小此用户的权限,我删除了db\u所有者权限,并将其分配给db\u数据读取器和db\u数据编写器角

对不起,如果这是一个有点乏味的阅读,但请容忍我

我的任务是确定最严格的安全权限…或者更确切地说,调查是否可以为我们的程序使用的SQL server登录配置更严格的安全设置,但仍能正常工作

当前,该程序作为Windows服务运行,配置为使用已在SQL server中配置为trusted auth的Windows用户帐户登录。所使用的登录名已被分配了一个db_owner角色,并且服务工作正常

因此,为了缩小此用户的权限,我删除了db\u所有者权限,并将其分配给db\u数据读取器db\u数据编写器角色。不幸的是,这会导致问题,当我启动服务时,会出现一个错误对话框,显示:

错误1053:服务未及时响应启动或控制请求

并在事件查看器中的系统下记录事件:

  • 事件7009(等待..连接超时)
  • 事件7000(服务未响应启动或控制)
我的问题是代码库非常大,我不确定到底要查找什么需要db_所有者权限(它可能会设置权限?)


问题 我应该在一个执行SQL的程序中寻找什么,这会导致它需要db_所有者权限

如果第一个问题过于笼统:如果我记录了系统错误事件,是否有一种简单的方法/任何工具可以用来确定Windows服务在启动“SQL wise”期间尝试执行的操作:

  • 事件7009(等待…服务连接的超时(30000毫秒)
  • 事件7000(服务未及时响应启动或控制请求)

顺便说一句,我尝试在选中所有审核事件的情况下运行探查器,但在启动服务时仍然没有记录任何内容。

这是一个非常广泛的问题,因为我不知道您的服务的体系结构以及它如何与SQL Server通信。您正在使用内嵌式SQL吗?存储过程

我认为您最好从服务的代码开始,从一开始就跟踪执行路径,看看SQL Server上执行了什么


或者,如果您使用的是存储过程,您可能希望将它们全部脚本化到一个文件中,并搜索一些仅限于db_所有者的常见T-SQL命令,如CREATE、DROP、ALTER。

唉,我想这是唯一的方法,我将搜索存储过程。对我来说很奇怪,当启动服务时,没有任何东西登录到探查器中,我认为在探查器中选择所有事件时,至少应该弹出一些东西