2017-06-12 26 views
0

我們爲特殊應用程序(僅限選擇,插入,更新,刪除)創建了專用登錄。
現在我們想拒絕顯示有限用戶的其他數據庫的列表。AWS RDS SQLServer DENY查看任何數據庫

這些都是我們的操作:

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授權者不具備授予權限。

我們該如何拒絕用戶顯示其他數據庫?

在此先感謝。

+0

你是誰運行命令?聽起來像他們沒有權限授予或拒絕特權 – dbajtr

+0

我正在使用sqlserver的sa用戶。 請注意,這是一個AWS RDS實例,它可能具有特定的權限或限制 –

回答

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 

而且,下面的服務器級角色是不是當前在亞馬遜RDS [2]

bulkadmin 
dbcreator 
diskadmin 
securityadmin 
serveradmin 
sysadmin 
可用

由於主用戶只具有查看任何數據庫的權限,並且沒有權限授予其自身'dbcreator'角色,因此無法爲任何用戶授予或拒絕查看任何數據庫。這就是爲什麼你得到這個錯誤:'授予者沒有GRANT許可'。

參考文獻:

  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