Sql-Server
MS SQL Server 2016 - 數據庫安全 - 登錄權限
我有一個帶有 Always On 結構的 SQL Server 2016 數據庫。我有一個名為 x 的登錄名。我的 x 登錄的屬性是:
- 預設數據庫:abc
- 伺服器角色:公共(勾選)
- 使用者映射:Map(勾選)、abc 數據庫(勾選)、預設模式(dbo)、abc 數據庫權限:db_owner 和 public
- 訪客帳戶啟用:qaz
- qaz 的數據庫角色成員資格:public
- Securables:權限:連接 SQL,查看任何數據庫
- 狀態:已勾選授予和啟用。
所以我的問題是:
- 當我連接到該使用者並嘗試擴展數據庫時。我自己的數據庫沒有問題。但是當我嘗試擴展其他數據庫時,有時它會給出“數據庫 <db_name> 不可訪問(真正的),有時我可以擴展一些數據庫但我看不到任何表或對象,我無法操作這個數據庫(假一)。
- 通常,它應該是相同的錯誤(“數據庫 <db_name> 不可訪問)所有其他數據庫,因為除了我自己的數據庫之外我沒有權限。
- 我如何檢查這種情況以及如何解決?
最好的祝福,
每個數據庫中都有一個使用者“Guest”。該使用者為每個人提供了一些權限。
我的猜測是,對於您可以“擴展”數據庫的數據庫,您在這些數據庫中的“訪客”使用者可能已啟用,並且可能“連接”到數據庫是安全的(我希望不再連接)
要禁用該使用者,請執行此 TSQL:
Use [yourDB] go REVOKE CONNECT FROM guest; GO
完成此操作後,您的登錄 x 應該會收到您期望的錯誤。