我无法阻止登录id从数据库中删除或修改其他用户。
我用下面的代码创建了一个角色:
CREATE ROLE super_users;
GRANT Select, Alter, Update, Execute, Insert, Delete, Create View, Create Table
ON database::[sampledb] TO super_users;
REVOKE CONTROL ON database::[sampledb] TO super_users;
--Created user for login
CREATE USER user_1 for login user_1;
--giving role to particular use
EXEC sp_addrolemember 'super_users', 'user_1 '
尽管完成了所有这些,但该登录的用户可以删除或删除其他用户并登录?
有人能帮助我防止登录id做上述事情吗?或者我做错了什么?
正如我们所知,我们可以使用以下脚本来创建DB角色并创建相应的权限。
CREATE ROLE super_users;
GRANT Select, Alter, Update, Execute, Insert, Delete, Create View, Create Table
ON database::[sampledb] TO super_users;
--Created user for login
CREATE USER user_1 for login user_1;
--giving role to particular use
EXEC sp_addrolemember 'super_users', 'user_1 '
但在那之后,我们意识到user_1
有权删除[sampledb]
的其他用户。当我们运行REVOKE CONTROL ON database::[sampledb] to super_users
但不工作时,user_1
仍然有权限。官方文件对REVOKE CONTROL
的解释非常笼统。但它不适用于CREATE,ALTER,Drop other DB Users
。
因此,我们需要使用以下脚本来进一步限制"super_users"角色的权限。
DENY ALTER ANY USER,ALTER ANY ROLE,CREATE ROLE to super_users
之后,"超级用户"中的"用户_1"不能CREATE,ALTER,Drop other DB Users