當前位置:首頁 » 編程語言 » sqlserver安全管理
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

sqlserver安全管理

發布時間: 2022-08-02 17:23:00

㈠ 如何提高sql Server的安全性控制

SQLServer2000的安全配置在進行SQLServer2000資料庫的安全配置之前,首先你必須對操作系統進行安全配置,保證你的操作系統處於安全狀態。然後對你要使用的操作資料庫軟體(程序)進行必要的安全審核,比如對ASP、PHP等腳本,這是很多基於資料庫的WEB應用常出現的安全隱患,對於腳本主要是一個過濾問題,需要過濾一些類似,『;@/等字元,防止破壞者構造惡意的SQL語句。接著,安裝SQLServer2000後請打上補丁sp1,sp2以及最新的sp3,sp4。在做完上面三步基礎之後,我們再來討論SQLServer的安全配置。1、使用安全的密碼策略我們把密碼策略擺在所有安全配置的第一步,請注意,很多資料庫帳號的密碼過於簡單,這跟系統密碼過於簡單是一個道理。對於sa更應該注意,同時不要讓sa帳號的密碼寫於應用程序或者腳本中。健壯的密碼是安全的第一步!SQLServer2000安裝的時候,如果是使用混合模式,那麼就需要輸入sa的密碼,除非你確認必須使用空密碼。這比以前的版本有所改進。同時養成定期修改密碼的好習慣。資料庫管理員應該定期查看是否有不符合密碼要求的帳號。比如使用下面的SQL語句:UsemasterSelectname,、使用安全的帳號策略由於SQLServer不能更改sa用戶名稱,也不能刪除這個超級用戶,所以,我們必須對這個帳號進行最強的保護,當然,包括使用一個非常強壯的密碼,最好不要在資料庫應用中使用sa帳號,只有當沒有其它方法登錄到SQLServer實例(例如,當其它系統管理員不可用或忘記了密碼)時才使用sa。建議資料庫管理員新建立個擁有與sa一樣許可權的超級用戶來管理資料庫。安全的帳號策略還包括不要讓管理員許可權的帳號泛濫。SQLServer的認證模式有Windows身份認證和混合身份認證兩種。如果資料庫管理員不希望操作系統管理員來通過操作系統登陸來接觸資料庫的話,可以在帳號管理中把系統帳號「BUILTIN\Administrators」刪除。不過這樣做的結果是一旦sa帳號忘記密碼的話,就沒有法來恢復了。很多主機使用資料庫應用只是用來做查詢、修改等簡單功能的,請根據實際需要分配帳號,並賦予僅僅能夠滿足應用要求和需要的許可權。比如,只要查詢功能的,那麼就使用一個簡單的public帳號能夠select就可以了。3、加強資料庫日誌的記錄審核資料庫登錄事件的「失敗和成功」,在實例屬性中選擇「安全性」,將其中的審核級別選定為全部,這樣在資料庫系統和操作系統日誌裡面,就詳細記錄了所有帳號的登錄事件。請定期查看SQLServer日誌檢查是否有可疑的登錄事件發生,或者使用DOS命令。findstr/C:"登錄"d:\MicrosoftSQLServer\MSSQL\LOG\*.*4、管理擴展存儲過程對存儲過程進行大手術,並且對帳號調用擴展存儲過程的許可權要慎重。其實在多數應用中根本用不到多少系統的存儲過程,而SQLServer的這么多系統存儲過程只是用來適應廣大用戶需求的,所以請刪除不必要的存儲過程,因為有些系統的存儲過程能很容易地被人利用起來提升許可權或進行破壞。如果你不需要擴展存儲過程xp_cmdshell請把它去掉。使用這個SQL語句:usemastersp_dropextendedproc'xp_cmdshell'xp_cmdshell是進入操作系統的最佳捷徑,是資料庫留給操作系統的一個大後門。如果你需要這個存儲過程,請用這個語句也可以恢復過來。sp_addextendedproc'xp_cmdshell','xpsql70.dll'如果你不需要請丟棄OLE自動存儲過程(會造成管理器中的某些特徵不能使用),這些過程包括如下:Sp_OACreateSp_OADestroySp_OAGetErrorInfoSp_OAGetPropertySp_OAMethodSp_OASetPropertySp_OAStop去掉不需要的注冊表訪問的存儲過程,注冊表存儲過程甚至能夠讀出操作系統管理員的密碼來,如下:Xp_regaddmultistringXp_regdeletekeyXp_regdeletevalueXp_regenumvaluesXp_regreadXp_regremovemultistringXp_regwrite還有一些其他的擴展存儲過程,你也最好檢查檢查。在處理存儲過程的時候,請確認一下,避免造成對資料庫或應用程序的傷害。5、使用協議加密SQLServer2000使用的TabularDataStream協議來進行網路數據交換,如果不加密的話,所有的網路傳輸都是明文的,包括密碼、資料庫內容等等,這是一個很大的安全威脅。能被人在網路中截獲到他們需要的東西,包括資料庫帳號和密碼。所以,在條件容許情況下,最好使用SSL來加密協議,當然,你需要一個證書來支持。6、不要讓人隨便探測到你的TCP/IP埠默認情況下,SQLServer使用1433埠監聽,很多人都說SQLServer配置的時候要把這個埠改變,這樣別人就不能很容易地知道使用的什麼埠了。可惜,通過微軟未公開的1434埠的UDP探測可以很容易知道SQLServer使用的什麼TCP/IP埠了。不過微軟還是考慮到了這個問題,畢竟公開而且開放的埠會引起不必要的麻煩。在實例屬性中選擇TCP/IP協議的屬性。選擇隱藏SQLServer實例。如果隱藏了SQLServer實例,則將禁止對試圖枚舉網路上現有的SQLServer實例的客戶端所發出的廣播作出響應。這樣,別人就不能用1434來探測你的TCP/IP埠了(除非用PortScan)。7、修改TCP/IP使用的埠請在上一步配置的基礎上,更改原默認的1433埠。在實例屬性中選擇網路配置中的TCP/IP協議的屬性,將TCP/IP使用的默認埠變為其他埠.9、拒絕來自1434埠的探測由於1434埠探測沒有限制,能夠被別人探測到一些資料庫信息,而且還可能遭到DOS攻擊讓資料庫伺服器的CPU負荷增大,所以對Windows2000操作系統來說,在IPSec過濾拒絕掉1434埠的UDP通訊,可以盡可能地隱藏你的SQLServer。10、對網路連接進行IP限制SQLServer2000資料庫系統本身沒有提供網路連接的安全解決法,但是Windows2000提供了這樣的安全機制。使用操作系統自己的IPSec可以實現IP數據包的安全性。請對IP連接進行限制,只保證自己的IP能夠訪問,也拒絕其他IP進行的埠連接,把來自網路上的安全威脅進行有效的控制。

