通过TSQL实现SQL Server安全性

cin*_*ndi 5 t-sql sql-server security

我想构建一个transact sql脚本,它将阻止指定人员对所有数据库运行某些命令:

drop database, drop table or preferbly drop *

delete

update
Run Code Online (Sandbox Code Playgroud)

这可能吗?用户已经可以访问服务器.

注意:我不是要为服务器开发安全模型,也不是为了防止恶意攻击.这是一个现有服务器,人们可以通过它们所属的各种Windows组拥有一系列访问权限.我只是想知道是否有快速安全措施来防止人们错误地在错误的服务器上运行命令.

Mar*_*ell 6

(请注意,这是每个数据库;我不知道服务器范围内的任何内容,因为数据库是主要的独立单元)

大概你的用户不是架构(或dbo)的所有者?在这种情况下,他们已经不应该访问任何东西,除非你授予它.所以不要GRANT他们不需要访问,REVOKE您授权任何不当访问和DENY东西,你绝对不希望他们永远是能够做到的.

另请参见MSDN.


K. *_*ley 1

如果您使用的是 SQL Server 2005 或 2008,那么最好的答案就是已经给出的答案,那就是 DDL 触发器。正确编写的 DDL 触发器甚至可以阻止具有系统管理员权限的人执行任何类型的 DDL 操作。系统管理员可以禁用触发器来执行工作,或者可以编写触发器以允许某些人执行工作,因此您仍然可以选择根据需要进行修改。

如果您使用的是 SQL Server 2000(或更低版本),您唯一的办法就是检查每个登录名/用户的安全权限。最终,即使您使用的是 SQL Server 2005 或 2008,这也是需要完成的事情,但在以前的版本中没有快捷方式。