SQL Server:安全設計從頭起
來源:互聯網
上載者:User
關鍵字
安全
SQL Server
最基本的要點如果你不能理解SQL Server security基本的概念,就馬上先停止開發並先閱讀這些開發準則,你不可能在不知道這些概念的基礎上就能夠正確地使一個資料庫安全化。 程式的安全正如一輛卡車一樣。 你具有一個發動機,一把鑰匙,當鑰匙打開發動機即發動機啟動之後,就有可能發生的全部過程。 如果你忽略了某些細節,駕駛過程中就會發生很多麻煩。 在問題產生之後,你可以將卡車交給一個修理工,然而對於程式的安全問題,你自己將是資料庫的修理工。 開始,你必須選擇以下兩種安全模式:Windows 認證模式:使用者通過一個現成的Windows使用者帳號來連接伺服器。 當一個使用者試圖與一個伺服器連接的時候,SQL Server將會認證使用者的Windows帳號的名稱和密碼。 使用者不能同時進入網路和SQL Server,只能進入其中的一個。 這一方法也被稱為一個被依賴的連接。 混合模式:這一模式將Windows認證模式和SQL Server認證聯接在一起。 使用者可以通過一個Windows使用者帳號進行連接,這正如Windows認證一樣。 但是,你也可以在SQL Server中直接建立使用者帳號。 每一個SQL Server帳號都存儲了一個使用者名和密碼。 我們建議在可能的情況下都使用Windows認證模式。 然而,混合模式很可以使用,特別是在SQL Server 7.0(或更早版本)都可以使用。.對於早期的SQL Server版本,SQL Server認證存在一些缺點。 Windows認證已經集成了作業系統的安全系統,這就提供了比SQL Server認證更多的安全特性,很容易的使用,效率更加高,安全性更加好。 在設計開始的時候,你應該認真考慮選擇哪一種模式最為合適。 密碼無論採用哪一些模式,你應該記住在SQL Server中為系統管理者(sa)設置一個密碼。 當安裝SQL Server時,安裝程式會自動建立一個帶有SQL Server註冊名稱(sa)和一個空白密碼的管理使用者。 如果你保持這些使用者設置原樣而使用混合安全模式,任何具備一點SQL Server基礎知識的使用者都可以很容易地進入到你的資料庫中並做任何他想要做的事情。 如果你使用的是Windows認證模式,在理論上你無需為sa使用者設置一個密碼,因為SQL Server註冊不會接受這些的設置。 但是設置是一個很良好的操作,尤其是當你被迫轉移到將來使用的混合模式的時候。 如果安全模式已經啟動,註冊將成為關鍵。 你必須使用正確的方法來啟動程式,註冊也是同樣的,如果你不能正確地輸入使用者名和密碼,程式將不能連接到網路,同時也不能連接到SQL Server。 作為一個管理者,一旦你已經啟動了程式,你就做好安全管理的準備。 可以通過定義以下的特性而實現:使用者(帳號):一個SQL Serve安全帳號代表著一個唯一的使用者。 一個使用者也只有一個Windows帳號或者一個SQL Server註冊,這與資料庫中的使用者帳號相統一。 組(帳號):每一個使用者都屬於一個或多個組,這由認證模式決定。 每一個組都具有特定許可。 作為一個組的成員,你將獲得所有組的許可。 物件擁有權:擁有權屬於建立物件的使用者。 擁有者可以將存取權限分配給使用者。 如果你是一個視的擁有者,你還可以決定哪些使用者可以通過視來查看資料。 許可:一個許可代表著具有執行某些操作的權利,比如打開一個視或者更改一個存儲程式。 SQL Server承認許可的三種狀態:GRANT給你一個使用者訪問;REVOKE刪除訪問;DENY防止使用者訪問物件。 任務:這是一個SQL Server安全帳號,可以將帳號的集合作為一個簡單的單元來處理。 任務定義在特定資料庫中使用者可以做哪些和哪些不可以做。 從安全的角度而考慮設計過程應該用效地定義哪些地方需要進行安全設置和如何設置。 在這一過程之前你應該從兩個方面考慮:敏感性資料;可以查看敏感性資料的人。 敏感性資料包括所有可能的資料,包括整個資料庫中的所有資料,雖然這樣的安全級別很少存在。 你的工作就是定義為敏感性資料並進行保護。 你選擇的認證模式和建立的註冊將通過限制哪些使用者可以進入到資料庫而實施第一步安全步驟。 第二步就要列舉可以訪問資料庫的所有使用者,然後決定所有資料是否對所有的使用者都適用。 通常,你需要對一些資料進行保護,比如工資或者其他私人資料。 這就意味著只有特定的使用者可以訪問和查看資料。 你還可以設置哪些使用者更改資料。 始終記住的一條規則是「最小權利」概念。 如果有人在他的工作中不需要訪問資料,那即不要給他訪問的許可權。 應該避免所有的使用者都具有sa使用者的存取權限。 具體的建議當進行安全設置的時候,經驗也是一個很好的老師,但通常也會有適用于通用資料庫的設計準則:從開始就獲得資料庫和物件的擁有權。 當建立一個新的資料庫時,你將會成為資料庫的擁有者,並能夠設置資料庫中所有發生一切。 你可以以管理者的身份註冊資料庫。 然而,物件的擁有權屬於建立對象的使用者。 雖然這可能造成擁有權的轉移,但可以確定這些的註冊能夠被用於建立所有的物件。 理解擁有權鏈。 這一安全特性防止使用者建立自己的視而偷看一些敏感性資料。 例如,假設你建立一個從兩個表中集中的資料的視,如果你是這兩個表的擁有者,當你允許其他使用者使用視的許可時,SQL Server不會檢查表的有關許可。 使用視和存儲程式以分配給使用者訪問資料的權利,而不是讓使用者編寫一些直接存取表格的特別查詢語句。 通過這種方式,你無需在表格中將訪問權利分配給使用者。 視和存儲程式也可以限制查看的資料。 例如,如果你的雇員表格包含一些秘密的工資資訊,你可以建立一個省略了工資欄的視。 如果使用者從特定程式中進入你的程式,你可以建立程式任務。 一個程式任務就是分配到特定程式的使用者,並給予使用者的有關許可。 使用程式任務,使用者不能直接地認證資料庫,相反,他們先認證他們自己的程式,這就決定哪些程式任務與伺服器相連接。 時刻注意程式補丁。 不可否認的,程式補丁是一些訣竅的集合。 程式的發佈,更新等都會引入新的問題,使用程式補丁是防止外界干擾和保護資料的最好和最容易的方法。 可以訪問微軟主頁上的SQL Service Pack下載頁,查看當前最新的程式補丁。 結論程式安全機制是每一個開發人員都必須面臨的問題。 不要等到資料庫開發過程中和使用中才考慮到安全問題──安全是設計過程中的重要組成部分。 除此之外,不要隨意地應用安全設置而希望達到最佳的效果,應該學會選擇安全模式並正確地應用。 責任編輯 趙毅 zhaoyi#51cto.com TEL:(010)68476636-8001 給力(0票)動心(0票)廢話(0票)專業(0票)標題党(0票)路過(0票) 原文:SQL Server:安全設計從頭起 返回網路安全首頁