㈡ 與SQL SERVER 安全控制相關的幾點說明

與SQL SERVER安全控制相關的幾點說明

(一)幾個基本術語

身份驗證(Authentication)是指通過提交伺服器評估的憑據以登錄到主體請求訪問的 SQL Server 的過程。身份驗證可以確定接受身份驗證的用戶或進程的標識。

用戶、賬戶、賬號、登錄名、[資料庫]用戶名
用戶是指能夠在SQL Server安全機制下,訪問資料庫對象中的數據的操作員或客戶。用戶若要訪問資料庫對象,必須獲得資料庫管理員(DBA)分配的賬號和密碼。從SQL Server管理系統的角度來看,用戶就是一組匹配的賬戶和密碼。
賬戶和賬號是一個概念的不同說法,在伺服器中的賬戶又叫登錄名(Login Name),因此訪問伺服器也稱為登錄伺服器。伺服器的登錄名可以映射到資料庫中成為[資料庫]用戶名(User Name)。一個登錄名可以映射多個資料庫用戶,而一個用戶只能映射一個登錄名。
連接或登錄SQL Server伺服器時是用的登錄名而非用戶名登錄的,程序裡面的連接字元串中的用戶名也是指登錄名。
通常用戶名與登錄名相同(不是強制相同,但為了一目瞭然通常都在創建用戶名時使用與登錄名相同的名字)。
提示:登錄名(Login Name)和用戶名(User Name)是兩個不同的概念:
登錄名:伺服器方的一個實體,登錄名只能進入SQL Server伺服器,但是不能讓用戶訪問伺服器中的資料庫資源。
用戶名:一個或多個登錄對象在資料庫中的映射,可以對用戶對象進行授權,以便為登錄對象提供對資料庫的訪問許可權。
登錄名作用於它所在的伺服器。每個登錄名的定義存放在master系統資料庫的syslogins表中。
用戶名作用於它所在的資料庫。用戶定義信息存放在每個資料庫的sysusers表中。用登錄名登錄到SQL Server後,在訪問操作各個資料庫時,SQL Server會自動查詢此資料庫中是否存在與此登錄名關聯的用戶名,若存在就使用此用戶的許可權訪問此資料庫,若不存在就是用guest用戶訪問此資料庫(guest是一個特殊的用戶名,後面會講到)。

SQL身份驗證:適合於非windows平台的用戶或Internet用戶,需要提供賬戶和密碼。
Windows身份驗證:適合於windows平台用戶,利用Windows賬戶和windows集成驗證,不需要提供密碼。
用戶想要操作資料庫的某個對象(如某張表)需要過三關:
第一關:我們需要登錄到SQL Server系統,即需要登錄賬戶;
第二關:我們需要訪問某個資料庫,即需要該資料庫的用戶賬戶;
第三關:我們需要訪問資料庫中的某個對象(如某張表),需要有該對象的許可權。

主體(principal)是可被授予對安全資源的訪問許可權的實體(例如登錄名、用戶、進程、組或角色)。主體可以是主體的集合(比如資料庫角色或Windows組)或不可分割的主體(比如本地登錄或域登錄)。每個主體都具有一個 ID (identification)和一個安全 ID (SID)。
⊙ Windows級別的主體:Windows組、Windows域登錄名、Windows本地登錄名。
⊙ SQL Server級的主體:伺服器角色、SQLServer登錄名。
⊙資料庫級的主體:資料庫角色、資料庫用戶、應用程序角色。

上下文切換 (context switch),更改檢查執行語句或執行操作的許可權時所依據的標識。

伺服器(server)
1)指安裝了SQL SERVER的計算機。2)指SQL Server實例——計算機上運行的 SQLServer的副本。3)指為用戶提供服務的計算機軟體或組件。
需要根據上下文理解。

注冊伺服器
注冊伺服器使您可以存儲伺服器連接信息(伺服器的類型、伺服器的名稱、登錄到伺服器時使用的身份驗證的類型等),以供將來連接時使用——下次連接該伺服器時,不需要重新輸入登錄信息。
SQLServer 2000在SQL Server企業管理器中注冊伺服器,才能使用 SQL Server企業管理器來管理這些伺服器。從SQLServer 2005始,在 SQL ServerManagement Studio 中注冊伺服器,才能使用 SQL Server Management Studio 來管理這些伺服器。
在 Microsoft SQL Server中,可以注冊以下類型的伺服器:SQLServer資料庫引擎、Analysis Services、Reporting Services、IntegrationServices和 SQL Server Compact 3.5SP1。

(二)SQL Server實例(SQL Server instance)
SQLServer實例(SQL Server instance),簡稱實例 (instance),是計算機上運行的SQLServer 的副本。同一台計算機上可以安裝運行的多個 SQLServer副本。每個SQL Server實例都包含資料庫引擎、Analysis Services和 ReportingServices的 SQL Server,每個SQL Server資料庫實例各有一套不為其他實例共享的系統及用戶資料庫。
資料庫引擎是用於存儲、處理和保護數據的核心服務。利用資料庫引擎可控制訪問許可權並快速處理事務。
實例又分為「默認實例」(default instance)和「命名實例」(namedinstance),如果在一台計算機上安裝第一個SQLSERVER,命名設置保持默認的話,那這個實例就是默認實例。默認實例與安裝計算機具有相同名稱。命名實例指安裝SQL Server時給定了名稱,可以安裝多個命名實例,給定名稱是為了與同一台計算機上的其他命名實例和默認實例區分開。

