【问题标题】:SQL Server Find Least Privilege for user accountSQL Server 查找用户帐户的最低权限
【发布时间】:2019-05-09 10:46:08
【问题描述】:

我有一个供应商在我的一个 SQL Server 2012 实例上安装了应用程序数据库。他告诉我,应用程序使用的 SQL Auth 帐户需要 DB Data reader、Data writer、DB owner 和 sysadmin。这对我来说毫无意义,因为 sysadmin 不需要其他角色。安装后,我删除了系统管理员,并且该帐户具有数据读取器和写入器。应用程序停止工作。

所以我正在寻找一些技巧和想法来确定应用程序用户所需的最低权限。我看到数据库有存储过程,但没有任何函数、类型、程序集,所以我只想创建一个包含所有必需授权的角色。 DB Owner 会比系统管理员更好。我可以忍受。

【问题讨论】:

  • 即使我在那种情况下授予了数据库所有者。

标签: sql-server security permissions


【解决方案1】:

这取决于应用程序需要做什么。如果您的应用程序只读取数据,那么 datareader 角色。如果它读取和写入数据库,那么读取器和写入器都会很好。请注意,写入数据仅包括插入和更新,而不包括修改或更改。在大多数情况下,您可以分配一系列角色,而不提供对诸如截断或删除表等命令的登录访问权限 - 很明显,为什么拥有上帝能力的应用程序不是一个好主意。

这里列出了您可以分配的所有可能角色以及每个角色的用途。希望了解应用程序的功能将帮助您更流畅地分配这些角色。

预定义的数据库角色

您可能需要创建自己的,但您可以访问多个预定义的数据库角色:

  • db_owner:成员拥有完全访问权限。
  • db_accessadmin:成员可以管理 Windows 组和 SQL Server 登录。
  • db_datareader:成员可以读取所有数据。
  • db_datawriter:成员可以添加、删除或修改表中的数据。
  • db_ddladmin:成员可以运行动态链接库 (DLL) 语句。
  • db_securityadmin:成员可以修改角色成员资格和管理权限。
  • db_bckupoperator:成员可以备份数据库。
  • db_denydatareader:成员无法查看数据库内的数据。
  • db_denydatawriter:成员无法更改或删除表或视图中的数据。

固定角色

固定的服务器角色在服务器范围内应用,并且有几个预定义的服务器角色:

  • 系统管理员:任何成员都可以在服务器上执行任何操作。
  • ServerAdmin:任何成员都可以在服务器上设置配置选项。
  • SetupAdmin:任何成员都可以管理链接服务器和 SQL Server 启动选项和任务。
  • 安全管理员:任何成员都可以管理服务器安全。
  • ProcessAdmin:任何成员都可以终止 SQL Server 上运行的进程。
  • DbCreator:任何成员都可以创建、更改、删​​除和恢复数据库。
  • DiskAdmin:任何成员都可以管理 SQL Server 磁盘文件。
  • BulkAdmin:任何成员都可以运行批量插入命令。

【讨论】:

  • 感谢霍克林。我一直希望 db owner 就足够了,但在继续调查之后,我被提醒 db owner 没有执行存储过程的权限。所以我运行了以下语句: GRANT EXECUTE ON SCHEMA :: dbo TO someuser 我们将在下一个维护窗口期间尝试测试。感谢您抽出宝贵时间!
猜你喜欢
  • 2012-07-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-22
  • 2012-03-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多