在保密你的服務(wù)器和數(shù)據(jù),防備當(dāng)前復(fù)雜的攻擊,SQL Server有你需要的一切。但在你能有效使用這些安全功能前,你需要理解你面對的威脅和一些基本的安全概念。這篇文章提供了基礎(chǔ),因此你可以對SQL Server里的安全功能充分利用,不用在面對特定威脅,不能保護你數(shù)據(jù)的功能上浪費時間。
從讓人眼花繚亂的客戶端使用連接,通過到處分布的網(wǎng)絡(luò),尤其是互聯(lián)網(wǎng),關(guān)系數(shù)據(jù)庫在各種應(yīng)用程序里廣泛使用。這使數(shù)據(jù)對任何人,在任何地方都可訪問。數(shù)據(jù)庫可以保存人類知識的很大部分,包括高度敏感的個人信息和讓國際商務(wù)工作的關(guān)鍵數(shù)據(jù)。
對于想要偷取數(shù)據(jù)或通過篡改數(shù)據(jù)來傷害數(shù)據(jù)的擁有者的人來說,這些功能使數(shù)據(jù)庫成為有吸引力的目標(biāo)。確保你的數(shù)據(jù)安全是SQL Server配置和使用它來保存數(shù)據(jù)的程序的重要部分。這個系列會探尋SQL Server 2012安全的基本,這樣的話你可以保護你的數(shù)據(jù)和服務(wù)器資源,按你需要的安全等級來保護數(shù)據(jù),免受這些威脅對你數(shù)據(jù)的影響。大部分信息對SQL Server的早期版本也適用,回到SQL Server 2005也可以,因為那是微軟在產(chǎn)品里徹底檢查安全的時候。但我也會談?wù)撝辉赟QL Server 2012和后續(xù)版本里才有的功能。
在保密你的服務(wù)器和數(shù)據(jù),防備當(dāng)前復(fù)雜的攻擊,SQL Server有你需要的一切。但在你能有效使用這些安全功能前,你需要理解你面對的威脅和一些基本的安全概念。這篇文章提供了基礎(chǔ),因此你可以對SQL Server里的安全功能充分利用,不用在面對特定威脅,不能保護你數(shù)據(jù)的功能上浪費時間。
威脅
在理解如何配置和使用SQL Server來保護你的數(shù)據(jù),識別特定數(shù)據(jù)集和它的服務(wù)器的威脅是重要的第一步。你創(chuàng)建的用來管理你的小學(xué)足球隊的設(shè)備清單很可能不需要嚴(yán)格的安全措施。很可能你會想提供最小的訪問控制,這樣的話,足球隊成員不能隨機修改他擁有哪個足球盒的記錄。即使這些數(shù)據(jù)被盜或篡改也不會是世界末日。
另一方面,如果數(shù)據(jù)庫有關(guān)于足球隊孩子的個人信息,例如家庭地址和聯(lián)系電話,很可能你想加強安全保護(或許法律上也要求你這么做)。可能你會通過隔離訪問來保護數(shù)據(jù)的隱私,這樣的話,幾乎任何可以訪問數(shù)據(jù)庫來修改設(shè)備數(shù)據(jù),但只有一些人可以訪問個人數(shù)據(jù)。如果數(shù)據(jù)包括家長的信用卡號,你會需要極其小心的保護那個數(shù)據(jù)。
你的數(shù)據(jù)很容易受到很多威脅,下列清單是常見的幾個。在網(wǎng)絡(luò)上有很多資源可以針對你的特定情況幫你分析。這個清單只想幫助你開始考慮這些威脅,如何使用SQL Server的功能來應(yīng)對它們,或者至少減少暴露數(shù)據(jù)給他們。
- 數(shù)據(jù)竊?。簲?shù)據(jù)竊取包括各種對你數(shù)據(jù)的未授權(quán)訪問,無論通過黑入你網(wǎng)絡(luò)的外界人員,還是在重要人物上非法掃描的內(nèi)部人員。它會涉及到讀取到禁止信息的興奮,或者被通過銷售竊取的信用卡號的利益所驅(qū)動。
- 數(shù)據(jù)破壞:獲的你數(shù)據(jù)訪問權(quán)限的可以修改它,它會帶來一系列的問題,包括關(guān)閉你的所有業(yè)務(wù)讓你在公眾面前尷尬(當(dāng)你所有的客戶記錄被刪除時就會發(fā)生)。
- 數(shù)據(jù)篡改:在關(guān)系數(shù)據(jù)庫里存儲數(shù)據(jù)的一個最大好處是數(shù)據(jù)庫本身可以幫助保護數(shù)據(jù)的完整性。數(shù)據(jù)完整性包括每個訂單有關(guān)聯(lián)的客戶,在日期列存儲的日期代表日歷上的日期,百分比字段只包含0和100之間的值等這些約束。當(dāng)你考慮安全的時候,數(shù)據(jù)完整性不會是第一個想到的,但卻是你的數(shù)據(jù)保護的重要部分。
- 非法存儲:在過去,在商業(yè)過程期間,你收集的數(shù)據(jù)只是你個人的事。但選擇在美國,遍及歐盟和可以控制你存儲的各種個人信息,你如何存儲它,你如何保護它的其他國家里的都有對應(yīng)的法律存在。違法的處罰是嚴(yán)格的——包括罰款和對你公司的公共形象損失費。
這個系列文章談到的SQL Server 2012的功能可以幫你緩解這些各類威脅和其他方面。你必須理解對你數(shù)據(jù)的威脅,才可以知道如何保護它們。不要在不能防止你特定數(shù)據(jù)威脅的措施上浪費時間。你永遠(yuǎn)不能考慮到所有的假設(shè)情況,但最為最壞的情況你要保證你的數(shù)據(jù)庫服務(wù)器對它的面向客戶是完全不可用的。安全總是個妥協(xié),對時間的風(fēng)險和實現(xiàn)保障的必要金錢之間的平衡。
安全設(shè)計理念
早在2012年,比爾蓋茨發(fā)布了他臭名昭著的計算機可信備忘錄,即微軟在產(chǎn)品里如何考慮和實現(xiàn)安全的,可以證明是個轉(zhuǎn)折點。根據(jù)微軟官方網(wǎng)站,可信計算機政策啟動了?!盎诹己玫纳虡I(yè)實踐,專注創(chuàng)建和帶來安全,隱私和可靠的計算體驗。我們的目標(biāo)是更安全、更可信的互聯(lián)網(wǎng)”。
話句話說,微軟在十多年前就變得非常關(guān)注安全。關(guān)于這個修改的第一個版本是SQL Server 2005,微軟開始在產(chǎn)品考慮充分的安全。自那以后,SQL Server的每個版本都會保留新的安全架構(gòu),同時加強它,增加新的功能來同時提高安全來應(yīng)對新出現(xiàn)的威脅。
如微軟在SQL Server 2005時期里所描述的,通過定義產(chǎn)品安全的四大支柱來影響SQL Server可信計算發(fā)展。
- 安全設(shè)計(Secure by design):微軟進行廣泛的威脅分析和代碼設(shè)計與交互的安全審計,來確定攻擊者可以立足獲得服務(wù)器和數(shù)據(jù)的地方。這樣讓微軟設(shè)計的SQL Server可以保護你在服務(wù)器上存儲的數(shù)據(jù)的保密性,完整性和可用性。
- 默認(rèn)安全(Secure by default):SQL Server創(chuàng)造性的默認(rèn)安裝并激活關(guān)鍵的核心數(shù)據(jù)庫組件。這就是說不是核心的數(shù)據(jù)庫的功能不會安裝,或者安裝之后不會啟用。沒有安裝的功能不安裝就不會作為攻擊目標(biāo)。你必須清醒意識安裝或啟用的非核心功能。這會阻止你可能不知道卻安裝功能的很多攻擊,你以為從未用過它們。
- 部署安全(Secure in deploymen):微軟提供工具,支持安裝SQL Server的安全并保持它的安全。SQL服務(wù)器配置工具幫助你配置服務(wù)器安全。最重要的是,SQL Server的更新已經(jīng)是微軟在線更新的一部分,因此很容易獲得安全的更新和補丁。
- 互動安全(Secure through communication):微軟已經(jīng)建立了完善的基礎(chǔ)設(shè)施來手機它產(chǎn)品中的漏洞。但這些信息如果只留在微軟內(nèi)部的話是沒有任何用處的。因此公司致力于新漏洞的互動,積極打補丁來修正它們,定期發(fā)布更新到它的在線幫助系統(tǒng)來體現(xiàn)新的安全信息。
“它是安全的”的理念已經(jīng)影響了整個產(chǎn)品。盡管SQL Server一打開就是相當(dāng)安全的,當(dāng)你創(chuàng)建數(shù)據(jù)庫和安裝服務(wù)時,你必須做出明智的安全選擇來保持SQL Server的安全。作出并保證生產(chǎn)數(shù)據(jù)庫服務(wù)器的安全需要行動和警惕。
記住有時候保護數(shù)據(jù)的最佳方法是直接不把它不放到數(shù)據(jù)庫里——例如,只保存你必須絕對堅持有效的信用卡信息(這樣的人并不多)。如果你沒有這樣的需求,你應(yīng)該處理信用卡事務(wù),保存結(jié)果,而不是信用卡信息本身。你不會承受你沒有數(shù)據(jù)上的安全風(fēng)險。
安全的2個階段
SQL Server的安全模型,像Windows一樣,是個2個階段的過程,允許用戶和其它登錄的訪問服務(wù)器里受保護的資源。
- 身份驗證(Authentication):一個用戶登錄成功,是有效的,可以訪問服務(wù)器。身份驗證回答問題,“你是誰?“需要用戶去證明它,通常需要用戶提供用戶名和對應(yīng)的密碼,但其它形式的證據(jù)變得更加流行。
- 授權(quán)(Authorization):用戶可以和SQL Server對象互動——例如數(shù)據(jù)庫,表和存儲過程——哪個用戶有權(quán)限。授權(quán)回答問題,”你可以做什么?“。
用戶可以登錄到SQL Server,但除非它們有權(quán)限做什么,例如訪問數(shù)據(jù)庫,它就做不了什么。因此你不僅需要為你的用戶提供授權(quán)憑證,你還要授權(quán)它們訪問數(shù)據(jù),在每個它們需要使用的數(shù)據(jù)庫里為它們授權(quán)一次,定義賬號。
當(dāng)你考慮它的時候,在每個數(shù)據(jù)庫里需要一個用戶賬號更有意義。不然的話,什么可以阻止用戶登錄到SQL Server并可以訪問想訪問任何數(shù)據(jù)庫。這個概念有不同的含義來實現(xiàn)不同的場景,但這是安全的基本狀態(tài)。
在這個系列的接下來文章會談到驗證和授權(quán),你會學(xué)到在SQL Server里如何實現(xiàn)各種安全功能來應(yīng)付你對數(shù)據(jù)已經(jīng)識別的威脅。
SQL Server安全術(shù)語
當(dāng)你與SQL Server和其它產(chǎn)品打交道時,你會碰到各種特定的專業(yè)術(shù)語。這里有一些最常見的術(shù)語,還有在數(shù)據(jù)庫安全上下文里它們的含義。
- 驗證(Authentication):如上面提到的,驗證是積極識別一個人的過程,通過需要證明它是可以登錄的人。它回答問題:你是誰?
- 授權(quán)(Authorization):一旦系統(tǒng)驗證你為一個有效用戶,授權(quán)(如上所述)決定用戶在服務(wù)器或數(shù)據(jù)庫擁有的權(quán)限。它回答問題,這里現(xiàn)在你能做什么?
- 組(Group):在Windows里,組是已登錄后與它關(guān)聯(lián)的主體。任何授權(quán)到組都會授權(quán)到組里相關(guān)聯(lián)的登錄。
- 模擬(Impersonation):所有的Windows進程,包括各種SQL Server進程,在特定的安全上下文里運行,通常是主體引起進程啟動。當(dāng)進程臨時在不同的安全上下文時會發(fā)生模擬。這是非常強大的切必需的能力,但會引起潛在的濫用。
- 登錄(Login):登錄是擁有服務(wù)器實例里的對象一些訪問級別的主體。通常,登錄常用來與用戶交互。但是SQL Server登錄是一個用來從外面訪問服務(wù)器的賬號。有時候登錄包括訪問服務(wù)器級別的對象,例如配置信息,但不會授予數(shù)據(jù)庫里的任何權(quán)限。
- 許可(Permission):許可是訪問保護資源的權(quán)利,例如從表讀取數(shù)據(jù)或在服務(wù)器級別創(chuàng)建新的數(shù)據(jù)庫。一個學(xué)科通常意味著其他許可,取決于對象許可的范圍。
- 主體(Principal):主體是可以接收訪問SQL Server里保護資源的任何用戶或代碼組件。
- 權(quán)限(Privilege):權(quán)限是主體擁有的廣泛權(quán)利和許可。這個詞有時候和許可交替使用,通常意味著特定、狹義的權(quán)利。權(quán)利意味著一組廣泛的許可。
- 角色(Role):SQL Server角色類似于Windows用戶組,但只限于SQL Server實例范圍。對于一個組,你可以分配登錄和用戶到角色,這就是這個角色擁有登錄和用戶的所有許可。
- 用戶(User):用戶是在特定數(shù)據(jù)庫里擁有對象的一些訪問級別的主體。用戶通常會映射到登錄。簡單來說,登錄可以訪問SQL Server實例,用戶可以訪問數(shù)據(jù)。
在這個系列的文章里你會看到大部分這些術(shù)語的使用。
SQL Server安全管理和實現(xiàn)
正如SQL Server里大多數(shù)操縱和管理任務(wù),通常安全功能幾乎都有很多管理和實現(xiàn)方法,包括使用SSMS的圖形界面,編寫和執(zhí)行T-SQL代碼,使用在命令行編寫PowerShell與SQL Server進行交互。使用PowerShell已經(jīng)不是本系列文章的討論范圍,但在這個系列文章里,你會看到另外2個技術(shù)的很多例子。
使用SSMS的安全功能,通常你可以在對象瀏覽器里右擊合適的對象,選擇【屬性】,然后在對話框里使用合適的頁來做你想要的修改。例如,在AdventureWorksLT2012示例數(shù)據(jù)庫上設(shè)置安全,在對象瀏覽器里右擊數(shù)據(jù)庫名,選擇【屬性】,然后選擇【權(quán)限】頁,如插圖1.1所示。

