2012-05-25 113 views
0

我一直在努力爭取在SQL Server中解決與安全相關的問題。 我們正在開發一個面向SQL Server 2008的.NET應用程序,我們希望使用FileStream。SQL Server集成安全性

現在我發現如果您使用集成安全性,SQL Server只允許FileStream通過Win32 API。問題是我們已經完成了大約80%的應用程序,但它完全基於SQL身份驗證。因此,我們正在對我們的應用程序進行INSERT的直接形式,並且不對每個CRUD操作使用存儲過程。

這是相對安全的,因爲我可以以加密形式存儲SQL用戶名和密碼。我知道密碼是用Clear Text傳送的,但我願意接受。

我們希望最終用戶能夠通過諸如Crystal Reports之類的工具連接到數據庫,並且爲此我們有一個額外的SQL登錄名,只有授予了SELECT權限。

現在,如果我們更改爲集成安全性,我們將不得不爲個別用戶(通過AD組等)提供執行應用程序所能做的事情的權利。否則,應用程序將無法完成它的工作。但是,當他直接連接到數據庫時,最終用戶也會擁有這些權利。

我看到有人說你應該爲每個CRUD操作使用存儲過程,並將EXEC權限授予AD組,但我該怎麼做?當他直接連接或通過應用程序連接時,我看不到用戶會有不同的授權......有誰能夠在這方面給我啓發。

額外的獎勵積分問題:據我瞭解,集成安全性不適用於工作組。人們如何讓FileStream在工作組中工作呢?或者這被認爲是不可能的?

回答

3
  1. 集成安全性將在工作組中使用遺留機制,在兩臺機器上有相匹配的用戶名和密碼。另外,如果服務器具有匹配的用戶帳戶,則域用戶可以使用傳統機制登錄到非域服務器。

  2. 集成安全性甚至可以處理不匹配的用戶名和密碼。這可能會幫助你在你的情況。

試試這個:

NET USE \\DBSERVER /USER:DOMAIN\USERNAME 

你會被提示輸入您的密碼。這建立了與數據庫服務器的NetBIOS會話。完成後,您應該能夠看到數據庫服務器上的共享文件夾和共享打印機。

一旦在客戶端計算機和數據庫服務器之間建立了netbios會話,您就可以在不提示輸入密碼的情況下使用集成安全性。

可能必須指定「命名管道」作爲usem的網絡協議,如果它不適用於TCP(但我認爲它會)。命名管道繼承了你現有的NetBIOS會話,所以你可以列出你可能需要的共享資源。

您還可以使用windows API函數NetUseAdd與包含密碼的USE_INFO_2(級別2)信息建立登錄會話。

我想簡短的回答是,你可以有一個特殊的Windows登錄爲您的應用程序,並讓用戶登錄使用。但請注意,它們不能使用自己的用戶名和密碼連接到同一臺服務器。