Sql-Server

MS SQL Server 2016 - 數據庫安全 - 登錄權限

  • August 6, 2020

我有一個帶有 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 應該會收到您期望的錯誤。

引用自:https://dba.stackexchange.com/questions/273318