日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

【转】理解SQL Server的安全对象和权限

發布時間:2023/12/10 数据库 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【转】理解SQL Server的安全对象和权限 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

理解安全對象(Securable)

??? 安全對象,是SQL Server 數據庫引擎授權系統控制對其進行訪問的資源。通俗點說,就是在SQL Server權限體系下控制的對象,因為所有的對象(從服務器,到表,到視圖觸發器等)都在SQL Server的權限體系控制之下,所以在SQL Server中的任何對象都可以被稱為安全對象。

??? 和主體一樣,安全對象之間也是有層級,對父層級上的安全對象應用的權限會被其子層級的安全對象所繼承。SQL Server中將安全對象分為三個層次,分別為:

  • ??? 服務器層級

  • ??? 數據庫層級

  • ??? 構架層級

??? 這三個層級是從上到下包含的,如圖1所示:

? ??

?

??? 對于SQL Server對于層級的詳細劃分,可以參看MSDN。SQL Server中全部的安全對象如圖2和圖3所示。

? ??

? ??

? ??

?

理解權限(Permission)

??? 權限是連接主體和安全對象的紐帶。SQL Server 2008中,權限分為權利與限制,分別對應GRANT語句和DENY語句。GRANT表示允許主體對于安全對象做某些操作,DENY表示不允許主體對某些安全對象做某些操作。還有一個REVOKE語句用于收回先前對主體GRANT或DENY的權限。

??? 在設置權限時,尤其要注意權限在安全對象上的繼承關系。對于父安全對象上設置的權限,會被自動繼承到子安全對象上。主體和安全對象的層級關系如圖4所示。

???

??? 比如,我給予主體CareySon(登錄名)對于安全對象CareySon-PC(服務器)的Select(權限),那么CareySon這個主體自動擁有CareySon-PC服務器下所有的數據庫中表和視圖等子安全對象的SELECT權限。如圖5所示。

??? 此時,主體CareySon可以看到所有數據庫極其子安全對象,如圖6所示

? ??

?

使用T-SQL語句進行權限控制

??? 在理解了主體,安全對象和權限的概念之后,使用T-SQL語句進行權限控制就非常簡單了。使用GRANT語句進行授予權限,使用DENY語句限制權限,使用REVOKE語句收回之前對于權限的授予或者限制。

??? GRANT在MSDN的原型為:

1

2

3

4

GRANT?{?ALL?[?PRIVILEGES?]?}

??????|?permission?[?(?column?[?,...n?]?)?]?[?,...n?]

??????[?ON?[?class?::?]?securable?]?TO?principal?[?,...n?]?

??????[?WITH?GRANT?OPTION?]?[?AS?principal?]

??? 對于GRANT語句的理解就像造句一樣 GRANT 某種權限 ON 安全對象類型::安全對象 TO 主體。如果指定了WITH GRANT OPTION,則被授予權限的主體可以授予別的主體同樣的權限。

?

??? 對于DENY語句在MSDN中的原型和GRANT大同小異:

1

2

3

4

DENY?{?ALL?[?PRIVILEGES?]?}

??????|?permission?[?(?column?[?,...n?]?)?]?[?,...n?]

??????[?ON?[?class?::?]?securable?]?TO?principal?[?,...n?]?

??????[?CASCADE]?[?AS?principal?]

??? 值得注意的是CASCADE選項表示拒絕主體對于安全對象的訪問權限同時決絕主體授予其他主體對于安全對象的權限。

???? 而REVOKE語句用于收回原來授予或拒絕某個主體對于安全對象的權限。REVOKE在MSDN中的原型如下:

1

2

3

4

5

6

7

8

9

REVOKE?[?GRANT?OPTION?FOR?]

??????{?

????????[?ALL?[?PRIVILEGES?]?]

????????|

????????????????permission?[?(?column?[?,...n?]?)?]?[?,...n?]

??????}

??????[?ON?[?class?::?]?securable?]?

??????{?TO?|?FROM?}?principal?[?,...n?]?

??????[?CASCADE]?[?AS?principal?]

?? 一個進行權限控制的例子如下:

1

2

3

4

5

6

7

grant?select--權限

?ON?Schema::SalesLT--類型::安全對象

??to?careyson--主體deny?select--權限

?ON?Schema::SalesLT--類型::安全對象

??to?careyson--主體revoke?select--權限

?ON?Schema::SalesLT--類型::安全對象

??to?careyson--主體

?

??? 控制權限的時候需要注意如下幾點:

  • ??? GRANT會移除主體作用于安全對象上的DENY和REVOKE

  • ??? DENY和REVOKE移出主體作用于安全對象上的GRANT

  • ??? REVOKE會移除主體作用于安全對象上的DENY和GRANT

  • ??? 在高層級上的DENY會覆蓋任何子層級的GRANT。比如說,你對于Schema進行Deny,對其包含的表進行Grant,則表的GRANT會被Schema的Deny鎖覆蓋,如圖7所示。

???

?

  • ??? 對于主體作用于高層級的GRANT會被其子Deny所覆蓋,還是上面的例子,我對于Schema進行Grant,對于表進行Deny,最后結果還是Deny,如圖8所示。

? ??

?

  • ??? SQL Server不對sysadmin組的成員做任何權限驗證操作。換句話說,sysadmin組的成員可以為所欲為

?

??? 而對于何種的安全對象可以進行何種對應權限的GRANT,REVOKE,DENY,請參看MSDN。

?

總結

??? 本文接著上篇文章講述了安全對象以及相應的權限。對于權限控制時,理解權限的繼承和權限的覆蓋會在設置權限時減少很多問題。


作者:FFIVE
鏈接:https://www.imooc.com/article/28697
來源:慕課網

總結

以上是生活随笔為你收集整理的【转】理解SQL Server的安全对象和权限的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。