第14周翻譯:SQL Server的階梯安全級別2

来源:http://www.cnblogs.com/hualalalala/archive/2017/12/11/8025029.html
-Advertisement-
Play Games

SQL Server的階梯安全級別2:身份驗證 源自:http://www.sqlservercentral.com/articles/Stairway+Series/109975/ 作者:Don Kiely 2014/06/18 翻譯:劉瓊濱 謝雪妮 許雅莉 賴慧芳 該系列 本文是階梯系列的一部分 ...


SQL Server的階梯安全級別2:身份驗證

源自:http://www.sqlservercentral.com/articles/Stairway+Series/109975/

 

作者:Don Kiely

2014/06/18

翻譯:劉瓊濱 謝雪妮 許雅莉 賴慧芳

該系列

本文是階梯系列的一部分:SQL Server的階梯

SQL Server擁有一切您需要確保您的伺服器和數據對今天的複雜攻擊。 但在你可以使用這些有效安全特性,您需要瞭解你所面對的威脅和一些基本的安全概念。 第一階梯水平提供了基礎,這樣您就可以充分利用安全特性在SQL Server上浪費時間特性,什麼都不做來防止特定威脅您的數據。

身份驗證是驗證的過程,一個校長,用戶或進程需要訪問SQL Server資料庫它聲稱是什麼人或者什麼東西。 主要需要的唯一標識,以便SQL Server可以確定哪些許可權校長,如果任何。 正確的身份驗證是必要的第一步提供安全訪問資料庫對象。

