由於多種原因,進行安全設置的人們常常不理解數據的真正價值,所以,他們也無法對數據進行合適的保護。將你的數據只限於需要的人訪問,並保證訪問的人的合法性,是一個數據庫管理人員的重要工作。然而,確保數據可以訪問不是意味著數據向所有人公開,相反的,你必須很仔細地保護數據,並只對需要使用數據的人進行開放。
設置安全性過程
通用的軟件維護和數據庫更新都會對系統安全起著重要作用,通常包括以下步驟:
分配一個可靠的密碼給缺省的系統管理(SA)帳號。然後,建立自己唯一命名的帳號,並將這一帳號放入sysadmin。一定要確認新帳號也有一個可靠的密碼。
將獨立的密碼分配給每一個用戶。更好的,使用Windows集成安全性,並讓Windows遵循穩定密碼規則。
決定哪些用戶需要查看數據,然後分配合適的許可。請不要隨便賦予用戶各種權限。例如不要把每一個人的工資隨便讓其他人訪問。
決定哪些用戶需要更新數據,然後分配合適的許可。帳號管理人員應該可以查看所有用戶的信息,但程序員一定要限制更新這些信息的權限。特別的,只有負責特定帳號的管理者是唯一可以更改用戶數據的人。
通過這些系列信息你可以學會很多知識,但你應該從開始就具備這些觀點。否則,數據庫的任何用戶就可以偷竊或刪除你的重要數據。
什麼東西最容易發生錯誤?
對於記錄,應該知道SQL Server並非絕對安全的。你應該提出一些想法並努力有效地保護你的服務器。在安裝服務器之前有兩點你必須完成的:
設置管理人員的帳號和密碼。
保護系統防止受到Slammer worm的感染。
使一些特殊的東西安全化
SQL Server2000通過SA帳號而具有缺省的安全設置。在安裝過程中,SQL Server自動建立一個管理的用戶,並分配一個空白密碼給SA用戶名稱。一些管理人員喜歡將SA密碼設置為空白或者一個通用的密碼以便每一個人都能知道。如果你犯這樣的錯誤,進入你的數據庫的任何人都可以為所欲為。具備管理者允許的任何人也可以做任何想做的事——不僅僅是數據庫,而是整個計算機。所以,必須限制用戶根據他們的需要進行訪問數據庫,不要給他們權利太少,也不能太多。
暫且把每一天管理的SA帳號放在一邊,讓我們看看帶有安全密碼的帳號。建立另一帳號以便管理(或者是一個SQL Server帳號或者是一個Windows帳號,取決於你的認證模式)。你所要避免的是太容易地猜到帳號名稱或者帳號密碼,因為任何人得到這些帳號,這就完蛋了。
一個引起警戒的壞事—Slammer worm(Slammer蠕蟲)
2003年1月份出現了一些非常致命的惡意代碼,即為Slammer worm。這一代碼專門針對於SQL Server的安裝進行攻擊。通過利用SQL Servera代碼中的缺欠,蠕蟲能夠在SQL Server安裝的時候復制本身程序而損壞整個機器和其他機器。蠕蟲生成時以15秒可以充滿網絡。微軟已經花了很大力量來阻止這一蠕蟲,但是蠕蟲還是無法完全消除。有些人開始抱怨SQL Server的測試版本的原因,因為是它在安裝時導致了系統的損壞。
很多月份已經過去了,有必要還要對蠕蟲那麼警惕嗎?回答是肯定的。因為每一天還有很多Slammer的復制而感染機器。如果一個沒有任何補丁的SQL Server連接到網絡,你將會變成這一行為的犧牲品。從道德上而言,在將SQL Server與網絡線連接之前,必須保護你的服務器,並運行所有的新服務補丁。
服務補丁的重要性
服務補丁在下載時是免費的。Slammer沒有損壞你的數據,但它可以導致服務器的很多破壞,其危害是明顯的。保護數據最簡單的方法是下載Service Pack 3 或者Service Pack 3a。
蠕蟲如何工作這一方面的知識並不是重要,重要的是蠕蟲在微軟的補丁發布以後還可以生存6個月。被蠕蟲感染的商業系統通常有兩個原因:一是管理人員沒有很有效的保護好系統,二是蠕蟲本身太厲害。
你應該注意到,SQL Server SP3也是無法保證它能夠保持全部的數據。你應該實時監控Microsoft's Security Bulletin(微軟安全公告)以保證處於被服務補丁通知的狀態。
選擇一個認證模式
在 SQL Server安裝過程中有一個必須決定的是選擇安全認證模式。這裡有兩種模式:
Windows認證模式(也叫集成模式)
混合模式
Windows認證模式用戶通過使用一個現成的Windows用戶帳號連接到SQL服務器。當用戶使用一個合法用戶名和密碼連接到服務器時,SQL Server就確認用戶的注冊信息。結果是用戶只是在Windows和SQL Server中注冊,帳號信息被Windows嚴格的存儲。
混合模式是Windows認證和SQL Server認證的結合。在混合模式中,一些用戶可以繼續使用Windows帳號來訪問SQL Server,但其他只能使用與Windows帳號完全不關聯的SQL Server用戶帳號。每一個SQL Server帳號都存放其用戶名和密碼。如果這些注冊值相同,用戶必須輸入兩次——一次是Windows輸入,另一次是SQL Server輸入。