2009-01-30 97 views
9

我剛剛在雷德蒙德接受採訪,他們問我一些圍繞asp.net的基於安全性的問題。他們提出的問題之一是配置安全的Intranet應用程序以使用受約束的委派來訪問SQL Server。在這種情況下,AD用戶帳戶被委派訪問SQL Server。當然,整個目的是a)不在Web服務器(web.config)的任何位置存儲任何用戶名/密碼,並且b)提供可以在Active Directory中管理的抽象安全模型。匿名訪問(IIS)和SQL服務器

這讓我想起了這些年來我是如何爲匿名訪問配置我的網站的。通常,我將使用默認匿名帳戶運行我的IIS網站,並將連接字符串存儲在web.config中(加密,有時以明文形式)。當然,這需要您的SQL Server以混合模式運行。所以我的問題是,如果我們根本沒有在web.config中存儲連接字符串,並且只爲SQL Server中的db_datareader訪問創建了一個唯一的匿名域帳戶,該怎麼辦?有沒有任何理由這麼做是不好的主意?

我試圖想到所有的情況下,這將是一個壞主意,唯一我能想到的是一個「黑客」妥協的Web服務器上的代碼,然後以某種方式訪問​​您的SQL Server ...但這可能發生在任何一種情況下。

有沒有人知道這裏的最佳做法?

回答

1

我在哪裏工作,我們有一個windows服務在特定的域帳戶下運行。該帳戶在SQL Server中設置爲登錄名,並且在需要訪問的數據庫中具有匹配的用戶。我們從來沒有遇到任何問題。

我認爲最重要的是正確配置您的數據庫用戶(或角色),使其只能訪問它所需的內容。

我曾考慮使用AD來管理SQL訪問,這與您在第一段中描述的方式類似。 (AD組 - > SQL Server登錄 - >數據庫用戶 - >數據庫對象)到目前爲止,唯一的缺點是,如果用戶直接連接到數據庫,它們將繞過您的應用程序中的任何邏輯。一個好處是,你知道域用戶訪問你的數據庫。

+0

在第一段中我提到了約束授權。這將需要一個域帳戶,並假冒一個用戶的訪問權限「僅限於」SQL Server,而不是農場中的其他任何內容。在這種情況下,用戶將無法直接訪問SQL,只能通過應用程序訪問。 – 2009-01-30 18:33:18

2

也許你可以使用ODBC爲SQL Server連接創建一個DSN。那麼你的web.config只需要知道DSN。這可能需要您使用System.Data.OleDb。我從來沒有見過在ASP.NET中使用DSN,但它曾經是Classic ASP的標準。我從來沒有聽說過Active Directory用於管理ODBC。