【问题标题】:How to determine the most restrictive SQL server security permissions a program can use and still function?如何确定程序可以使用并且仍然可以运行的最严格的 SQL Server 安全权限?
【发布时间】:2011-09-06 14:26:31
【问题描述】:

问题背景

如果阅读起来有点乏味,请见谅,但请多多包涵。

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

目前,该程序作为 Windows 服务运行,配置为使用已在 SQL Server 中配置的具有受信任身份验证的 Windows 用户帐户登录。使用的登录名已被分配一个 db_owner 角色,并且该服务可以正常工作。

因此,为了缩小此用户的权限,我删除了 db_owner 权限并将其分配给 db_datareaderdb_datawriter 角色。不幸的是,这导致了一个问题,当我启动服务时,我得到一个错误对话框显示:

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

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

  • 事件 7009(等待连接超时)
  • 事件 7000(服务没有响应启动或控制)

我的问题是代码库非常大,我不确定要查找什么需要 db_owner 权限(它可能设置权限?)。


问题

我应该在执行 SQL 的程序中寻找什么会导致它需要 db_owner 权限?

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

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

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

【问题讨论】:

    标签: sql-server security permissions


    【解决方案1】:

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

    我认为您最好从服务的代码开始并从头开始跟踪执行路径并查看在 SQL Server 上/针对 SQL Server 执行什么来解决这个问题。

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

    【讨论】:

    • 叹息我想这是唯一的方法,我将搜索存储的过程。对我来说很奇怪,在启动服务时没有任何东西登录分析器,我认为在分析器中选择所有事件时至少应该弹出一些东西
    猜你喜欢
    • 1970-01-01
    • 2018-01-13
    • 2013-07-27
    • 2014-08-03
    • 1970-01-01
    • 1970-01-01
    • 2023-04-10
    • 2021-06-03
    • 1970-01-01
    相关资源
    最近更新 更多