標籤:style blog http color sp 資料 div on 2014
下面我們來學習一下SQL Server的安全模型,首先看一張圖: 這就是SQLServer的三層安全管理體系,我們打個比方,假設您住在一個防衛森嚴的小區,您如果希望進入您的房間,當然需要闖三關。第一關:您需要通過小區的門衛檢查,進入小區;第二關:到了您所在的單元樓門前,您還需要單元門的鑰匙或門鈴密碼;第三關:進了單元門後,您還需要您自己房間的鑰匙。 看一下上面的圖,SQLServer的安全管理是不是非常類似小區的三層驗證關口?同樣的,我們想操作資料庫的某張表也要闖三關:第一關:我們需要登入到SQL Server系統,即需要登入帳戶;第二關:我們需要訪問某個資料庫(相當於我們的單元樓),即需要成為該資料庫的使用者第三關:我們需要訪問資料庫中的表(相當於開啟我們的房間),即需要資料庫管理員DBA給您授權,如增添、修改、刪除、查詢等許可權。 咱們都知道,登入驗證有兩種方式:1.SQL身分識別驗證:適合於非windows平台的使用者或Internet使用者, 需要提供帳戶和密碼2.Windows身分識別驗證:適合於windows平台使用者,不需要提供密碼,和windows整合驗證那麼,登入帳戶相應有兩種:SQL 帳戶和Windows帳戶。 下面我們就一起來看看如何建立登入帳戶、如何建立資料庫使用者以及如何給使用者授權。1.建立登入• 添加 Windows登入帳戶 EXEC sp_grantlogin ‘leno/123‘ /*網域名稱/使用者名稱 */ • 添加 SQL登入帳戶EXEC sp_addlogin ‘zhangsan‘, ‘1234’ /*使用者名稱/密碼*/ 2.建立資料庫使用者建立資料庫使用者需要調用系統預存程序sp_grantdbaccess,其用法為:EXEC sp_grantdbaccess ‘登入帳戶名稱’,’資料庫使用者名稱’ 其中,“資料庫使用者名稱“為選擇性參數,預設為登入帳戶名稱,即資料庫使用者預設和登入帳戶同名。USE stuDBGOEXEC sp_grantdbaccess ‘leno/123‘, ‘lenoDBUser‘ EXEC sp_grantdbaccess ‘zhangsan‘, ‘zhangsanDBUser‘ 其實,系統本身就內建了兩個資料庫使用者:q dbo 使用者q 表示資料庫的所有者(DB Owner)q 無法刪除 dbo 使用者,此使用者始終出現在每個資料庫中q guest 使用者q 適用於沒有資料庫使用者的登入帳號訪問q 每個資料庫可有也可刪除 dbo使用者:表示DataBase Owner即資料庫的主人,一般來說,誰建立的資料庫,誰就是資料庫的主人,但是可以轉讓,就像房屋產權證轉讓一樣。guest來賓使用者:就像你不是某個公司的員工,您進入該公司就是作為一個來賓(guest)身份一樣。資料庫中的guest使用者含義一樣:如果登入到SQL Server中了,希望訪問某個資料庫,但又不是該資料庫的使用者,那麼當你訪問時,SQL Server就認為你作為guest使用者的身份訪問資料庫,至於你作為guest來賓使用者是否能夠訪問資料庫,那就看管理員的授權了。如果管理員給guest帳戶授予了訪問的許可權,那麼你就能訪問。那麼,什麼叫做存取權限呢?打個比方:對於某間房屋來說,房屋的許可權就是指房產出售權(房主)、轉租(可能是租房人有事不住了,但又沒到期)、只能居住(租房人)等。對於資料庫來說,存取權限指的就是資料庫的增(insert)、刪(delete)、改(update)、查(select)許可權以及其它執行許可權等。 3.給資料庫使用者授權授權的文法• GRANT 許可權 [ON 表名 ] TO 資料庫使用者USE stuDBGO/*--為zhangsanDBUser分配對錶stuInfo的select, insert, update許可權--*/GRANT select, insert, update ON stuInfo TO zhangsanDBUser /*--為lenoDBUser分配建表的許可權--*/GRANT create table TO lenoDBUser 注意授權只能向資料庫使用者授權,而不是給登入帳戶授權。而且資料庫的許可權僅限於當前資料庫,如果希望訪問其他資料庫,還需要成為其他資料庫的使用者。所以,現在大家應該清楚了:登陸帳號->資料庫使用者->存取權限,這三道關口就是SQL Server的安全模型。
SQL Server的安全模型(芮)