SQLServer應用程序可以通過僅指定伺服器名稱而連接到 SQLServer的默認實例。SQL Server應用程序在連接到伺服器上的某個命名實例時必須既指定伺服器名稱又指定實例名稱,計算機名稱\實例名稱。
一台計算機上最多隻有一個默認實例,也可以沒有默認實例,默認實例名與計算機名相同。如果要訪問本機上的默認SQL伺服器實例,使用計算機名、(local)、localhost、127.0.0.1、.、本機IP地址,都可以達到相同的目的。但如果要訪問非本機的SQL伺服器,那就必須使用計算機名稱\實例名稱。

默認實例和命名實例的區別:
1、服務中服務名稱的區別:
(1)默認實例:MSSQLSERVER。
(2)有名命名實例:實列名為benet,在服務中的名稱是MSSQL$BENET。
註:如果你有多個實例的時候會在服務中出現多個服務名稱。
2、連接到查詢分析器或探查器的時候區別:
(1)默認實例可以使用:「.」(點)、「(local)」、「計算機名稱」。
(2)實例名稱:計算機名pcname,實例名benet,連接時使用的名稱是pcname\benet。

(三)安全對象和許可權

安全對象(Securable),可以通過許可權得到保護的實體。是SQLServer資料庫引擎授權系統控制對其進行訪問的資源。如表、視圖、觸發器等。
SQLServer中將安全對象分為三個層次,分別為:
⊙伺服器層級,包含的安全對象:端點、登錄、伺服器角色、資料庫。
⊙資料庫層級,包含的安全對象:用戶、資料庫角色、應用程序角色、程序集、消息類型、路由、服務、遠程服務綁定、全文目錄、證書、非對稱密鑰、對稱密鑰、約定、架構。
⊙構架(SCHEMA)層級,包含的安全對象:類型、XML架構集合、對象(函數、過程、同義詞、表、視圖)
這三個層級是從上到下包含的,級別從高到低。

說明:端點(endpoint)為伺服器級安全對象。Microsoft SQL Server 2005 中的連接管理基於「端點」。一個端點就是一個SQL Server對象,它能夠使 SQL Server在網路中通信。對於資料庫鏡像,伺服器實例需要有自己專用的「資料庫鏡像端點」。此端點用途特殊,專門用於接收來自其他伺服器實例的資料庫鏡像連接。

許可權 (permission),與對象關聯的規則,用來規定哪些用戶可以獲得該對象的訪問許可權以及方式如何。對安全對象的訪問通過授予或拒絕許可權進行控制。
許可權可以明確用戶能夠使用哪些資料庫對象,並對它們進行何種操作。用戶在資料庫內的許可權取決於用戶賬號的許可權和該用戶所屬的角色的許可權。
提示:在設置許可權時,尤其要注意許可權在安全對象上的繼承關系。對於高級別安全對象上設置的許可權,會被自動繼承到低級別安全對象上。
理解許可權的繼承和許可權的覆蓋會在設置許可權時減少很多問題,最佳方法是統籌規劃,上機驗證。

(四)架構(schema)
架構是指包含表、視圖、過程等的容器。它位於資料庫內部,而資料庫位於伺服器內部。這些實體就像嵌套框放置在一起。伺服器是最外面的框,而架構是最裡面的框。架構包含表、視圖、過程、函數、同義詞、類型、隊列、XML架構集合等安全對象。

注意:
在 SQL Server 2000和早期版本中,資料庫可以包含一個名為「架構」的實體, SQL Server 2000包含 CREATE SCHEMA語句,但此實體實際上是所有者(創建對象時的用戶)。在 SQL Server 2005 開始,架構既是一個容器,又是一個命名空間。任何用戶都可以擁有架構,並且架構所有權可以轉移。從 SQL Server 2005開始,每個用戶都擁有一個默認架構。可以使用 CREATE USER或 ALTER USER的 DEFAULT_SCHEMA選項設置和更改默認架構。如果未定義 DEFAULT_SCHEMA,則資料庫用戶將使用 dbo作為默認架構。

在SQL Server 2000中,DataBaseName.dbo.TableName解釋為:資料庫名.所有者.表名。
從 SQL Server 2005開始,DataBaseName.dbo.TableName解釋為:資料庫名.架構名.表名。

在SQL Server 2000中,資料庫對象全稱是server_name.[database_name].[owner_name].object_name
從SQL Server 2005始,資料庫對象全稱是server_name.[database_name].[schema_name].object_name
在SQL SERVER2000或以前版本中創建一個對象,對象必須要有一個所有者(owner)。對象是如何屬於某個所有者的呢?這依賴於創建對象時的用戶。您不能取消對象所有者(object owner)的特權(privileges)。對象所有者可以執行任何與對象有關的操作(例如 INSERT、UPDATE、DELETE、SELECT或 EXECUTE),也可以管理對象的許可權。
從2005/2008後,一個我們必須重新認識的情況是對象不再有所有者(owner)。架構包含對象,架構有所有者。

在2005前(如SQL Server 2000中),沒有架構的概念,只有用戶的概念,那時候DBO是默認用戶。到了2005,有了架構概念,但是為了向後兼容,保留了DBO,並且把DBO作為默認架構,在不指定架構的情況下,默認為dbo,「默認架構」的概念,用於解析未使用其完全限定名稱引用的對象的名稱。在 SQL Server 2005 中,每個用戶都有一個默認架構,用於指定伺服器在解析對象的名稱時將要搜索的第一個架構。可以使用 CREATE USER和 ALTER USER的 DEFAULT_SCHEMA選項設置和更改默認架構。如果未定義 DEFAULT_SCHEMA,則資料庫用戶將把 DBO作為其默認架構。

