在我們關於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伺服器文獻線上囊括了每個系統預存程序的所有句法細節和使用樣本。