1. 程式人生 > >SQL Server安全性級別1的階梯:SQL Server安全性概述

SQL Server安全性級別1的階梯:SQL Server安全性概述

因此 學校 號碼 之一 stair 配置服務 無法 永遠 設計

By Don Kiely, 2014/06/04

轉載自:http://www.sqlservercentral.com/articles/Stairway+Series/109941/

此系列

This article is part of the Stairway Series: Stairway to SQL Server Security

關系數據庫被用於各種各樣的應用程序中,通過廣泛分布式的網絡,尤其是互聯網,來自令人眼花繚亂的客戶端的連接,使得幾乎任何人在任何地方都可以訪問數據。數據庫可以掌握很大一部分人類知識,包括高度敏感的個人信息和使國際商業運作的關鍵數據。

這些特征使數據庫成為有意竊取數據或篡改數據的人的有吸引力的目標。確保數據安全是配置SQL Server和開發使用它來存儲數據的應用程序的關鍵部分。此階梯探索SQL Server 2012安全性的基礎知識,以便您可以保護您的數據和服務器資源,使其盡可能細化,以防止可能影響數據的獨特安全威脅。大部分信息將適用於早期版本的SQL Server,回到SQL Server 2005,因為那是微軟在產品中徹底改變了安全性。但是我還將討論僅在SQL Server 2012及更高版本中的功能。

SQL Server提供了保護服務器和數據免受當今復雜攻擊所需的一切。但是,在您有效使用這些安全功能之前,您需要了解您面臨的威脅以及一些基本的安全概念。這第一階梯級別提供了一個基礎,以便您可以充分利用SQL Server中的安全功能,而不浪費時間在功能上,無所事事,以防止對您的數據的特定威脅。

威脅

識別對特定數據集及其服務器的威脅是理解如何配置和使用SQL Server來保護數據的重要的第一步。您創建的用於管理您的學校足球隊的設備庫存的數據庫可能不需要嚴格的安全措施。您可能希望提供至少最少的訪問控制,以便團隊成員不能隨意更改誰擁有哪一盒足球的記錄。但是,如果有人進來竊取或弄虛作假,恐怕不是世界末日。

另一方面,如果數據庫中有關於團隊中的孩子的個人數據,例如家庭住址和電話號碼,那麽您可能需要加強安全保護(並且可能在法律上要求這樣做)。您可以通過隔離訪問來保護數據的隱私,以便幾乎任何訪問數據庫的人都可以更改設備數據,但只有少數人可以訪問個人數據。如果數據包含父母的信用卡號碼,則需要花費極大的時間來保護這些數據。

數據可能容易受到一些威脅,下面的列表是一些比較常見的威脅。網上有大量的資源可以幫助你分析你的具體情況的風險。此列表旨在幫助您開始考慮威脅以及如何使用SQL Server的功能來對付它們,或者至少減少數據的暴露程度。

`數據盜竊:盜竊數據包括各種類型的未經授權的訪問您的數據,無論是由外人入侵您的網絡或內部人員掃描著名人物的汙垢。這可能涉及閱讀禁止信息的興奮或者被潛在銷售竊取的信用卡號碼的動機。
`數據破壞:黑客可以訪問您的數據,這可能會導致一系列的問題,從公開尷尬到關閉整個操作(可能會在您的所有客戶記錄被刪除時發生)。
` 數據損壞:將數據存儲在關系數據庫中的最大好處之一是數據庫本身可以幫助保護數據的完整性。數據完整性包括強制每個訂單都有關聯的客戶,存儲在日期字段中的日期確實代表日歷日期,百分比字段只包含0到100之間的值。數據完整性可能不是您首先想到的與安全有關,但它是保護您的數據的重要組成部分。
`非法存儲:在過去,您在業務過程中收集的數據實際上是您自己的業務。但是現在美國,整個歐盟以及其他國家都有各種各樣的聯邦法律,這些國家可以控制您可以存儲的個人數據類型,存儲方式以及保護方式。對違規行為的處罰可能會非常嚴厲,包括罰款和損害公司的公眾形象。

這個樓梯涵蓋了SQL Server 2012中的功能,幫助減輕這些威脅等等。您必須了解對您的數據的威脅,才能知道如何防範這些威脅。不要將時間浪費在不能防範針對特定數據的特定威脅的措施上。你將永遠無法覆蓋所有的假設情況,最壞的情況是你的數據庫服務器完全無法被其預期的用戶使用。安全始終是一種妥協,可以將風險與實施和維護保障所需的時間和金錢相平衡。

安全設計理念

2002年初,比爾·蓋茨發出了臭名昭著的“值得信賴的計算機”備忘錄,這個備忘錄被證明是微軟思考和實現產品安全性的一個轉折點。據微軟網站介紹,由此產生的可信賴計算計劃“著眼於創建和提供基於健全商業實踐的安全,私密和可靠的計算體驗。我們的目標是建立一個更安全,更可靠的互聯網。“