(五)dbo
dbo既是默認架構,也是默認用戶。在SQL Server 2000中,dbo作為默認用戶。在SQL Server2005中,dbo既作為默認用戶,也作為默認架構(如圖)。

dbo作為默認用戶,dbo (DataBase Owner,資料庫的所有者,擁有資料庫中的所有對象),每個資料庫都有dbo, sysadmin伺服器角色的成員自動映射成dbo,無法刪除 dbo用戶,且此用戶始終出現在每個資料庫中。通常,登錄名sa映射為庫中的用戶dbo。另外,固定伺服器角色 sysadmin的任何成員都映射到每個資料庫內稱為 dbo的一個特殊用戶上。由固定伺服器角色sysadmin的任何成員創建的任何對象都自動屬於 dbo。由固定伺服器角色 sysadmin的任何成員或 dbo用戶創建的任何對象都自動屬於dbo,由任何其他用戶(包括 db_owner固定資料庫角色成員)創建的對象,屬於創建該對象的用戶,而不是 dbo,用創建該對象的用戶名限定。例如:
如果用戶 Andrew是固定伺服器角色sysadmin的成員,並創建表 T1,則表 T1屬於 dbo,並以 dbo.T1而不是 Andrew.T1進行限定。相反,如果 Andrew不是固定伺服器角色sysadmin的成員,而只是固定資料庫角色 db_owner的成員,並創建表 T1,則 T1屬於 Andrew,並限定為Andrew.T1。該表屬於 Andrew,因為該成員沒有將表限定為dbo.T1。

dbo作為默認架構,在不指定架構的情況下,默認為dbo,「默認架構」的概念,用於解析未使用其完全限定名稱引用的對象的名稱。在 SQL Server 2005 中,每個用戶都有一個默認架構,用於指定伺服器在解析對象的名稱時將要搜索的第一個架構。可以使用 CREATE USER和 ALTER USER的 DEFAULT_SCHEMA選項設置和更改默認架構。如果未定義 DEFAULT_SCHEMA,則資料庫用戶將把 DBO作為其默認架構。

(六)Guest用戶
guest用戶不需要映射到登錄名。這種用戶賬號是供資料庫中沒有明確授予許可權給已映射至認證用戶使用的。guest供那些已經成功登錄到SQL SERVER實例,但是卻沒有通過用戶訪問資料庫的許可權的登錄者使用的。

SQLSERVER 2000中guest用戶可以刪除;而2005/2008中是不能刪除的,卻可以取消CONNECT許可權,而且為安全起見,所有用戶定義的資料庫中預設情況下guest用戶的許可權都是被取消了的,可在除master和tempdb之外的任何資料庫中禁用Guest用戶。
在SQL SERVER 2000中,新建的資料庫中沒有Guest用戶,但可以添加它,也可刪除它,添加與刪除方法與普通資料庫相同。
在SQL Server 2005或以上版本中GUEST已經默認存在於每個資料庫中,但默認情況下,會在新資料庫中禁用GUEST用戶(在「對象資源管理器→安全性→登錄」節點中圖標上有禁用標識),我們可以通過以下語句啟用GUEST用戶:GRANT CONNECT TO GUEST 。當你決定不再想讓該資料庫被非資料庫授權的用戶以GUEST身份進行訪問時,可以再次將GUEST帳號禁用。值得一提的是,GUEST用戶在資料庫中不能被刪除,我們只能通過以下語句禁用GUEST用戶:REVOKE CONNECT FROMGUEST 。

在SQL SERVER 2000中,要允許guest用戶帳戶訪問資料庫,可以像添加其它資料庫用戶那樣添加它,如:
USE<Database Name>
GO
EXECsp_grantdbaccess 'guest'
GO

在SQL SERVER 2005中,允許guest用戶帳戶
USE<Database Name>
GO
GRANT CONNECT TO GUEST
GO

需要提醒的是,對於是否添加Guest用戶要謹慎權衡利弊。

--SQLServer 2000刪除guest用戶賬號
USE<Database Name>
GO
EXECsp_revokedbaccess 'guest'
GO

-- SQLServer 2005禁用guest用戶賬號
USE<Database Name>
GO
REVOKECONNECT FROM GUEST
GO

(七)sa登錄名
SQLServer的 sa登錄名是伺服器級的主體。默認情況下,該登錄名是在安裝實例時創建的。在 SQL Server 2005和 SQL Server2008中,sa的默認資料庫為 master。這是對早期版本的 SQLServer的行為的更改。

sa(system administrator系統管理員)是為向後兼容而提供的特殊登錄。sysadmin是一種角色。該角色能夠執行SQLServer上的任何操作。本質上,任何具有這種角色成員身份的人都是那個伺服器上的sa。這種伺服器角色的創建為微軟提供了某一天去除sa登錄的能力——實際上,聯機叢書把sa稱作本質上為遺留物的東西。

與以前版本不同,SQL Server 2008,即使是用混合模式安裝,sa也默認禁用。
注意,sa是一個默認的SQL Server登錄名,擁有操作SQL Server系統的所有許可權,該登錄名不能被刪除。當採用混合模式安裝Microsoft SQL Server系統之後,應該為sa指定一個密碼,應為 sa登錄分配一個強密碼(strongpassword)。

sa登錄名會映射到 sysadmin固定伺服器角色,它對整個伺服器有不能撤銷的管理憑據。如果攻擊者以系統管理員的身份獲取了訪問許可權,則可能造成的危害是無法預計的。

(八)其它幾個默認配置的的登錄(Logins)和用戶(Users)
默認配置的的登錄和用戶除了dbo用戶、Guest用戶、sa登錄,還有如下幾個:

Administrators組是一個特殊的登錄。administrator用戶默認administrators組的成員。
Administrators組實際名稱為BUILTIN\Administrators。早期版本,這個組的所有成員均為 sysadmin 角色的成員(這意味著Administrators組中的成員具有最高許可權),但可以從該角色中移除這些成員。與以前版本不同,SQL Server 2008默認情況下,本地 Windows組 BUILTIN\Administrators不再包含在新的 SQL Server 2008安裝上的 SQL Server的 sysadmin固定伺服器角色中。

提示:每個版本的 SQL Server都具有不同的安全功能,默認配置也不盡相同,後出的版本更有利於安全,但安全性和使用方便這兩種需求可能有矛盾的一面,最佳方法是上機了解驗證。

NETWORKSERVICE和SYSTEM登錄賬戶
NETWORKSERVICE和SYSTEM登錄賬戶,實際名稱為NT AUTHORITY\NETWORK SERVICE和NT AUTHORITY\SYSTEM,是否存在這些,依賴於伺服器的配置。如果配置了報表伺服器,將出現NETWORK SERVICE登錄賬戶。

INFORMATION_SCHEMA和sys用戶
INFORMATION_SCHEMA和sys又是SQL Server 預定義的架構(內置架構)名稱,它們與INFORMATION_SCHEMA和sys用戶具有相同的名稱。不能刪除,主要用於向後兼容性。可以使用INFORMATION_SCHEMA用戶和sys用戶訪問INFORMATION_SCHEMA和sys架構的系統視圖,獲取有關資料庫元數據信息。

(九)SQL Server中的角色
角色 (role),是SQL Server用來管理伺服器和資料庫許可權的,是安全帳戶的集合,在管理許可權時可以視為一個單元——作為分配許可權的單位。
SQLServer中的角色分為伺服器級別和資料庫級別角色。

◇伺服器級別角色
伺服器級別角色用於幫助管理伺服器上的許可權。伺服器角色的許可權作用域為伺服器范圍。可以將登錄名(Login Name)添加到伺服器角色。

符合許可權要求的用戶,可以將伺服器級主體(SQL Server登錄名、Windows帳戶和 Windows組)添加到伺服器級角色。固定伺服器角色的每個成員都可以將其他登錄名添加到該同一角色。

固定伺服器角色簡介:
1)sysadmin:系統管理員,角色成員可對SQLServer伺服器進行所有的管理工作,為最高管理角色。這個角色一般適合於資料庫管理員(DBA)。
2)securityadmin:安全管理員,角色成員可以管理登錄名及其屬性。可以授予、拒絕、撤銷伺服器級和資料庫級的許可權。另外還可以重置SQL Server登錄名的密碼。
3)serveradmin:伺服器管理員,角色成員具有對伺服器進行設置及關閉伺服器的許可權。
4)setupadmin:設置管理員,角色成員可以添加和刪除鏈接伺服器,並執行某些系統存儲過程。
5)processadmin:進程管理員,角色成員可以終止SQLServer實例中運行的進程。
6)diskadmin:用於管理磁碟文件。
7)dbcreator:資料庫創建者,角色成員可以創建、更改、刪除或還原任何資料庫。
8)bulkadmin:可執行BULK INSERT語句,但是這些成員對要插入數據的表必須有INSERT許可權。BULK INSERT語句的功能是以用戶指定的格式復制一個數據文件至資料庫表或視圖。
9)在sql server 2005 sp2(補丁)及以後版本,伺服器角色中還可以看到一個public角色。每個 SQL Server登錄名均屬於 public伺服器角色。 如果未向某個伺服器主體授予或拒絕對某個安全對象的特定許可權,該用戶將繼承授予該對象的 public角色的許可權。public伺服器角色默認擁有 VIEW ANY DATABASE(查看任何資料庫)許可權。[VIEW ANY DATABASE許可權控制是否顯示sys.databases和 sys.sysdatabases視圖以及 sp_helpdb系統存儲過程中的元數據(metadata)。]

從 SQL Server 2012開始,您可以創建用戶定義的伺服器角色,並將伺服器級許可權添加到用戶定義的伺服器角色。
每個版本的 SQL Server都具有不同的安全功能,版本越高,功能越強。

可以利用系統函數IS_SRVROLEMEMBER指示當前用戶的 SQLServer登錄名是否是固定伺服器角色的成員。
可以利用系統存儲過程sp_helpsrvrolemember返回有關 SQL Server 固定伺服器角色成員的信息。
--查詢 sysadmin固定伺服器角色的成員。
execsp_helpsrvrolemember 'sysadmin'

◇資料庫級別的角色
資料庫級別角色用於幫助管理資料庫中的許可權。資料庫級角色的許可權作用域為資料庫范圍。可以將[資料庫]用戶名(User Name)添加到資料庫角色。
SQLServer中有兩種類型的資料庫級角色:資料庫中預定義的「固定資料庫角色」和您可以創建的「靈活資料庫角色」(自定義資料庫角色)。

固定資料庫角色是在資料庫級別定義的,並且存在於每個資料庫中。 db_owner和db_securityadmin資料庫角色的成員可以管理固定資料庫角色成員身份。但是,只有db_owner資料庫角色的成員能夠向db_owner固定資料庫角色中添加成員。 msdb資料庫中還有一些特殊用途的固定資料庫角色。

符合許可權要求的用戶,可以向資料庫級角色中添加資料庫帳戶和其他 SQL Server角色。固定資料庫角色的每個成員都可向同一個角色添加其他登錄名。

