SQL Server查找用户帐户的最低特权

时间:2018-12-07 16:27:03

标签: sql-server security permissions access

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

因此,我正在寻找一些技巧和想法,以找出应用程序用户所需的最低特权。我看到该数据库具有存储过程,但是没有任何函数,类型,程序集,因此我只想创建一个具有所有必需授权的角色。数据库所有者将比sysadmin更好。我可以忍受。

1 个答案:

答案 0 :(得分:0)

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

以下是您可以分配的所有可能角色及其作用的列表。希望了解应用程序的功能将有助于您更流畅地分配这些角色。

预定义的数据库角色

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

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

固定角色

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

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