換句話說,十多年前,微軟對安全問題非常重視。在此次更改之後發布的第一個版本的SQL Server是SQL Server 2005,Microsoft在其中徹底改變了整個產品的安全性。此後,每個版本的SQL Server都保留了這個新的安全基礎設施,同時逐步增強和增加了新功能,以提高安全性並解決新出現的威脅。

正如微軟在SQL Server 2005中描述的那樣,可信計算通過定義產品安全設計的四大支柱來影響SQL Server的發展:

`通過設計安全:Microsoft對其設計,代碼和交互進行了廣泛的威脅分析和安全審計,以確定攻擊者可以獲得進入服務器和數據的點。結果是,Microsoft設計了SQL Server來保護您在那裏存儲的數據的機密性,完整性和可用性。
`默認情況下是安全的:開箱即用,SQL Server默認安裝並激活關鍵的核心數據庫組件。這意味著對核心數據庫功能不重要的功能要麽未安裝,要麽已安裝但未激活。未安裝的功能不容易受到攻擊。您必須有意識地刻意安裝或激活非核心功能。這可以防止許多針對您可能不知道安裝的功能的攻擊,因為您從未使用它們。
`安全部署:Microsoft提供了安全安裝SQL Server並保證其安全的工具和支持。 SQL Server配置工具可幫助您安全地配置服務器。最重要的是,SQL Server的更新現在可作為在線Microsoft Update服務的一部分,所以很容易獲得安全更新和補丁。
`通過溝通獲得安全:微軟已經建立了一個復雜的基礎設施來收集有關其產品漏洞的信息。但是,所有這些信息都是毫無價值的,如果它留在微軟。因此,該公司致力於溝通新的漏洞,積極修補以防止這些漏洞,並定期更新其聯機幫助系統以反映新的安全信息。

這“只是安全”的理念在整個產品中都有影響。但是,雖然SQL Server在開箱即用方面相當安全,但當您創建數據庫和安裝服務時,您必須做出明智的安全選擇,以保持SQL Server實例的安全。需要工作和警惕,保證生產數據庫服務器的安全。

並且要記住,有時保護數據的最好方法就是不要把它放在數據庫中,例如,如果你有一個絕對有效的需求來存儲信用卡號碼(如果沒有,許多這些)。如果您沒有這樣的需求,則應該處理信用卡交易並存儲結果,而不是信用卡信息本身。你不能在沒有數據的情況下遭遇安全漏洞!

安全的兩個階段

SQL Server的安全模型與Windows一樣,是一個兩階段的過程,允許用戶或其他登錄訪問服務器中的受保護資源:

`身份驗證:用戶登錄,驗證並獲得對服務器的訪問權限。身份驗證回答了“你是誰?”這個問題,並要求用戶證明這一點,通常是通過提供用戶名的密碼來進行證明,而其他形式的證明則越來越受歡迎。
`授權:用戶只能與那些她有權限的SQL Server對象(如數據庫,表和存儲過程)進行交互。授權回答這個問題:“你可以做什麽?

用戶可能能夠登錄到SQL Server,但是除非他們有權執行某些操作(例如訪問數據庫),否則這些操作不會太好。因此,您不僅需要為用戶提供身份驗證憑據,還需要授權他們訪問數據,方法是在每個數據庫中為他們定義帳戶,然後對其進行身份驗證。

當你考慮這個問題的時候,在每個數據庫中都需要一個用戶帳戶,這很有意義。否則,會阻止用戶登錄到SQL Server,然後使用任何他們想要的數據庫?這個概念有各種各樣的適應各種情況,但這是安全的基本狀態。

在這個階梯中的後續級別包括身份驗證和授權,您將學習如何在SQL Server中實現各種安全功能,以防止已經識別到您的數據的威脅。

SQL Server安全術語

當您在SQL Server和其他產品中使用安全性時,您將遇到各種專業術語。以下是一些更常見的術語以及它們在數據庫安全性方面的含義。

身份驗證:如上所述,身份驗證是通過要求她證明自己是與登錄相關聯的人來確定身份的過程。它回答了這個問題,你是誰?

授權:一旦系統認證用戶,授權(如上所述)確定用戶在服務器或數據庫中的權限。這回答了這個問題,你現在可以做什麽,你在這裏?

組:在Windows中,組是與其關聯的登錄的主體。授予該組的任何權限都將授予關聯的登錄名。

模擬:所有Windows進程(包括各種SQL Server進程)都運行在特定的安全上下文中,通常是導致進程啟動的主體。當進程臨時采用不同的安全上下文時,就會發生模仿。這是一個非常強大和必要的能力,但具有濫用的可能性。

登錄:登錄是對服務器實例中的對象具有一定級別訪問權限的主體。在常見的用法中,登錄常常與用戶交換使用。但是,SQL Server登錄是用於從外部訪問服務器的帳戶。登錄有時包括訪問服務器範圍內的對象的權限,例如配置信息,但通常不賦予數據庫的任何權限。

權限:權限是訪問受保護資源的權限,例如從表中讀取數據或在服務器級創建新數據庫。權限通常意味著其他權限,具體取決於主題權限的範圍。

委托人:委托人是可以接收訪問SQL Server中的受保護資源的權限的任何用戶或代碼組件。