固定資料庫角色簡介:
1)db_owner:資料庫所有者,這個資料庫角色的成員可執行資料庫的所有管理操作。
2)db_accessadmin:資料庫訪問許可權管理者,角色成員具有添加、刪除資料庫使用者、資料庫角色和組的許可權。
3)db_securityadmin:資料庫安全管理員,角色成員可管理資料庫中的許可權,如設置資料庫表的增加、刪除、修改和查詢等存取許可權。
4)db_ddladmin:資料庫DDL管理員,角色成員可增加、修改或刪除資料庫中的對象。
5)db_backupoperator:資料庫備份操作員,角色成員具有執行資料庫備份的許可權。
6)db_datareader:資料庫數據讀取者,角色成員可以從所有用戶表中讀取數據。
7)db_datawriter:資料庫數據寫入者,角色成員具有對所有用戶表進行增加、刪除、修改的許可權。
8)db_denydatareader:資料庫拒絕數據讀取者,角色成員不能讀取資料庫中任何錶的內容。
9)db_denydatawriter:資料庫拒絕數據寫入者,角色成員不能對任何錶進行增加、刪修、修改操作。
10)public:是一個特殊的資料庫角色,每個資料庫用戶都是public角色的成員,因此不能將用戶、組或角色指派為public角色的成員,也不能刪除public角色的成員。public資料庫角色默認的許可權很少[使用某些系統過程查看並顯示master資料庫中的信息;執行一些不需要一些許可權的語句(例如PRINT)]。

可以利用系統函數IS_MEMBER檢查當前用戶是否是資料庫角色或Windows域組的成員。
可以利用系統存儲過程sp_helprolemember顯示資料庫角色的成員。
可以利用系統存儲過程sp_helpuser報告有關當前資料庫中資料庫級主體的信息。
可以利用系統存儲過程sp_helprotect報告當前資料庫中某對象的用戶許可權或語句許可權的信息。

--查詢用戶擁有的資料庫角色
useyourdb
execsp_helpuser 'UserName'
go
--查詢用戶被賦予的許可權
useyourdb
execsp_helprotect @username = 'user name'

㈢ SQLServer安全規劃全攻略的分配許可權

實施安全策略的最後一個步驟是創建用戶定義的資料庫角色,然後分配許可權。完成這個步驟最簡單的方法是創建一些名字與全局組名字配套的角色。例如對於前面例子中的會計系統,我們可以創建Accounting Data Entry Operators、Accounting Data Entry Managers之類的角色。
只要規劃得恰當,你能夠在域控制器上完成所有的訪問和許可權維護工作,使得伺服器反映出你在域控制器上進行的各種設置調整。雖然實際應用中情況可能有所變化,但本文介紹的基本措施仍舊適用,它們能夠幫助你構造出很容易管理的安全策略。&not;
由於會計資料庫中的角色與帳務處理任務有關,你可能想要縮短這些角色的名字。然而,如果角色名字與全局組的名字配套,你可以減少混亂,能夠更方便地判斷出哪些組屬於特定的角色。
創建好角色之後就可以分配許可權。在這個過程中,我們只需用到標準的GRANT、REVOKE和DENY命令。但應該注意DENY許可權,這個許可權優先於所有其他許可權。如果用戶是任意具有DENY許可權的角色或者組的成員,SQL Server將拒絕用戶訪問對象。
接下來我們就可以加入所有SQL Server驗證的登錄。用戶定義的資料庫角色可以包含SQL Server登錄以及NT全局組、本地組、個人帳戶,這是它最寶貴的特點之一。用戶定義的資料庫角色可以作為各種登錄的通用容器,我們使用用戶定義角色而不是直接把許可權分配給全局組的主要原因就在於此。
由於內建的角色一般適用於整個資料庫而不是單獨的對象,因此這里建議你只使用兩個內建的資料庫角色,,即db_securityadmin和db_owner。其他內建資料庫角色,例如db_datareader,它授予對資料庫裡面所有對象的SELECT許可權。
雖然你可以用db_datareader角色授予SELECT許可權,然後有選擇地對個別用戶或組拒絕SELECT許可權,但使用這種方法時,你可能忘記為某些用戶或者對象設置許可權。一種更簡單、更直接而且不容易出現錯誤的方法是為這些特殊的用戶創建一個用戶定義的角色,然後只把那些用戶訪問對象所需要的許可權授予這個用戶定義的角色。

㈣ SQLServer安全規劃全攻略的簡化安全管理

SQL Server驗證的登錄不僅能夠方便地實現,而且與NT驗證的登錄相比,它更容易編寫到應用程序里。但是,如果用戶的數量超過25,或者伺服器數量在一個以上,或者每個用戶都可以訪問一個以上的資料庫,或者資料庫有多個管理員,SQL Server驗證的登錄不容易管理。
由於SQL Server沒有顯示用戶有效許可權的工具,要記憶每個用戶具有哪些許可權以及他們為何要得到這些許可權就更加困難。即使對於一個資料庫管理員還要擔負其他責任的小型系統,簡化安全策略也有助於減輕問題的復雜程度。因此,首選的方法應該是使用NT驗證的登錄,然後通過一些精心選擇的全局組和資料庫角色管理資料庫訪問。
下面是一些簡化安全策略的經驗規則:
·用戶通過SQL Server Users組獲得伺服器訪問,通過DB_Name Users組獲得資料庫訪問。
·用戶通過加入全局組獲得許可權,而全局組通過加入角色獲得許可權,角色直接擁有資料庫里的許可權。
·需要多種許可權的用戶通過加入多個全局組的方式獲得許可權。

㈤ SQLServer安全規劃全攻略的設置全局組

