本文列出了SQL Server 2005中大概10個最顯著的安全加強。要按照重要性來進行排序是困難的,因為每個數據庫管理員都有不同的需要。
隨著數據庫系統被用作網絡應用程序後台存儲范圍的持續擴大,對安全的關注也就越來越必要。雖然從發展的角度來看,圍繞在SQL Server 2005的周圍的還有不少的雜音,但是微軟的囊括了很多優秀的新特性的數據管理系統還是可以幫助開發人員和數據庫管理員鎖定數據庫系統,保護對敏感數據的訪問。
以下是一個高層列表,沒有特定的順序,列出了SQL Server 2005中大概10個最顯著的安全加強。要按照重要性來進行排序是困難的,因為每個數據庫管理員都有不同的需要。
模擬(Impersonation )
模擬,或者是執行環境上下文交換,指的是臨時交換一個連接的安全設置的過程,為的是獲得對資源的訪問。這對於采用了最小權限設計的系統特別重要。假設用戶只有盡可能最小的對資源的權限,並且在必要的時候使用模擬來有選擇的提高權限,這樣做可以幫助減少整體的暴露。
在SQL Server 2005中,EXECUTE AS 和 SETUSER 是用來控制背景環境交換的。要獲得更有有關這些語句的信息,查看《A First Look at SQL Server 2005 for Developers》的摘要。
表面區域配置工具(Surface Area Configuration tool)
SQL Server 2005是一個大的產品——大到可以包括了許多新的特性,因此潛在地,它也可以處於安全的目的用作向量。為了防止這類事件,要能夠容易快捷地看到每個特性的狀態——還有配置——是非常重要的。如果一個特性沒有用於數據庫支持的應用,為了防止濫用的可能性,就應該將其失效。
表面區域配置工具是SQL Server 2005提供的,允許數據庫管理員從單個地點管理多個外部資源的工具。類似CLR集成,SQL 郵件和本地XML網絡服務的特性都可以用這個工具進行配置。雖然每個特性都可以使用T-SQL 進行配置,但是表面區域配置工具提供了一種方便使用的圖形化用戶界面。
要了解有關這個工具的更多信息,請到Developer.com 上查看《管理SQL Server 2005的表面區域》這篇文章。
用戶計劃分離(User-schema separation)
在SQL Server 2005中,數據庫中的對象沒有必要再被一個用戶擁有。相反,他們可以包含在一個計劃中,一個可以被賦予權限的邏輯容器。這個分離的意思是當一個對象突然崩潰的時候可以給用戶分配多個對象的權限,而不是像SQL Server以前的版本中,數據庫管理員每次只能分配一個。此外,從數據庫中刪除用戶也不再意味著他們擁有的對象必須被刪除或者重新分配。
要了解更多有關計劃的信息,查看我的tip《SQL Server 2005中的權限》。
粒度權限集合(Granular permission sets)
在SQL Server以前的版本中,假設需要訪問服務器資源的時候,數據庫管理員幾乎沒有選擇。當把整個的權限配置歸結為一個嚴格的“固定的服務器角色”集合的時候,看起來似乎就不能完美地適合任何一個環境了。例如,不可能給開發人員權限來運行Profiler 追蹤的時候,不給同一個人訪問服務器上所有其他資源的權力。
幸運的是,這些固定的角色在SQL Server 2005中不再必要了,感謝新的粒度權限集合特性。現在每次給一個人實際地分配訪問每個服務器資源的權限成為可能。用戶可以被賦予訪問任何資源的權限組合——或者僅僅是某項資源。系統像數據庫管理員期望的那樣靈活。
要獲得有關粒度權限的更多信息,也可以閱讀我的tip《SQL Server 2005中的權限》。
密碼策略(PassWord policIEs)
當安裝在Windows Server 2003系統上的時候,SQL Server 2005可以采用操作系統的密碼策略登錄SQL Server。它轉換為更加安全的密碼,減少了發生在數據庫服務器上的暴力攻擊的機會。SQL Server 2005不但支持密碼復雜度規則(確保最小長度,加強字母和數字字符的組合,等),還支持密碼過期策略(確保古老的密碼必須被修改)。
要使用這些特性,數據庫管理員們可以使用ALTER LOGIN語句來設置CHECK_POLICY 和CHECK_EXPIRATION 選項。
加密 (Encryption)
大多數的存儲了敏感數據的數據庫都使用了加密技術來確保數據的安全。直到現在,這樣的技術還只是在應用層實現,通過類似微軟的Base Cryptographic Provider的技術。
SQL Server 2005通過自帶的暴露加密技術減少了基於應用進行加密的需求。現在,數據庫管理員和開發人員能夠建立一個證書庫,創建對稱或者不對稱的密鑰,並使用不同的算法,其中包括三層DES(數據加密標准),RC4和AES(高級加密標准)。
加密是一個很大的話題。要獲得更多有關SQL Server 2005 在這個領域內的貢獻的信息,查閱《Database Journal》中的文章《SQL Server 2005安全——第三部分 加密》。
受限元數據可見度(Limited metadata visibility)
在SQL Server的早期版本中,元數據沒有基於訪問控制機制的保護措施。用戶也許不能從某個特定的表中查詢數據,但是他仍然可以通過類似sysobjects的系統表或者INFORMATION_SCHEMA視圖,例如INFORMATION_SCHEMA.TABLES,看到這個表的存在。
SQL Server 2005的數據庫管理員們現在不需要擔心以下的任何事情:數據庫系統的分類視圖(包括兼容性視圖和INFORMATION_SCHEMA視圖)現在都被保護起來,用戶只能看到他們能夠訪問的對象。這對於擔心數據安全的數據庫管理員們,和那些不想看到他們不能訪問的資源的用戶都有好處。
要獲得更多有關SQL Server 2005的分類視圖的信息,請閱讀我的tip《向SQL Server 2005中的系統表說再見》。
安全分類視圖(Security catalog vIEws)
在保護那些包含數據庫對象(在前面項目中描述的)的信息的分類視圖的安全之外,SQL Server 2005還包含了一系列的綜合視圖,允許數據庫管理員快速獲得有關訪問權限的信息。
龐大的sys.database_permissions 視圖包含了某個數據庫中有關所有准予的權限的信息。這個視圖顯示數據的粒度與應用權限的粒度在同一個檔次上,這樣數據庫管理員要決定誰可以訪問什麼就很容易了。有一個類似的視圖,sys.server_permissions ,包含了服務器級別的權限的信息。
其他的安全視圖包含了有關法則、角色和與加密相關的數據信息。查看SQL Server 2005 的在線書籍以了解更多有關這些視圖的信息。
數據定義語言觸發器(DDL triggers)
SQL Server 數據庫管理員很早就開始意識到了使用觸發器在數據操縱操作中嵌入基於事件的邏輯的威力。所謂的數據操縱語言(DML)觸發器在幾年前的產品就存在了。
現在,同樣的能力擴展到了數據定義語言(DDL)語句中。數據庫管理員可以編寫服務器或者數據庫級別的觸發器來監控類似創建或者刪除表,增加服務器登錄或者修改數據庫的事件。從安全和審計的角度來看,這些觸發器的價值都是無法衡量的。現在,數據庫管理員可以非常輕松地編寫自動記錄日志的觸發器來捕捉發生的事件。
要了解有關SQL Server 2005 數據定義語言觸發器的信息,查閱Developer.com 上的文章《使用數據定義語言觸發器來管理SQL Server 2005》。
Windows用戶信任映射(Mapping Windows user credentials)
在SQL Server 2005 裡面,用來訪問外部資源的登錄再也不需綁定到SQL Server服務賬戶的訪問權限上。數據庫管理員可以使用新的語句,CREATE CREDENTIAL來創建一個可以映射到一個或者多個登錄的訪問點。
當使用需要訪問外部資源的SQLCLR模塊或者SQL Server 代理任務工作的時候,這種新的方式帶來了更大的靈活性。例如,如果一個SQL Server 代理任務需要訪問一個遠程文件以徹夜導入數據,SQL Server 服務賬戶再也不需要擁有浏覽遠程服務器以檢索文件的權限了。
總結
通過使用SQL Server 2005中的新的安全特性,數據庫管理員和開發人員可以創建更加靈活和更不易於攻擊的數據庫應用程序。當安全在我們的信息受到困擾的社會中變得越來越重要的時候,數據庫專業人員們就需要更多的工具來抵御這些威脅。SQL Server 2005用這些,以及其他的加強的安全措施迎接了這個挑戰。