2012-04-04 90 views
1

我想將我的應用程序設置爲使用服務帳戶連接到SQL服務器,而不是通過域用戶憑據。通過傳遞,有必要授予特定用戶對數據庫的讀/寫訪問權限,我認爲這是一個安全漏洞。SQL Server:確定使用服務帳戶時的域用戶

我的問題是,如果我使用服務帳戶憑據建立與SQL服務器的連接,是否仍可以識別發起請求的實際用戶? 例如,域名用戶John Smith訪問網站並執行一些操作。使用某個服務帳戶的安全憑證建立到數據庫的連接,但johh smith的名稱仍然傳遞給SQL服務器。 SQL會以某種方式使用這個人的名字 - 例如將其存儲在審計表中等。

可以這樣做嗎?考慮到我需要以某種方式將原始用戶的名稱導入到SQL Server中,這是否是最佳實踐?

+1

有什麼不對使用Windows身份驗證與安全組?也就是說,授予組訪問權限,而不授予個人用戶。 – 2012-04-04 12:01:31

+0

因爲這允許他們直接對數據庫執行查詢,繞過應用程序規則。您可能想要阻止的原因與保護應用程序免受SQL注入的原因相同。 – Trent 2012-04-06 14:23:05

回答

1

如果用戶使用SQL Server登錄到SQL Server登錄,則無法通過SQL登錄知道他是誰(在域級別上)。

however johh smith's name is still passed through to SQL server 

是的,你可以做什麼用User.Identity.Name以某種方式捕捉AD用戶名,然後將其發送到SQL Server上手動創建自己的審計表