構造安全策略的下一個步驟是確定用戶應該屬於什麼組。通常,每一個組織或應用程序的用戶都可以按照他們對數據的特定訪問要求分成許多類別。例如,會計應用軟體的用戶一般包括:數據輸入操作員,數據輸入管理員,報表編寫員,會計師,審計員,財務經理等。每一組用戶都有不同的資料庫訪問要求。
控制數據訪問許可權最簡單的方法是,對於每一組用戶,分別地為它創建一個滿足該組用戶許可權要求的、域內全局有效的組。我們既可以為每一個應用分別創建組,也可以創建適用於整個企業的、涵蓋廣泛用戶類別的組。
然而,如果你想要能夠精確地了解組成員可以做些什麼,為每一個應用程序分別創建組是一種較好的選擇。例如,在前面的會計系統中,我們應該創建Data Entry Operators、Accounting Data Entry Managers等組。請記住,為了簡化管理,最好為組取一個能夠明確表示出作用的名字。
除了面向特定應用程序的組之外,我們還需要幾個基本組。基本組的成員負責管理伺服器。按照習慣,我們可以創建下面這些基本組:SQL Server Administrators,SQL Server Users,SQL Server Denied Users,SQL Server DB Creators,SQL Server Security Operators,SQL Server Database Security Operators,SQL Server Developers,以及 DB_Name Users(其中DB_Name是伺服器上一個資料庫的名字)。當然,如果必要的話,你還可以創建其他組。
創建了全局組之後,接下來我們可以授予它們訪問SQL Server的許可權。首先為SQL Server Users創建一個NT驗證的登錄並授予它登錄許可權,把Master資料庫設置為它的默認資料庫,但不要授予它訪問任何其他資料庫的許可權,也不要把這個登錄帳戶設置為任何伺服器角色的成員。
接著再為SQL Server Denied Users重復這個過程,但這次要拒絕登錄訪問。在SQL Server中,拒絕許可權始終優先。創建了這兩個組之後,我們就有了一種允許或拒絕用戶訪問伺服器的便捷方法。
為那些沒有直接在Sysxlogins系統表裡面登記的組授權時,我們不能使用Enterpris Managr,因為Enterprise Manager只允許我們從現有登錄名字的列表選擇,而不是域內所有組的列表。要訪問所有的組,請打開Query Analyzer,然後用系統存儲過程sp_addsrvrolemember以及sp_addrolemember進行授權。
對於操作伺服器的各個組,我們可以用sp_addsrvrolemember存儲過程把各個登錄加入到合適的伺服器角色:SQL Server Administrators成為Sysadmins角色的成員,SQL Server DB Creators成為Dbcreator角色的成員,SQL Server Security Operators成為Securityadmin角色的成員。
注意sp_addsrvrolemember存儲過程的第一個參數要求是帳戶的完整路徑。例如,BigCo域的JoeS應該是bigcojoes(如果你想用本地帳戶,則路徑應該是server_namejoes)。
要創建在所有新資料庫中都存在的用戶,你可以修改Model資料庫。為了簡化工作,SQL Server自動把所有對Model資料庫的改動復制到新的資料庫。只要正確運用Model資料庫,我們無需定製每一個新創建的資料庫。另外,我們可以用sp_addrolemember存儲過程把SQL Server Security Operators加入到db_securityadmin,把SQL Server Developers加入到db_owner角色。
注意我們仍然沒有授權任何組或帳戶訪問資料庫。事實上,我們不能通過Enterprise Manager授權資料庫訪問,因為Enterprise Manager的用戶界面只允許我們把資料庫訪問許可權授予合法的登錄帳戶。
SQL Server不要求NT帳戶在我們把它設置為資料庫角色的成員或分配對象許可權之前能夠訪問資料庫,但Enterprise Manager有這種限制。盡管如此,只要我們使用的是sp_addrolemember存儲過程而不是Enterprise Manager,就可以在不授予域內NT帳戶資料庫訪問許可權的情況下為任意NT帳戶分配許可權。
到這里為止,對Model資料庫的設置已經完成。但是,如果你的用戶群體對企業范圍內各個應用資料庫有著類似的訪問要求,你可以把下面這些操作移到Model資料庫上進行,而不是在面向特定應用的資料庫上進行。

㈥ sql server提供的安全性控制級別有哪些

一、數據對象級別的安全機制:

這個級別的安全性通過設置數據對象的訪問許可權進行控制。如果是使用圖形界面管理工具,可以在表上點右鍵,選擇屬性|許可權,然後在相應的許可權項目上打勾就可以了。

二、伺服器級別的安全機制:

這個級別的安全性主要通過登錄帳戶進行控制,要想訪問一個資料庫伺服器,必須擁有一個登錄帳戶。登錄帳戶可以是Windows賬戶或組,也可以是SQL Server的登錄賬戶。登錄賬戶可以屬於相應的伺服器角色。至於角色,可以理解為許可權的組合。

三、資料庫級別的安全機制:

這個級別的安全性主要通過用戶帳戶進行控制,要想訪問一個資料庫,必須擁有該資料庫的一個用戶賬戶身份。用戶賬戶是通過登錄賬戶進行映射的,可以屬於固定的資料庫角色或自定義資料庫角色。

(6)sqlserver安全管理擴展閱讀

安全性措施

1、外鍵管理

SQL Server 2008為加密和密鑰管理提供了一個全面的解決方案。為了滿足不斷發展的對數據中心的信息的更強安全性的需求,公司投資給供應商來管理公司內的安全密鑰。

2、數據加密

進行加密使公司可以滿足遵守規范和及其關注數據隱私的要求。簡單的數據加密的好處包括使用任何范圍或模糊查詢搜索加密的數據、加強數據安全性以防止未授權的用戶訪問。這些可以在不改變已有的應用程序的情況下進行。

3、增強審查

SQL Server 2008具有像伺服器中加強的審查的配置和管理這樣的功能,這使得公司可以滿足各種規范需求。SQL Server 2008還可以定義每一個資料庫的審查規范,所以審查配置可以為每一個資料庫作單獨的制定。為指定對象作審查配置使審查的執行性能更好,配置的靈活性也更高。

㈦ SQLServermaster

SQL Server 是一個關系資料庫管理系統它最初是由Microsoft Sybase 和Ashton-Tate三家公司共同開發的於1988 年推出了第一個OS/2 版本在Windows NT 推出後Microsoft與Sybase 在SQL Server 的開發上就分道揚鑣了Microsoft 將SQL Server 移植到Windows NT
系統上專注於開發推廣SQL Server 的Windows NT 版本Sybase 則較專注於SQL Server在UNIX 操作系統上的應用在本書中介紹的是Microsoft SQL Server 以後簡稱為SQL Server或MS SQL Server

