我正在接管一个项目,该项目涉及删除和限制我们服务器场中所有数据库用户的权限。(娱乐时间)
当前受限的权限之一是 db_owner 权限。
正在逐案审查此权限,但常见的更改是将 db_owner 权限替换为以下内容:
- db_datareader
- db_datawriter
- db_ddladmin
- db_executor
我想定义两者之间的确切区别(以通知客户)。
但是,据我所知,两者之间的区别应该是:
- db_accessadmin 权限
- db_backupoperator 权限
- db_securityadmin 权限
所以实际上他们会失去:
[ALTER ANY USER]
[CREATE SCHEMA]
[BACKUP DATABASE]
, [BACKUP LOG]
, [CHECKPOINT]
[ALTER ANY APPLICATION ROLE]
,[ALTER ANY ROLE]
[DROP DATABASE]
一旦 db_owner 被上面的四个角色替换,用户是否还会丢失任何其他内容?
这实际上在安全方面起到了很大的作用吗?
db_ddladmin 与 db_owner
从我测试和阅读的内容中可以看出,在大多数情况下,您的列表看起来是准确的,除了
db_ddladmin
DOES 允许您这样做CREATE SCHEMA
。我确实确认您列出的其他安全权限确实被拒绝了。仅用 DDLADMIN 拒绝:
[ALTER ANY USER]
[BACKUP DATABASE]
,[BACKUP LOG]
,[CHECKPOINT]
[ALTER ANY APPLICATION ROLE]
,[ALTER ANY ROLE]
[DROP DATABASE]
注意到. . .
db_datareader
将允许SELECT
访问所有表db_datarwriter
将允许INSERT
、UPDATE
和DELETE
访问所有表db_executor
将允许EXECUTE
访问所有可执行对象此外,拥有 db_ddladmin 角色权限可能意味着。. .
他们以该角色拥有的对象将不归 DBO 所有,因此如果在此级别上遇到问题,您可能必须处理所有权更改问题。我不是 100% 确定这会是一个问题,但值得一提以防万一。
来源:所有权链
使用此角色(可能因 SQL Server 的版本而异),他们可能能够将当前数据库中定义的 SQL 安全原则添加到他们仍然拥有的对象中,而不是所有对象(他们不拥有的对象)或添加新服务器-level 将主体定义为 DB 级别。
此外,没有 DBO 角色权限可能意味着。. .
没有 DBO 角色可能会阻止某些 SSMS 设计器 GUI 界面(SQL Server 版本不同)填充或打开而不会出现错误(例如,通过 GUI 修改表或列时),即使通过 T-SQL 工作并且权限已经到位. 在某些版本的 SQL Server 中,这可以通过允许
GRANT VIEW DEFINITION
这是一个问题的地方来解决,它也可以只是在某些版本的 SQL Server 上的警告。资源
您没有作为数据库所有者或作为 db_owner 角色成员的用户登录。您将无法保存对不属于您的表的更改。
db_ddladmin 角色不允许在 SSMS 中使用“设计”功能
其他注意事项
由于您声明正在逐案审查
您是否考虑过为每个人需要的更多“所有对象”数据库级别访问权限创建额外的自定义角色,而不是授予他们
db_ddladmin
角色,因为这可能会给他们提供比他们实际需要的数据库级别对象更多的权限。我通常只提供他们真正需要的东西,只为他们完成他们的工作,如果数据库级别对象访问数据库中的所有对象存在“通常”或“标准”需求,我会创建一个自定义数据库角色,类似于
db_executor
但请参阅下面的示例。这样,如果您没有在您的数据库中明确对象级别以确保他们的安全性,您就可以向人们授予他们真正需要的特定数据库中的所有数据库对象。我还想共享一个 db_DDLAdmin_Restriction 角色,您可能要考虑考虑创建其他方式以明确
DENY
限制db_ddladmin
授予访问权限的内容,因此您至少可以在授予他们此角色的数据库上创建此角色并DENY
为实际对象类型设置显式等,您不希望他们访问。例如,如果您知道他们肯定会创建存储过程和函数,则可以排除
DENY CREATE FUNCTION
,DENY CREATE PROCEDURE
,DENY ALTER ANY SCHEMA
.使用 SQL 脚本列出所有权限,我为每个案例创建了用户。
然后我比较了结果,并得出以下列表,主要来自msdn的文档(任何未特别引用的引用均来自 msdn 链接)。
以下是我用来告知将失去 dbo 权限的人的一些文档,他们究竟失去了什么。
改变
更改任何应用程序角色
更改任何数据库审核
更改任何角色
更改任何用户
AUTHENTICATE
在 msdn 中找到。
备份数据库
备份日志
连接复制
控制
创建角色
展示计划
订阅查询通知
有关查询通知的文档。
取得所有权
查看数据库状态
查看定义
有关视图定义权限的文档。