2014-04-21 37 views
1

我想審覈我們的SQL服務器的安全性。我試圖在數據庫上運行跟蹤以獲取登錄和訪問數據庫的用戶。但是,如果查詢是從其他數據庫運行的,則不會生成任何登錄事件。SQL Server:跟蹤數據庫活動或登錄完全合格的表查詢

例子:我試圖跟蹤登錄爲[Database2]

Use [Database1]; 
Go 

SELECT * FROM [Database2].[dbo].[Table] 

但沒有Database2下登錄的跟蹤事件。

我們的環境是SQL Server 2008 R2標準版。任何建議,將不勝感激。

回答

0

這是因爲數據庫用戶不能登錄到SQL Server。 SQL Server具有稱爲「登錄名」的安全實體,用於登錄到SQL Server實例。這些登錄名是來自Active Directory的Windows登錄名或SQL Server登錄名,您可以定義並指定用戶名和密碼。數據庫「用戶」是在數據庫級別定義的。用戶不會登錄到任何地方,他們甚至沒有密碼。這個想法是,當連接到特定數據庫時,SQL Server「登錄」映射到特定的數據庫「用戶」。 對不同數據庫的查詢不會生成登錄,因爲登錄是服務器範圍內的事件,而不是數據庫範圍內的事件。

例如見here

+0

我明白了。那麼在完全限定的表名稱期間,沒有辦法找出誰正在訪問哪個數據庫?目前,權限並不像應該那樣嚴格,我們希望將數據庫訪問鎖定爲更加專注的安全組。我認爲最簡單的方法是審計一週的數據庫訪問,然後找到這些用戶所屬的最常見的安全組。 – Travis

+0

看起來像是可能的,但並不容易。 [這是我發現](http://stackoverflow.com/questions/296906/log-table-access-using-sql-server-profiler/326980#326980) – Slava

相關問題