插圖1.2:用來修改AdventureWorksLT2012數(shù)據(jù)庫安全的權(quán)限頁
同時在數(shù)據(jù)庫和服務(wù)器級別,對象瀏覽器包括了安全節(jié)點,讓你管理和實現(xiàn)其他各種安全功能。插圖1.2顯示了對AdventureWorksLT2012數(shù)據(jù)庫和服務(wù)器實例級別的這個節(jié)點。這2個高亮的節(jié)點包括各種子節(jié)點,給你在選擇范圍內(nèi)訪問合適的安全對象。

插圖1.2:在對象瀏覽器里,在服務(wù)器和數(shù)據(jù)庫級別的安全對象
你會在SSMS和它各個窗體里找到各種隱藏的安全功能,因此你可以好好點開這些安全性節(jié)點。
在SQL Server 2005徹底安檢里另外一個改變是可以允許更顆粒度的方式分配安全。在接下來的文章里你就會學(xué)到,你會對各種主體分配各種許可來實現(xiàn)“最小特權(quán)”的重要安全原則——這個想法是每個主體只能有它們需要的許可:不多也不少。隨著這個改變,微軟增強了T-SQL,在語言上有強大的支持,可以直接操縱安全對象。
代碼1.1展示了你可以使用T-SQL創(chuàng)建安全對象的簡單例子。代碼首先創(chuàng)建鏈接到現(xiàn)存系統(tǒng)登錄的服務(wù)器級別的登錄。然后在AdventureWorksLT2012數(shù)據(jù)庫里,代碼創(chuàng)建了個用戶映射到登錄,分配了默認(rèn)架構(gòu)給用戶。最后的一點代碼向你展示了你如何在數(shù)據(jù)庫里刪除用戶和創(chuàng)建另一個用戶映射到同樣的登錄。很作秀,當(dāng)然,但是它展示了在代碼里你能做什么?;蛘吣阋部梢栽赟SMS的圖形界面里實現(xiàn),如果你喜歡的話。
-- Add a Windows login to SQL Server
CREATE LOGIN [PC201602202041\woodytu] FROM WINDOWS;
GO
USE AdventureWorksLT2012;
GO
-- Name the user the same name as login
CREATE USER [PC201602202041\woodytu] FOR LOGIN [PC201602202041\woodytu]
WITH DEFAULT_SCHEMA = Production;
GO
-- Or, rename the user in the database
DROP USER [PC201602202041\woodytu];
GO
CREATE USER woody FOR LOGIN [PC201602202041\woodytu];
GO
-- Query metadata to show that user was created
SELECT * FROM sys.database_principals WHERE name = 'PC201602202041\woodytu';
SELECT * FROM sys.database_principals WHERE name = 'woody';
代碼1.1:創(chuàng)建服務(wù)器登錄和數(shù)據(jù)庫用戶的示例代碼
如果你想運行這個代碼,首先你要做些改動。除非你的計算機名稱和我的一樣,且有一個woodytu的用戶存在,你需要在代碼里修改名稱。這個代碼在AdventureWorksLT2012數(shù)據(jù)庫創(chuàng)建數(shù)據(jù)庫用戶,并使用它的Production架構(gòu),因此你要么需要安裝這個數(shù)據(jù)庫,要么修改代碼使用另一個數(shù)據(jù)庫和它里面存在的架構(gòu)。但我還是建議你安裝AdventureWorks數(shù)據(jù)庫,因為接下來的文章會頻繁用到它。
小結(jié)
這個系列的第一篇文章給你概括介紹了SQL Server 2012里的基本安全概念。你學(xué)到了一些常見的數(shù)據(jù)威脅,探尋了SQL Server背后的設(shè)計理念。你學(xué)到了安全的2個階段——身份驗證和授權(quán),學(xué)習(xí)了在整個系列文章看到的一些安全術(shù)語,目睹了你可以使用SSMS圖形界面和T-SQL代碼來管理和實現(xiàn)安全。
在下一篇文章里,你會學(xué)到SQL Server里身份驗證如何工作和身份驗證可用選項的更多信息。
原文鏈接:
http://www.sqlservercentral.com/articles/Stairway+Series/109941/
您可能感興趣的文章:- WINDOWS server 2008 r2,win2012 r2 服務(wù)器安全加固實戰(zhàn)
- Windows服務(wù)器的基礎(chǔ)安全加固方法(2008、2012)
- win2008 服務(wù)器安全設(shè)置部署文檔(推薦)
- win2008 r2 服務(wù)器安全設(shè)置之安全狗設(shè)置圖文教程
- windows server 2008 服務(wù)器安全設(shè)置初級配置
- Win2008 R2 WEB 服務(wù)器安全設(shè)置指南之禁用不必要的服務(wù)和關(guān)閉端口
- Win2008 R2 WEB 服務(wù)器安全設(shè)置指南之文件夾權(quán)限設(shè)置技巧
- win2008 R2 WEB 服務(wù)器安全設(shè)置指南之組策略與用戶設(shè)置
- Win2008 R2 WEB 服務(wù)器安全設(shè)置指南之修改3389端口與更新補丁
- Windows Server 2008 R2常規(guī)安全設(shè)置及基本安全策略
- Win2008 遠(yuǎn)程控制安全設(shè)置技巧
- win2008 r2 服務(wù)器安全配置步驟小結(jié)
- Win2008服務(wù)器或VPS安全配置基礎(chǔ)教程
- Windows 2016 服務(wù)器安全設(shè)置