SQL Server身份驗證支持兩種路徑:Windows集成驗證和SQL Server身份驗證。 你使用的路徑依賴於網路環境,將訪問資料庫類型的應用程式,這些應用程式的類型的用戶。

  • Windows身份驗證:這種形式的身份驗證依賴於Windows的重型lifting-validating身份當用戶登錄視窗。 許可權訪問SQL Server對象被分配到Windows登錄。 這種類型的身份驗證是只有當SQL Server上運行一個版本的Windows,支持Windows NTKerberos身份驗證,幾乎從Windows 2000標準。
  • SQL Server身份驗證:SQL Server可以照顧自己完全驗證。 在這種情況下,您可以創建惟一的用戶稱謂登錄在SQL伺服器(密碼。 用戶或應用程式連接到SQL Server和供應這些憑據訪問。 然後分配許可權,登錄直接或通過加入一個角色。

SQL Server配置身份驗證並不是一個簡單的非此即彼的選擇這兩種類型。 您可以配置身份驗證在兩個方面:

  • 混合模式驗證:伺服器同時支持SQL serverWindows身份驗證。
  • Windows只有模式:伺服器僅支持Windows身份驗證。

微軟強烈建議儘可能使用Windows身份驗證。 Windows有可靠的身份驗證選項,包括密碼策略,Windows身份驗證並不總是實用在真實的應用程式中。 SQL Server身份驗證可以鉤到一些Windows身份驗證功能,但它不是安全的。

Windows身份驗證

如果您配置您的SQL伺服器運行在Windows身份驗證模式中,SQL Server假定一個信任關係與Windows伺服器。 它假定Windows身份驗證的用戶登錄時。 SQL Server然後檢查用戶帳戶,任何Windows組和任何SQL伺服器角色的用戶可能是一個成員,以確定該用戶是否允許使用各種SQL Server對象。

Windows身份驗證在SQL Server身份驗證有幾個優點,包括:

  • 一個用戶登錄的,所以她沒有分別登錄SQL Server
  • 審計功能
  • 簡化登錄管理
  • 密碼策略(Windows Server 2003和後)

Windows身份驗證的另一個優點是,您所作的改變Windows用戶和組將自動反映在SQL Server,所以你不必分別管理。 然而,如果您更改Windows用戶連接到SQL Server,這些變化不會生效,直到下次用戶連接到SQL Server

配置SQL伺服器安全設置

當你安裝SQL Server,您可以選擇伺服器實例將允許的身份驗證模式。 以後你可以更改設置在伺服器屬性對話框可在SQL Server Management Studio。 這些設置應用於所有資料庫和其他對象的SQL Server實例。 如果你需要使用SQL Server身份驗證對於任何資料庫,設置混合模式為伺服器。

2.1顯示了伺服器屬性對話框與安全管理工作室頁面選中。 打開這個對話框,右鍵單擊該伺服器實例名稱在對象資源管理器中,並且從彈出菜單中選擇屬性”,進入安全頁面。 你改變身份驗證模式只需點擊適當的單選按鈕,然後單擊OK以提交更改。

 

2.1SQL伺服器實例配置的身份驗證模式。

添加一個Windows登錄

使用Windows身份驗證,您的用戶將需要一個有效的Windows登錄帳戶才能訪問SQL伺服器。 你可以把許可權授予一個Windows組連接到SQL Server,或者你可以把許可權授予個人Windows用戶如果你不想集體授予許可權。

的一個優點使用管理工作室管理安全,您可以設置登錄並提供資料庫訪問在同一時間。 啟用Windows登錄SQL伺服器和訪問AdventureWorks2012資料庫,使用以下步驟,它假定本地機器上已經有一個JoeStairway登錄的定義。

  1. 打開SQL Server Management Studio並確保對象資源管理器視窗是可見的,並且你連接到一個SQL伺服器實例。
  2. 擴大伺服器對象的樹視圖,然後展開安全部分。 您將看到幾個子節點,如圖2.2所示。

 

 

2.2。 伺服器的安全部分的對象資源管理器,您可以定義登錄。

  1. 右鍵單擊登錄節點並從彈出菜單中選擇新的登錄打開登錄對話框——新。
  2. 確保Windows身份驗證單選按鈕被選中。
  3. 您可以選擇Windows登錄兩種方式。 第一種方式是直接輸入域或機器的名字,然後一個反斜杠,Windows用戶的登錄名。 第二,一般容易,方法是單擊搜索按鈕打開對話框選擇用戶或組。 輸入用戶名,點擊檢查名稱按鈕找到確切的名字。 如果用戶發現,完整的名稱將會出現在箱子里,如圖2.3所示。 點擊OK以選擇該用戶。

     

2.3。 找到一個Windows登錄添加到SQL Server

  1. 回到登錄——新的對話框,設置AdventureWorks2012資料庫登錄的預設資料庫。 這個資料庫時使用的用戶連接到伺服器並沒有指定一個資料庫。 它不限制用戶只能訪問資料庫。 圖2.4顯示了生成的登錄視窗JoeStairway用戶機器上叫馬拉松,與一個預設的資料庫設置為樣本AdventureWorks2012資料庫。

 

 

2.4。 登錄——新對話框允許Windows登錄訪問SQL伺服器實例。

提示:

從來沒有保留預設設置為資料庫主資料庫。 我說從痛苦的經驗:太容易連接到伺服器,忘了修改資料庫。 如果你運行一個腳本,該腳本創建數以百計的資料庫對象主資料庫,您將有一個很乏味的工作刪除這些對象手動清理主資料庫。

  1. 接下來,給用戶訪問資料庫。 從列表中選擇用戶映射頁左邊的對話框。 授予用戶訪問AdventureWorks2012資料庫通過檢查框旁邊的資料庫名稱。 SQL伺服器會自動將用戶映射到用戶資料庫中具有相同名稱的,正如你所看到的在第三列在表中,儘管你可以更改用戶名,如果您想要的。 分配銷售資料庫中用戶的預設模式,通過鍵入它在預設模式列或單擊省略號(…)按鈕從列表中選擇它。 對話框如圖2.5

 

 

2.5。 授予一個Windows登錄訪問AdventureWorks2012資料庫。

提示:

是有區別的設置一個預設的資料庫登錄和授權訪問資料庫。 僅僅意味著SQL Server的預設資料庫試圖改變環境資料庫,當用戶登錄時沒有指定一個資料庫。 但這並不授予任何許可權資料庫中做任何事,甚至允許訪問資料庫。 這意味著它可以分配一個預設的資料庫,用戶不能訪問。 為用戶做任何有用的事一旦訪問一個資料庫,您需要明確授予用戶的許可權。

  1. 預設情況下,新的Windows登錄訪問伺服器。 但如果你想明確拒絕登錄訪問到伺服器,從列表中選擇狀態的頁面的左側登錄——新對話框並選擇否認單選按鈕。 你也可以暫時禁用登錄通過選擇禁用按鈕。 圖2.6顯示了這些選項。

 

 

2.6。 期權授予或拒絕訪問伺服器和臨時禁用登錄帳戶。

  1. 單擊OK創建用戶。

您還可以添加一個WindowsSQL Server以同樣的方式。 在這種情況下,集團的任何成員將會訪問資料庫伺服器,與你給的組對象的訪問在資料庫中。

SQL Server身份驗證

當您使用SQL Server登錄進行身份驗證時,客戶端應用程式必須提供一個有效的用戶名和密碼來連接到資料庫。 這些SQL Server登錄保存在SQL伺服器,沒有窗戶。 當登錄時,如果不考慮匹配的用戶名和密碼,SQL Server提出了一個錯誤,用戶不能訪問SQL Server

儘管Windows身份驗證是更安全的,你可以選擇使用SQL Server登錄而不是在某些情況下。 SQL Server身份驗證更容易管理對於簡單的應用程式,沒有廣泛的安全需要,而且它允許你不要糾纏與Windows安全。 如果客戶端運行在舊版本的Windows(基本上,任何Windows 2000歲以上)或非Windows操作系統,您必須使用SQL Server登錄。

創建一個SQL Server登錄,使用相同的登錄登錄——新對話框視窗。 而是選擇一個Windows登錄,輸入一個獨特的登錄名域或電腦名稱,並提供一個密碼。 例如,2.7顯示瞭如何創建一個新的SQL Server登錄卡斯珀並使AdventureWorks2012他的預設資料庫。

 

 

2.7。 創建一個SQL Server登錄。

的所有其他選項用戶映射和地位是相同的SQL Server登錄Windows登錄。

通過transact - SQL SQL Server登錄

您還可以執行相同的動作transact - sql代碼。 的CREATE LOGIN代碼清單2.1創建一個SQL Server登錄黃玉與一個相當強大的密碼:

 

CREATE LOGIN Topaz WITH PASSWORD = 'yBqyZIPT8}b]b[{5al0v';
GO

 

清單2.1。 代碼與t - SQL來創建一個新的SQL Server登錄。

然後,授予黃玉訪問AdventureWorks2012資料庫,使用CREATE USER聲明和分配一個預設模式,如清單2.2所示。

USE AdventureWorks2012;
GO

CREATE USER Topaz FOR LOGIN Topaz
    WITH DEFAULT_SCHEMA = HumanResources;
GO

清單2.2。 代碼來創建一個資料庫用戶關聯到一個SQL Server登錄。

提示:

與一級樓梯一樣,你可能需要做出一些改變的代碼示例,如果你想運行在本地SQL Server的實例。 清單2.2中的代碼假定你有AdventureWorks2012資料庫安裝。 後來代碼示例假設您在一臺機器上運行代碼命名馬拉松和有一個JoeStairway用戶在Windows。 隨意命名您的機器馬拉松或創建一個用戶名字,或改變代碼。

Windows登錄,您可以映射伺服器登錄黃玉其他一些名稱在資料庫中。 中的代碼清單2.3地圖黃玉到TopazD用戶在AdventureWorks2012資料庫:

USE AdventureWorks2012;
GO

CREATE USER Topaz FOR LOGIN Topaz
    WITH DEFAULT_SCHEMA = HumanResources;
GO

清單2.3。 代碼放棄現有的用戶然後添加一個資料庫用戶名與登錄名不同。

謹防sa登錄

如果你支持SQL Server登錄配置您的SQL伺服器,有一個內置的SQL Server登錄,您需要小心——salogin-which您可能已經註意到掛在登錄節點對象資源管理器。 的sa或系統管理員,登錄包含主要用於向後相容舊版本的SQL伺服器。 的sa登錄映射到系統管理員固定伺服器角色,和任何人登錄到SQL serversa是一個完整的系統管理員,不可撤銷的權利在整個SQL伺服器實例和資料庫。 這的確是一個強大的登錄。

你不能修改或刪除sa登錄。 如果您選擇混合模式驗證安裝SQL Server,提示輸入密碼sa用戶。 沒有密碼,任何人都可以以sa沒有密碼,登錄,“讓我們管理伺服器。 不用說,這是你想讓你的用戶做的最後一件事。 登錄使用sa登錄只作為一個後門如果其他系統管理員不可用或忘記了他們的Windows密碼。 如果發生這種情況,您可能需要新的管理員!

永遠不要使用sa登錄應用程式中訪問資料庫。 這樣做可以讓黑客管理層次控制資料庫伺服器如果黑客可以控制應用程式。 在遙遠的過去,這是一個簡單的方法來攻擊伺服器和一個可怕的實踐。 相反,設置一個自定義的視窗或應用程式的SQL Server登錄使用,和給登錄運行應用程式所需的絕對最小許可權(實現了最小特權原則)

提示:

事實上,你應該考慮禁用sa登錄,使用的狀態頁面登錄你之前看到的屬性對話框。 這樣攻擊者不能使用這個全能的登錄控制你的伺服器實例,你是否有一個強大的sa密碼或不是。

密碼策略和執行

在版本的SQL Server 2005年以前,沒有簡單的方法為系統管理員執行密碼策略,可以幫助使系統更加安全。 例如,SQL Server沒有辦法強迫用戶創建強密碼的最小長度和其他字母數字和字元。 如果有人想和一個字母創建一個登錄密碼,您不能配置SQL Server來防止它。 同樣,沒有辦法使密碼定期到期,如每三個月。 有些人理所當然地認為這是一個主要的理由不使用SQL Server登錄。

最近版本的SQL伺服器可以連接到Windows Server 2003的密碼策略,Windows Vista或更高版本。 密碼仍然存儲在SQL Server,但是SQL伺服器進行調用Windows API NetValidatePasswordPolicy()方法,該方法首先是在Windows Server 2003中引入的。 這個API函數Windows密碼策略適用於SQL Server登錄並返回一個值,指示是否密碼是有效的。 SQL伺服器調用這個函數當用戶創建,,或重置密碼。

您可以定義Windows密碼策略通過本地安全設置applet Windows控制面板的管理工具之一。 密碼策略部分與預設設置如圖2.8所示。 小應用程式有一個單獨的帳戶鎖定策略部分,如圖2.9所示,當用戶生效使太多的失敗的登錄嘗試。 預設情況下,鎖定策略被禁用一個新的Windows安裝。

 

 

2.8Windows本地安全策略applet,顯示預設的密碼策略。

 

 

2.9Windows本地安全策略applet,顯示預設的帳戶鎖定策略。

2.1列出了密碼策略預設值和一些筆記如何工作。

類別

政策的名字

預設的

筆記

密碼策略

執行密碼歷史

0密碼記得

等防止用戶重覆使用舊密碼,兩個密碼之間交替。

最小密碼長度

0字元

使用這個需要更長的密碼,使它們難以打破。

密碼必須符合複雜性要求

禁用

最小的字母數字組合和其他字元,不包含用戶名。

密碼過期

年齡最大的密碼

42

數天前一個用戶提示修改密碼。

年齡最小的密碼

0

數天前允許用戶更改密碼。

帳戶鎖定策略

帳戶鎖定時間

不適用

時間在幾分鐘內,賬戶就會被鎖定,如果啟用鎖定閾值。

帳戶鎖定閾值

0無效的登錄嘗試

最大數量的失敗的登錄嘗試鎖定賬戶之前。

重置帳戶鎖定櫃臺後

不適用

時間在幾分鐘後失敗的計數器複位; 啟用鎖定閾值時啟用。

2.1Windows密碼策略設置。

你可以啟用或禁用密碼策略執行,當你創建一個登錄。 登錄——新對話框中有一節在登錄名,當您創建一個啟用了SQL Server登錄,如圖2 - 10所示。

 

 

2 - 10。 執行新的登錄密碼策略。

密碼策略應用當您使用transact - sql創建登錄。 例如,如果您正在運行SQL ServerWindows 2003伺服器上後,啟用密碼策略,中的代碼清單2.4將會失敗。

USE master;
GO
CREATE LOGIN SIMPLEPWD WITH PASSWORD = 'SIMPLEPWD';
GO

清單2.4。 試圖創建一個登錄密碼,違反了密碼策略。

這段代碼失敗的原因是密碼不能與用戶名相同。

你可以當您創建或更改登錄控制政策。 清單2.5中的代碼關閉的選項來檢查過期和政策。

ALTER LOGIN Topaz WITH PASSWORD = 'yBqyZIPT8}b]b[{5al0v',
    CHECK_EXPIRATION = OFF, CHECK_POLICY = OFF;

清單2.5。 代碼更改登錄為這隻登錄禁用密碼策略。

CHECK_EXPIRATIONSQL Server選項控制是否檢查的年齡對政策和密碼CHECK_POLICY適用於其他政策。 一個MUST_CHANGE選擇是可用的,部隊在下次登錄用戶修改密碼。

如果一個用戶是太多的不成功的嘗試登錄,超過帳戶鎖定策略中設置,管理員可以重置帳戶使用UNLOCK選項,如清單2.6所示。

ALTER LOGIN Topaz WITH PASSWORD = 'yBqyZIPT8}b]b[{5al0v' UNLOCK

清單2.6。 代碼解鎖登錄,是鎖著的,因為太多的失敗的登錄嘗試。

你可以啟用密碼策略執行版本的Windows上運行SQL Server,Windows Server 2003。 但是SQL Server使用預設設置的最小長度為6個字元,檢查密碼不匹配的全部或任何部分的登錄名稱,和是一個混合的大寫字母,小寫字母,數字,和其他字元。 你不能改變這些預設值。 但是希望你不是這樣的一個老版本的Windows上運行SQL Server,如果只是因為巨大的安全改進之後!

總結

在這種級別的SQL Server安全樓梯,你學到很多在SQL Server身份驗證選項可用。 Windows集成驗證是最安全但並不總是可行的,和微軟SQL Server身份驗證更好、更安全。 但是如果你使用混合模式驗證,別忘了給sa登錄一個非常強大的密碼,或者更好的是,禁用它! 像大多數安全對象,您就可以創建並改變他們使用漂亮的GUI界面管理工作室或t - sql代碼。 如果你在一個現代版本的Windows上運行SQL Server,您可以鉤到本地安全策略的密碼策略。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • tomcat企業級Web應用伺服器配置與實戰 環境背景:公司業務經過長期發展,有了很大突破,已經實現盈利,現公司要求加強技術架構應用功能和安全性以及開始向企業應用、移動APP等領域延伸,此時原來開發web服務的php語言已經不適應新的場景,需要上java技術架構,現要求你根據公司需要,實現基於jav ...
  • 當內核或驅動出現僵死bug,導致系統無法正常運行,怎麼找到是哪個函數的位置導致的? 答,通過內核的系統時鐘,因為它是由定時器中斷產生的,每隔一定時間便會觸發一次,所以當CPU一直在某個進程中時,我們便在中斷函數中列印該進程的信息 1.先來回憶下 在之前的第5章內核中斷運行過程:http://www. ...
  • 在2017年9月5日深圳舉行的“‘名家芯思維’之2017年物聯網核心技術和應用國際研討會”上,周立功先生做了題為“平臺即服務”的講演。 ...
  • Linux下Nginx+(多)Tomcat的負載均衡的詳細與實現 一、簡介 【Nginx】 大名鼎鼎,麻雀雖小五臟俱全,它擁有小而穩且高效的特性。為目前大多數中小企業所使用。nginx可以做以下幾件事: 反向代理 負載均衡 動靜分離 網頁、圖片緩存 這裡長話短說了,它更加詳細的介紹親參考:https ...
  • 最近一年在實驗室做web後端開發,涉及到一些和伺服器搭建及部署上線項目的相關經驗,申請配置阿裡雲伺服器,並部署IIS和開發環境,項目上線經驗 ...
  • 1、安裝Sublime Text 3 首先添加sublime text 3的倉庫: sudo add-apt-repository ppa:webupd8team/sublime-text-3 根據提示按ENTER 繼續,建立信任資料庫 更新軟體庫 sudo apt-get update 安裝Sub ...
  • 腳本路徑正確,執行時報找不到文件錯誤 報錯原因: test.sh在windows編寫,windows的某些字元和Linux不一樣,導致在Linux執行失敗。 解決方法是: 在linux下新建test.sh,把shell文本拷貝進去。 ...
  • CONCAT()函數用於將多個字元串連接成一個字元串 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...