AWS RDS SQLServer 拒绝查看任何数据库

问题描述 投票:0回答:2

我们为具有特殊授权的应用程序创建了专用登录名(仅限选择、插入、更新、删除)。
现在我们想拒绝向受限用户显示其他数据库的列表。

这些是我们的运作:

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;

结果是:Msg 4613,Level 16,State 1,Line 1。授予者没有 GRANT 权限。

我们如何拒绝用户显示其他数据库?

提前致谢。

sql-server amazon-web-services
2个回答
2
投票

我向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

由于主用户只有查看任何数据库的权限,并且没有授予自己“dbcreator”角色的权限,因此它无法为任何用户授予或拒绝查看任何数据库。这就是您收到此错误的原因:“授予者没有授予权限”。

参考文献:

  1. http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.MasterAccounts.html
  2. https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_SQLServer.html#SQLServer.Concepts.General.FeatureSupport.UnsupportedRoles

0
投票

我的老板只想看到她的数据库而不是其他数据库,我如何在 RDS MS SQL 中实现这一点,因为我只有管理员权限?

© www.soinside.com 2019 - 2024. All rights reserved.