SQL Server 安全設計從頭起

2021-06-20 08:08:21 字數 2738 閱讀 8126

最基本的要點

如果你不能理解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不會檢查表的有關許可。

使用視和儲存程式以分配給使用者訪問資料的權利,而不是讓使用者編寫一些直接訪問**的特別查詢語句。通過這種方式,你無需在**中將訪問權利分配給使用者。視和儲存程式也可以限制檢視的資料。例如,如果你的雇員**包含一些秘密的工資資訊,你可以建立乙個省略了工資欄的視。

如果使用者從特定程式中進入你的程式,你可以建立程式任務。乙個程式任務就是分配到特定程式的使用者,並給予使用者的有關許可。使用程式任務,使用者不能直接地認證資料庫,相反,他們先認證他們自己的程式,這就決定哪些程式任務與伺服器相連線。

結論程式安全機制是每乙個開發人員都必須面臨的問題。不要等到資料庫開發過程中和使用中才考慮到安全問題──安全是設計過程中的重要組成部分。除此之外,不要隨意地應用安全設定而希望達到最佳的效果,應該學會選擇安全模式並正確地應用。

原文:

SqlServer安全機制

sql server的三層安全模型 a 身份驗證 b 資料庫使用者 c 資料庫中資料的許可權設定 登入驗證 a 分類 sql server身份驗證 windows 身份驗證 b 建立登陸sql server的使用者 通過企業管理器建立 通過查詢分析器來建立 exec sp addlogin 使用者名...

SQL SERVER安全管理

了解sql server 2008的安全管理機制 掌握sql server 2008的兩種身份驗證模式 掌握建立和管理使用者登入帳號的方法 掌握建立和管理資料庫使用者帳號的方法 理解sql server許可權和角色的概念及其管理方法。在sql server 管理平台中通過單擊sql server 伺...

SQL Server安全設定

sql server 現在是很多 都使用的資料庫,而這個資料庫卻有一些安全隱患 下面說下如何配置sql server的安全 1.封閉對外埠 封閉對外埠是很重要的,現在很多黑客都用掃瞄sql埠弱口令來進入sql並提權伺服器的,這個可以用windows自帶的防火牆來實現遮蔽,具體方法可以看看 windo...