數(shù)據(jù)庫管理:SQL Server 2008安全性探討
Ruby 發(fā)表于:12年09月06日 11:18 [轉載] DOIT.com.cn
數(shù)字簽名
數(shù)字簽名提供身份驗證和不可否認性。同城,公鑰私鑰對用于對消息進行數(shù)字簽名。下面是數(shù)字簽名如何和電子郵件消息一起工作的例子。
Bob給Alice發(fā)送了一條信息,而他的郵件客戶端被配置為自動為所有發(fā)出的消息添加他的數(shù)字簽名。在這種情況下,當消息準備好發(fā)送時,系統(tǒng)會生成一個密鑰,然后傳遞給一個哈希算法,將數(shù)據(jù)單向轉換為一個哈希值。哈希值附加在消息上,而用于生成哈希值的密鑰由Bob的私鑰加密。該消息發(fā)送給了 Alice,她接受明文形式的消息,以及該消息的哈希值版本。Alice具有訪問Bob的公鑰的權限,使用該公鑰解密用來生成哈希值的密鑰。于是該密鑰被傳遞給哈希算法,生成一個新的哈希。如果新的哈希與原來的隨消息一起發(fā)送的哈希匹配,Alice可以確信該消息在發(fā)送過程中沒有被更改。如果哈希值不匹配,那么說明該消息在發(fā)送之后已經(jīng)被更改,不應被信任。
下面的代碼創(chuàng)建了一個名為Sales.DisplaySomeVendors的簡單存儲過程。然后可以使用前面的SalesCert證書給該存儲過程添加一個簽名。需要解密該西藥來對該存儲過程進行數(shù)字簽名:
- CREATE PROCEDURE Sales.DisplaySomeVendors AS SELECT TOP (20) * FROM Purchasing.Vendor; GO
- USE AdventureWorks2008; ADD SIGNATURE TO Sales.DisplaySomeVendors BY CERTIFICATE SalesCert WITH PASSWORD='P@ssw0rd'; GO
最佳實踐
與其他應用程序和服務器產(chǎn)品一樣,應遵循一些指導原則來幫助提升安全級別。記住,你永遠都不可能為每個可能的威脅做好準備,但是可以讓惡意用戶更難訪問數(shù)據(jù)
使用強密碼:應當利用密碼策略,要求用戶創(chuàng)建定期更改的復雜密碼
不要以sa帳戶登錄:盡量少使用sa帳戶。必須要求用戶使用他們自己的登錄名,從而可以跟蹤那個用戶在執(zhí)行什么操作。
對SQL服務使用最小特權帳戶:應用最小特權原則,并使用用有正好滿足服務需要的權限的帳戶
定期審核主體:勤勉的管理員會知道自己創(chuàng)建哪些帳戶和誰要為這些帳戶負責,并且知道需要采取哪些步驟禁用或刪除多余的帳戶
禁用或刪除所有不使用的網(wǎng)絡協(xié)議:在SQL Server配置管理器中,可以啟用或禁用SQL Server使用的協(xié)議。
使用在線加密保護傳輸中的數(shù)據(jù):僅僅保密服務器上的數(shù)據(jù)是不夠的,應使用諸如SSL和IPSec等技術在數(shù)據(jù)從客戶端向服務器、從服務器向客戶端或從服務器向服務器移動時保護他們
不要把SQL Server放在物理安全性低的地方:如果惡意用戶能夠實地訪問您的計算機,那么這臺計算機就相當于別人的了
最小化服務器的可見度:Slammer蠕蟲病毒可以大量快速傳播是因為很少組織意識到在自己的防火墻中開放SQL連接的害處。設計良好的數(shù)據(jù)庫應用程序會使用一個健壯而安全的前端,把數(shù)據(jù)庫引擎的可見度降到最低。
刪除或禁用不必要的服務和應用程序:應該關掉不使用的服務和功能,從而最小化SQL Server的受攻擊面
盡可能使用Windows身份驗證:Windows和Kerberos身份驗證本身都比SQL身份驗證更加安全,但這是您和您的應用程序開發(fā)人員和安全小組都必須遵守的設計決策
不要對經(jīng)常被搜索的列進行加密:加密經(jīng)常被訪問或搜索的列導致的問題可能比它解決的問題還要多
使用TDE保護休眠中的數(shù)據(jù):加密數(shù)據(jù)庫和事務日志文件可降低他人復制數(shù)據(jù)文件并卷走敏感的商業(yè)數(shù)據(jù)的可能性
總是備份數(shù)據(jù)加密密鑰:這是顯而易見的,但要確保安全可靠地備份用于加密數(shù)據(jù)的密鑰或其他加密密鑰。同時測試備份和恢復策略
了解您在公司安全策略中的角色:大多數(shù)組織都有一個備案的安全策略,定義了可接受的網(wǎng)絡使用,以及對服務器或服務行為的期望。作為一名數(shù)據(jù)庫管理員,配置和保護服務器的職責可能會被備案為總體安全策略的一部分。對數(shù)據(jù)庫管理員以及服務器的期望必須明確表述。同時,也應清楚貴的管理員的責任。