SQL Server 2000 是Microsoft 公司推出的SQL Server 資料庫管理系統的最新版本該版本繼承了SQL Server 7.0 版本的優點同時又比它增加了許多更先進的功能具有使用方便可伸縮性好與相關軟體集成程度高等優點可跨越從運行Microsoft Windows 98 的膝上型電腦到運行Microsoft Windows 2000 的大型多處理器的伺服器等多種平台使用

SQL Server 聯機叢書入門
使用下錶快速訪問 Microsoft® SQL Server™ 2000 文檔。

若要了解 請參見
SQL Server 構架 關系資料庫組件
資料庫構架

管理構架

復制構架

應用程序開發構架

Analysis Services 構架

Meta Data Services 構架

SQL Server 2000 的新特性 Microsoft SQL Server 2000 新特性
安裝、升級和運行 SQL Server 2000 安裝 SQL Server 2000 概述
升級到 SQL Server 2000:概述

安裝 Analysis Services

安裝 English Query

從早期版本升級

計劃和設計新資料庫 創建和維護資料庫概述
執行管理任務 導入和導出數據
備份和還原資料庫

自動化管理任務

安全管理

安全性和身份驗證

監視伺服器性能和活動

命令提示實用工具入門

管理 Analysis Services

PivotTable 服務

MDX

數據倉庫和聯機分析處理 (OLAP) DTS 概述
數據倉庫和 OLAP

數據倉庫

開發應用程序 Transact-SQL 語法元素
ADO SQL Server 應用程序設計

OLE DB SQL Server 應用程序設計

開發 SQL-DMO 應用程序

復製程序設計入門

DTS 應用程序設計

編寫擴展存儲過程

用於 C 語言的嵌入式 SQL 程序設計

DB-Library for C 入門

決策支持對象

載入項

PivotTable 服務

Meta Data Services 應用程序設計

計劃和設計數據多維數據集 多維數據集
性能 監視伺服器性能和活動
資料庫性能優化概述

分析和優化性能

優化知識庫性能

疑難解答 Transact-SQL 竅門
疑難解答概述

Analysis Services 疑難解答

其它 SQL Server 資源
下表提供有關 Microsoft® SQL Server™ 及其相關產品和技術信息的 Internet 資源。

資源 地址
Microsoft 產品支持服務 Web 站點 http://support.microsoft.com/directory
Microsoft Usenet news://msnews.microsoft.com/
Microsoft Windows® 硬體兼容性列表 http://www.microsoft.com/hcl
MSDN® http://msdn.microsoft.com
Meta Data Services(即以前的 Microsoft 知識庫) http://msdn.microsoft.com
SQL Server 專業協會 http://www.sqlpass.org/
Microsoft SQL Server 開發人員中心 http://msdn.microsoft.com
SQL Server 雜志 http://www.sqlmag.com/
Microsoft SQL Server 技術支持 http://support.microsoft.com/support/sql
TechNet 站點 http://www.Microsoft.com/technet
Microsoft 輔助工具 Web 站點 http://www.microsoft.com/enable
Microsoft SQL Server Web 站點 http://www.microsoft.com/sql
Microsoft SQL Server Web 站點上的 English Query 頁 http://www.microsoft.com/sql
Microsoft SQL Server Web 站點上的 Analysis Services 頁 http://www.microsoft.com/sql
XML 開發人員中心 http://www.msdn.microsoft.com/xml/default.asp

這些是隨便搜集的,其實樓主應該去自己看看。

㈧ 如何保證SQLServer資料庫安全

目前,針對SQL Server資料庫的應用級入侵已經變得越來越肆無忌憚,像SQL注入、跨站點腳本攻擊和未經授權的用戶訪問等。所有這些入侵都有可能繞過前台安全系統並對資料庫系統攻擊。對於資料庫管理來說,保護數據不受內部和外部侵害是一項重要的工作。SQL Server 正日益廣泛的使用於各部門內外,作為資料庫系統管理員,需要深入的理解SQL Server的安全性控制策略,以實現管理安全性的目標。那麼,如何確保SQL Server資料庫的安全性呢,我們可以從以下兩方面考慮。it培訓機構
首先、採取業界已存在的且比較成熟的資料庫審計解決方案來實現
實時記錄用戶對資料庫系統的所有操作(如:插入、刪除、更新、用戶自定義操作等),並還原SQL操作命令包括源IP地址、目的IP地址、訪問時間、用戶名、資料庫操作類型、資料庫表名、欄位名等,如此,可實現對資料庫安全事件准確全程跟蹤定位。
實時檢查資料庫不安全配置、資料庫潛在弱點、資料庫用戶弱口令、資料庫軟體補丁層次、資料庫潛藏木馬等。
進行全方位的多層(應用層、中間層、資料庫層)的訪問審計,通過多層業務審計,實現數據操作原始訪問者的精確定位。
針對於資料庫的操作行為進行實時檢測,並預設置風險控制策略,結合對資料庫活動的實時監控信息,進行特徵檢測,任何嘗試性的攻擊操作都將被檢測到並進行阻斷或告警;並支持通過郵件、簡訊、SYSLOG、SNMP、屏幕等方式告警。
其次、制定相關的資料庫管理流程
不同的人員對資料庫的操作職責不一樣,所有人員對資料庫的操作均需要事前審批,對一些非常重要的操作需要二級以上審批。申請操作時,需明確在什麼人,什麼時間,因為何事,對哪個資料庫(或表),進行什麼樣的操作,可能有什麼樣的風險及採取的補救措施等。
資料庫數據的丟失以及資料庫被非法用戶的侵入使得資料庫管理員身心疲憊不堪,資料庫安全性問題對於資料庫管理員來說簡直就是噩夢。對於資料庫數據的安全問題。本文對圍繞資料庫的安全性問題提出了一些安全性策略,希望對資料庫管理員有所幫助。