我们已经为具有特殊授权的应用程序创建了专用登录(仅选择,插入,更新,删除)。
现在我们想拒绝显示有限用户的其他数据库列表。
这些是我们的运作:
CREATE LOGIN test_user WITH PASSWORD = 'test_pwd', DEFAULT_DATABASE = TEST_DB;
GO
USE TEST_DB
CREATE USER test_user FROM LOGIN test_user;
GO
EXEC sp_addrolemember 'db_datareader', 'test_user';
EXEC sp_addrolemember 'db_datawriter', 'test_user';
当我们尝试:
DENY VIEW ANY DATABASE TO test_user;
结果是:消息4613,级别16,状态1,行1.授予者没有GRANT权限。
我们如何拒绝用户显示其他数据库?
提前致谢。
答案 0 :(得分:0)
我询问了AWS开发人员支持计划,回复是:
回顾一下您的情况,我了解您希望限制某些用户查看RDS SQL实例中的数据库列表。您提到的T-SQL命令实现相同是正确的,并且可以在RDS之外完美地工作。由于Amazon RDS是托管服务,因此它不提供对数据库实例的shell访问,并且它限制对某些需要高级权限的系统过程和表的访问。
默认情况下,主用户仅被授予以下系统权限[1]
ALTER ANY CONNECTION, ALTER ANY LINKED SERVER, ALTER ANY LOGIN, ALTER SERVER STATE, ALTER TRACE, CONNECT SQL, CREATE ANY DATABASE, VIEW ANY DATABASE, VIEW ANY DEFINITION, VIEW SERVER STATE, ALTER ANY SERVER ROLE, ALTER ANY USER
此外,Amazon RDS [2]
中当前不提供以下服务器级角色bulkadmin
dbcreator
diskadmin
securityadmin
serveradmin
sysadmin
由于主用户只有查看任何数据库的权限,并且没有授予GRANT本身的权限,因此dbcreator'角色,它不能为任何用户查看任何数据库。这就是您收到此错误的原因:'授予者没有GRANT权限'。
参考文献: