Chapter 3 Protecting the Data(1):理解許可權,chapterprotecting

來源:互聯網
上載者:User

Chapter 3 Protecting the Data(1):理解許可權,chapterprotecting
原文出處:http://blog.csdn.net/dba_huangzj/article/details/39548665,專題目錄:http://blog.csdn.net/dba_huangzj/article/details/37906349

未經作者同意,任何人不得以“原創”形式發布,也不得已用於商業用途,本人不負責任何法律責任。

        前一篇:http://blog.csdn.net/dba_huangzj/article/details/39496517

 

前言:

 

關係型資料庫管理系統(RDBMS),如SQL Server、Oracle、Mysql等,不僅僅需要負責存取資料,也要負責確保資料的一致性和安全性。類似於其他伺服器系統,通過授權給一個使用者並維護這個使用者的會話來控制資料的訪問行為。每當嘗試讀寫資料時,SQL Server都會檢查這些許可權。首先,先瞭解一些概念:

Permissions:許可權,在安全性主體層面授權,這些安全性主體包含:登入名稱、資料庫使用者、角色等。所有這些對象都可以被grant/deny/revok許可權。簡稱GDR(GRANT,DENY,REVOKE)。接受許可權的主體稱為接受者(Grantee),設定許可權的帳號成為授予者(Grantor)。


 

許可權可以使用GRANT選項授予,許可權屬於Data Control Language(DCL)命令,獨立於DML/DDL。基本文法如下:

 

<GRANT | REVOKE | DENY> ON <class of securable>::<securable> TO <principal>;

 

許可權的3種狀態為:

  • GRANT: 許可權被允許
  • DENY:許可權被顯式拒絕(優先順序高於GRANT)
  • REVOKE:消除GRANT/DENY的影響,等於移除許可權。

 

實現:

 

可以使用下面語句查看可被授與權限:

-- 所有返回內建許可權的完整列表 SELECT * FROM sys.fn_builtin_permissions(DEFAULT); --返回特定類別,如Schema的許可權 : SELECT * FROM sys.fn_builtin_permissions('SCHEMA');


本機結果如下:

第一列是安全性主體的類別,即許可權應用在這個類別上。permission_name和type用於描述許可權,type通常是許可權的簡寫。covering_permission_name列,如果不為 NULL,則為該類的許可權名稱(隱含該類的其他許可權)。比如中第一行,CREATE TABLE許可權意味著需要有ALTER DATABASE許可權。parent_class_desc(

如果不為 NULL,則為包含當前類的父類的名稱。)和Parent_covering_permission_name(如果不為 NULL,則為父類的許可權名稱(隱含該類的所有其他許可權)。),具體解釋可以查看聯機叢書。

 

下面是一些GRANT許可權的例子:

 

-- 授權給bill這個資料庫使用者,讓其擁有對Accounting.Account 表有SELECT的許可權 GRANT SELECT ON object::Accounting.Account TO Bill; -- 授權給bill這個資料庫使用者,可以執行Accounting架構中的所有預存程序和純量涵式 GRANT EXECUTE ON schema::Accounting TO bill; --授權給使用者自訂角色AvailabilityManager,讓其擁有修改伺服器上可用性群組的許可權 GRANT ALTER ANY AVAILABILITY GROUP TO AvailabilityManager;

如果需要回收許可權,可以使用REVOKE命令:

REVOKE SELECT ON object::Accounting.Account TO Fred;


如果需要顯式禁止,可以使用DENY命令:

DENY SELECT ON object::Accounting.Account TO Fred;


當deny之後,如果使用者需要運行已被deny的操作,會報出229錯誤,這個錯誤是對象上的許可權被禁止,但是由於其暴露了資訊(如xx對象被禁止,意味著xx對象是存在的),給了攻擊者一些感興趣的資訊。而錯誤208表示嘗試訪問一個不存在的對象。

 

原理:

 

下面是最常用的許可權:

許可權名 描述
ALTER

修改對象定義的許可權

CONNECT 訪問資料庫或串連端點的許可權
DELETE 刪除對象的許可權
EXECUTE 執行預存程序或函數的許可權
IMPERSONATE 等價於EXECUTE AS命令
INSERT 插入資料到表或視圖的許可權
REFERENCES 在外鍵定義或者在視圖使用了WITH SCHEMABINDING中應用對象的許可權
SELECT 能夠在對象或者列上執行SELECT命令
TAKE OWNERSHIP 成為對象的擁有者的許可權
UPDATE 更新資料的許可權
VIEW DEFINITION 查看對象定義的許可權

 

例子:

DENY SELECT ON OBJECT::dbo.Contact TO Fred;--禁止Fred查詢dbo.contact表的資料 DENY UPDATE ON OBJECT::dbo.Contact TO Fred;--Fred更新dbo.contact表的資料 GRANT SELECT ON OBJECT::dbo.Contact TO Fred;--授權Fred查詢dbo.contact表的資料


 

注意,GRANT ALL雖然存在,但是在後續會被棄用。REVOKE命令可以移除GRANT的效果,不要使用DENY命令來移除命令,除非你確定這個使用者不在需要訪問這個對象。DENY命令會覆蓋所有GRANT命令。

登入名稱可以被GRANT/DENY在架構或者對象層級,比如

DENY SELECT ON Accounting.Account TO dbo;


CONTROL許可權包含了安全實體上的其他許可權,如果DENY了SELECT許可權,然後又GRANT了CONTROL許可權,那麼deny許可權會被回收。由於SQL Server的許可權檢查演算法和複雜,所以最好保持權限原則的簡單性。SQL Server對象許可權的層級及傳輸:

 

更多:

 

如果需要測試目前使用者的許可權,惡意使用HAS_PERMS_BY_NAME函數,如果返回1,則證明許可權被授予:

--是否有對dbo架構有select許可權? SELECT HAS_PERMS_BY_NAME('dbo', 'SCHEMA', 'SELECT'); --檢查伺服器層面的所有許可權 SELECT HAS_PERMS_BY_NAME(null, null, 'VIEW SERVER STATE');

使用下面語句擷取已授與權限列表:

-- 目前使用者在dbo架構上有什麼許可權? SELECT * FROM sys.fn_my_permissions('dbo', 'SCHEMA'); --伺服器所有許可權 SELECT * FROM sys.fn_my_permissions(null, null);


伺服器許可權記錄在sys.server_permissions系統檢視表,資料庫許可權存放在每個資料庫的sys.database_permissions系統檢視表。可以查看dbo.prospect表上的許可權集合:

SELECT  grantee.name AS grantee ,         grantor.name ,         dp.permission_name AS permission ,         dp.state_desc AS state FROM    sys.database_permissions dp         JOIN sys.database_principals grantee ON dp.grantee_principal_id = grantee.principal_id         JOIN sys.database_principals grantor ON dp.grantor_principal_id = grantor.principal_id WHERE   dp.major_id = OBJECT_ID('dbo.prospect');


 

WITH GRANT OPTION工作原理:

 

意味著被授權的主體能把相同或者少於當前許可權的許可權授予給其他主體。比如

GRANT SELECT ON OBJECT::dbo.contact TO fred WITH GRANT OPTION;


這個授予了Fred有兩個許可權,一個是SELECT,一個是GRANT SELECT,可以回收除了SELECT之外的其他許可權:

REVOKE SELECT ON OBJECT::dbo.contact TO fred CASCADE; GRANT SELECT ON OBJECT::dbo.contact TO fred;


這兩個語句就是先回收所有許可權,然後僅賦予SELECT,加上CASCADE的含義是把Fred曾經授權給其他主體的SELECT許可權一併收回。

 

 

REFERENCE許可權:

 

這個許可權不僅僅範圍表,還可以作用於資料庫、架構等主體。REFERENCE在表中允許建立外鍵約束,在視圖中可以用於WITH SCHEMABINDING 所影響的表的引用。


下一篇:


深圳英語牛津版八下Chapter13單選專項練習

期中複習 (3)選擇填空 Chapters 1--4
1.--- Do you know when Mr. Green will come? ( C 1-2)
--- Sorry, I have no idea. But if he _____, I will call you.
A. come B. comes C. will come D. has come
2.---Why was the old man so angry _____ his wife?
---Because his wife never visited him _____ hospital.
A. at; at B. with; in C. at; in D. with; at
3.--- My television ______ wrong. What shall I do with it?
--- I suggest _____ it repaired.
A. goes; to get B. becomes; getting C. goes; getting D. gets; to get
4.If you invite me, I ______ to your party.
A. will go B. would go C. go D. goes
5.---Why didn’t you hand in your exercise book, Tom?
--- I remember _____ it to you just now.
A. give B. gave C. giving D. to give
6.--- He is an amazing runner.
--- Yes, I was _____ to see how fast he ran.
A. amaze B. amazing C. amazed D. to amaze
7.---Sorry, I am late, Anne, _____ I couldn’t find your tape.
--- ______, Millie. I have got another one.
A. but; That’s all right B. and; It’s nothing C. so; That’s all D. but; All right
8.If you boil water, it ____ steam.
A. will become B. becomes C. become D. became
9.You won’t succeed _____ you work hard.
A. unless B. if C. when D. because
10.--- I’m tired of the life here. I want to try _____.
--- Just do it. But you should think twice before you act.
A. something strange B. strange something
C. something new D. new something
11.---When I returned, I found the door half _____. ......餘下全文>>
 
牛津英語1、2、3、4 、9Areading翻譯

牛津英語9AReading的翻譯 懸賞分:35 - 解決時間:2008-9-14 22:13 喲啊當中課文翻譯的!!!!要全部6篇 英文是什麼啊????? #^()^# Chapter 1 Protecting the innocent ·課文翻譯 Reading 第1章 保護無辜 潘西想為校報寫一篇關於偵探的文章,為了擷取資訊,她採訪了肯偵探。 潘西:你說你喜歡做偵探,為什嗎? 肯偵探:讓我告訴你我最近處理的一樁案子,潘西。李先生是一個富翁,他獨自一個人住,愛好收藏。他花200萬買過一個花瓶,只展示給他的朋友吉爾和珍妮兩個人看過,然後把它鎖在房子裡的保險箱裡,但當天晚上,花瓶被某些人給偷了。李報了盜竊案,我就去他那兒找線索。 潘西:你有什麼發現嗎? 肯偵探:是的。我看見了一對黑色的珍珠耳環在開啟的保險箱附近。在這房間被開啟的窗戶外,我發現在潮濕的地面上有許多泥,房間裡的地毯一塵不染。 潘西:那你接下來做了什嗎? 肯偵探:我訊問了吉爾和珍妮,她們都否認偷了花瓶,但我注意到吉爾戴著黑色珍珠項鏈,不過沒有帶耳環。 潘西:那吉爾是小偷了? 肯偵探:不知道。我需要證據。一個好的偵探從不輕易下結論。我把耳環給吉爾看,她承認那是她的。她說有人在一個月前就把它從房間裡偷了。我查證了這件事情,的確是真的。 潘西:那吉爾不再是懷疑對象了。可其他呢,窗外濕地上的泥?房間裡一塵不染的地毯呢?怎麼樣了? 肯偵探:那告訴我可能沒有小偷進過李的房間。因此我質問李。最後他承認偷了自己的花瓶。他給花瓶買了保險,如果花瓶被盜了,保險公司將支付給他200萬元賠償金。 潘西:那誰偷了吉爾的耳環呢? 肯偵探:也是李。他試著使吉爾代替他去坐牢。 潘西:所以李現在在坐牢。 肯偵探:是的。並且吉爾自由了。我的工作就是保護無辜者並找出罪犯。這就是我為什麼喜歡做偵探的原因。 Ch4 非洲鬼魚 一天,托尼收到一個學生的便條:“我爺爺常常給我們講故事。我現在附上一個故事,興許你可以登在你們的報紙上。”故事如下: 一天晚上,爺爺說:“我曾經有一個朋友,姓戴。他的名字叫亨利,但每個人都叫他快樂先生。快樂先生很會謀生。他去過很多地方。當他來到一個他喜歡的地方,他就開一家寵物店,開始賣非洲鬼魚。 據他說,這是世界上唯一的隱性魚,它們是特別好的寵物,因為他們不需要食物。他們只需要水。雌鬼魚一年產一次魚卵。產卵後,如果四周絕對安靜,她馬上顯身。但一眨眼功夫,她又不見了。如果你看見她,你是極其幸運的,因為她是世界上最美麗的生物。 當快樂先生告訴他的顧客們這個故事時,他整缸整缸的魚賣得非常快。當這些魚全部售完,他通常離開此地到另外一個鎮。” “是因為他的顧客不滿意嗎?”我們問。 “根本不是。”爺爺說。“他的顧客完全滿意。他幾乎沒有接到過投訴。事實上,許多人告訴他他們從觀賞隱藏魚中得到快樂。他們感到無比輕鬆。還有一些人樂此不彼得要請朋友們來賞魚。有些人甚至宣稱自己看到了雌鬼魚,並說確實令人難忘。是的,快樂先生是一個聰明的人。” “你能告訴我們

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.