在我們關於SQL服務器安全系列的這文章裡,我們的目標是向你提供安全安裝SQL服務器所需要的工具和信心,這樣的話,你有價值的數據就會受到保護,避免無意或者有意的破壞或者竊取。在本文裡,我們會深入一些基礎的概念,在保護數據庫安全的時候,你需要利用下面這些概念:登錄、用戶、角色,以及組。確定誰在請求訪問數據或者SQL服務器裡其他信息等看上去很簡單的過程,都需要用到所有這些概念。
登錄
登錄規定了哪些用戶能夠連接到安裝好的SQL服務器上——這不是某個特定的數據庫,而是而是整個服務器。登錄有兩種不同的形式:
Windows集成的登錄,它會授權特定的Windows用戶或者組使用它們的Windows信任書進行連接。
SQL服務器登錄,它會授權用戶使用由SQL服務器保存的用戶名和密碼進行連接。
你應該使用哪一種?
Windows集成登錄肯定要比SQL服務器登錄更加高效和更方便,因為用戶只需要登錄一次——在網絡這一層。單獨登錄到服務器是沒有必要的,因為SQL服務器會自動地處理(在後台)Windows登錄,從而允許到服務器的訪問。只有在服務器運行在Windows NT或者2000上的時候,對Windows登錄的支持才有效;安裝在Windows 98上的服務器必須要依賴SQL服務器登錄。如果你正在運行Windows 2000,而且最終需要支持原有的應用程序,那麼就要記住,SQL服務器登錄只有在混合模式下才可用。
設計上的考慮
在設計自己數據庫的時候,你需要考慮登錄的方法——而且要在你真正開始保證最終產品的安全之前。你應該知道服務器使用的是哪種授權方式。那些還在Window 98上使用服務器的人可能現在就要考慮升級,如果安全是一個很重要的問題的話;那樣的話,他們就可以使用Windows集成的安全(策略)。
另外一個設計問題是知道誰擁有訪問權,他們能夠訪問什麼數據,以及他們是否能夠對對象和數據進行更改。你不用真的列出其名字;你只需要利用工具有效地幫助用戶就行了。最後,你應該使用系統的存儲過程來管理安全。SQL服務器提供了兩種存儲過程,用於登錄的管理:
◆sp_addlogi——在使用SQL服務器驗證保護你服務器安全的時候要使用這個存儲過程。具體的說,這個存儲過程會創建一個新的SQL服務器登錄,它允許用戶使用SQL服務器驗證連接到SQL服務器的實例上。
◆sp_grantlogin——這個存儲過程允許Windows 2000的用戶或者組帳號使用Windows驗證連接到微軟的SQL服務器上。
只有sysadmin或者securityadmin固有服務器角色的成員能夠執行這兩個存儲過程。
什麼是系統存儲過程?
系統存儲過程是一個內置的存儲過程,它能夠幫助你管理服務器。你可以在MSDN庫裡找到一長串的系統存儲過程。SQL服務器文獻在線囊括了每個系統存儲過程的所有句法細節和使用示例。