特權:特權是委托人擁有的廣泛的權利或許可。這個詞有時可以與許可交換使用,更多的時候意味著一個特定的狹義的權利。特權意味著一組更廣泛的權限。

角色:SQL Server角色類似於Windows組,但僅限於SQL Server實例的範圍。就像一個組一樣,您可以將登錄名和用戶分配給一個角色,該角色向登錄名和用戶傳遞該角色擁有的所有權限。

用戶:用戶是對特定數據庫中的對象具有一定級別訪問權限的主體。用戶通常被映射到登錄。簡而言之,登錄可以訪問SQL Server實例,並且用戶可以訪問數據。

你會看到這個階梯中使用的大部分術語。

管理和實施SQL Server安全性

與SQL Server中的大多數管理和管理任務一樣,幾乎總是有多種方式來管理和實現安全功能,包括使用Management Studio的圖形界面,編寫和執行T-SQL代碼,以及使用SQL Server與PowerShell集成在我們之間的命令行垃圾。使用PowerShell不在這個樓梯的範圍之內,但是在整個樓梯上,你會看到使用其他兩種技術的大量例子。 (要了解PowerShell和SQL Server之間的緊密集成,請查看SQL PowerShell的階梯。)

要將Management Studio用於安全功能,通常只需在對象資源管理器中右鍵單擊相應的對象,然後選擇“屬性”,然後使用對話框中的相應頁面進行所需的更改。例如,要設置AdventureWorksLT2012示例數據庫的權限,請右鍵單擊對象資源管理器中的數據庫名稱,選擇“屬性”,然後選擇“權限”選項卡,如圖1.1所示。

圖1.1:修改AdventureWorksLT2012數據庫安全性的權限頁面

在數據庫和服務器實例級別,對象資源管理器都包含一個安全節點,可讓您管理和實施其他種類的安全功能。 圖1.2顯示了AdventureWorksLT2012數據庫的此節點以及服務器實例級別。 每個突出顯示的節點都包含各種子節點,可讓您訪問與選擇範圍相適應的安全對象。

圖1.2:對象資源管理器中服務器和數據庫級別的安全對象。

您會發現在Management Studio及其各種窗口中隱藏了各種安全功能,因此在您碰到它們時進行一些探索是值得的。

在SQL Server 2005中進行安全性檢查時引入的一個變化就是允許以更細化的方式分配權限。正如您將在後面的級別學習的那樣,您可以為各種主體分配多種權限,以便實現最小權限的重要安全主體 - 每個主體都有權執行他們需要完成的任務的權限:否越來越少。伴隨著這一變化,微軟加強了T-SQL在語言中包括強大的支持,以直接操縱安全對象。

清單1.1中的代碼顯示了一個可以用來創建安全對象的T-SQL的簡單示例。代碼首先創建鏈接到現有Windows登錄的服務器級登錄。然後,在AdventureWorks2012數據庫中,代碼創建映射到登錄名的用戶,並為用戶分配默認模式。代碼的最後一部分顯示了如何將用戶拖放到數據庫中,並創建映射到相同登錄名的另一個用戶。當然是非常人為的,但它顯示了你可以在代碼中做什麽。或者在Management Studio的GUI工具中,如果你願意的話。

-- Add a Windows login to SQL Server
CREATE LOGIN [Marathon\JoeStairway] FROM WINDOWS;
GO
 
USE AdventureWorks2012;
GO
 
-- Name the user the same name as login
CREATE USER [Marathon\JoeStairway] FOR LOGIN [Marathon\JoeStairway]
    WITH DEFAULT_SCHEMA = Production;
GO
 
-- Or, rename the user in the database
DROP USER [Marathon\JoeStairway];
GO
CREATE USER Jane FOR LOGIN [Marathon\JoeStairway];
GO
 
-- Query metadata to show that user was created
SELECT * FROM sys.database_principals WHERE name = ‘Marathon\JoeStairway‘;
SELECT * FROM sys.database_principals WHERE name = ‘Jane‘;

清單1.1:創建服務器登錄和數據庫用戶的示例代碼

如果你想嘗試運行這個代碼,你可能需要先做一些改變。除非您使用的是名為Marathon的計算機,並且現有用戶名為JoeStairway,否則您需要在代碼中更改這些名稱。代碼在AdventureWorks2012中創建數據庫用戶並使用其生產模式,因此您需要安裝該數據庫或更改代碼以使用其他數據庫和現有模式。但是你可能想要安裝AdventureWorks套件的樣本數據庫,因為這個Stairway會經常使用它們。


概要

這個階梯的第一層提供了SQL Server 2012中基本安全概念的概述。您已經了解了一些更常見的數據威脅,並探究了SQL Server安全背後的設計理念。您了解了安全性的兩個階段 - 身份驗證和授權,了解了您在整個階梯中會看到的一些安全術語,並且看到您可以通過Management Studio的GUI工具以及T-SQL代碼管理和實施安全性。

在下一個級別中,您將進一步了解如何在SQL Server中使用身份驗證以及可用的身份驗證選項。


侵權必刪!!!

SQL Server安全性級別1的階梯:SQL Server安全性概述