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



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

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

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

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

预定义的数据库角色

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

  • 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:任何成员都可以运行大容量插入命令

您可以创建一个数据库角色来执行存储过程。当您授予特定数据库的登录权限时,它甚至会显示在UI中:

-- Create a db_executor role
CREATE ROLE db_executor
-- Grant execute rights to the new role
GRANT EXECUTE TO db_executor

相关内容

  • 没有找到相关文章

最新更新