複製鏈接
請複製以下鏈接發送給好友

數據控制

鎖定
在信息時代,數據庫中的數據的安全性至關重要,數據庫系統必須能夠防止未獲權限的訪問,防止惡意破壞或修改數據。在數據庫中實現安全性除了存儲結構等物理方面的措施外,主要通過權限授予並要求用户進入系統時必須通過用户名和口令的檢測。進入系統後,系統根據用户名及事先對該用户授權記載提供記錄。數據庫中的數據由多個用户共享,為保證數據庫的安全,SQL提供數據控制語言對數據庫進行統一的控制管理。
中文名
數據控制
外文名
Data control
作    用
控制數據庫用户對數據的存取權限
包含內容
安全性、完整性、併發控制、恢復
控制語句
授權、收權、拒絕訪問
應用學科
數據庫原理及應用

數據控制數據控制機制

數據庫管理系統通過以下三步來實現數據控制:

數據控制授權定義

具有授權資格的用户,如數據庫管理員(Database Administrators,DBA)或建表户(Database Owner,DBO),通過數據控制語言(Data Control Language,DCL),將授權決定告知數據庫管理系統。

數據控制存權處理

數據庫管理系統把授權的結果編譯後存入數據字典中。數據字典是由系統自動生成、維護的一組表,記錄着用户標識、基本表、視圖和各表的列描述以及系統的授權情況。

數據控制查權操作

當用户提出操作請求時,系統首先要在數據字典中查找用户的數據操作權限,當用户擁有該操作權時才能執行其操作,否則系統將拒絕其操作。 [1] 

數據控制權限與角色

數據控制權限

在SQL系統中,安全機制一共有兩種。一種是視圖機制,當用户通過試圖訪問數據庫時,此視圖外的數據不能再訪問,試圖機制提供了一定的安全性。另外一種是權限機制,是實際中主要使用的安全機制。給用户授予不同類型的權限是權限機制的思想所在,在必要時,授權需要被收回,使用户能夠進行的數據庫操作以及所操作的數據限定在指定範圍內,禁止用户超越權限對數據庫進行非法的操作,使得數據庫的安全性得到保證。
在數據庫中,權限可分為系統權限與對象權限。系統權限是指數據庫用户能夠對數據庫系統進行某種特定操作的權力,它可由數據庫管理員授予其他用户,如一個基本表的創建。對象權限是指數據庫用户在指定的數據庫對象上進行某種特定能力的權力,對象權限由創建基本表、視圖等數據庫對象的用户授予其他用户,如查詢、添加、修改、刪除等操作。

數據控制角色

角色是多種權限的集合,可以把角色授予用户或其它角色。當要為某一用户同時授予或收回多項權限時,則可以把這些權限定義為一個角色,對此角色進行相關操作。這樣許多重複性的工作得以有效避免,數據庫用户的權限管理工作在一定程度上得以簡化。 [1] 

數據控制數據控制語言

數據操作權限的設置語句包括授權語句、收權語句和拒絕訪問3種。 [1] 

數據控制授權語句

授權分對系統特權和對對象特權的兩種方式。系統特權又稱為語句特權,是允許用户在數據庫內部實施管理行為的特權,主要包括創建或刪除用户、刪除或修改數據庫對象等。對象特權類似於數據庫操作語言DML的權限,指用户對數據庫中的視圖、存儲過程等對象的操作權限。
(1)系統權限與角色的授予
使用SQL的GRANT語句為用户授予系統權限,其語法格式為:
GRANT<系統權限>|<角色>[,<系統權限>|<角色>]...
TO<NPZ>|<角色>|PUBLIC[,<用户名>|<角色>]...
[WITH ADMIN OPTION]
其語義是:將指定的系統權限授予指定的用户或角色。其中,數據庫中的全部用户是由PUBLIC代表的;WITH ADMIN OPTION為可選項,指定後則允許被授權的用户將指定的系統特權或角色再授予其他用户或角色。 [1] 
(2)對象權限與角色的授予
數據庫管理員擁有系統權限,而作為數據庫的普通用户,只對自己創建的基本表、視圖等數據庫對象擁有對象權限。如果要共享其他的數據庫對象,則必須授予普通用户一定的對象權限。類似於系統權限的授予方法,SQL使用GRANT語句為用户授予對象權限,其語法格式為:
GRANT ALL|<對象權限>[(列名[,列名]…)][,對象權限]…
ON<對象名>
TO<用户名>|<角色>|PUBLIC[,<用户名>|<角色>]...
[WITH GRANT OPTION]
其語義是:將指定的操作對象的對象權限授予指定的用户或角色。其中,所有的對象權限是由ALL代表的;列名用於指定要授權的數據庫對象的一列或多列。如果列名未指定的話,被授權的用户將在數據庫對象的所有列上均擁有指定的特權。實際上,只有當授權INSERT和UPDATE權限時才需要指定列名。ON子句用於指定要授權的數據庫對象名,可以是基本表名、視圖名等。WITH GRANT OPTION為可選項,指定後則允許被授權的用户將權限再授予其他用户或角色。 [1] 

數據控制收權語句

數據庫管理員是DBA、數據庫擁有者(建庫者)DBO或數據庫對象擁有者DBOO(數據庫對象主要是基本表)可以通過REVOKE語句將其他用户的數據操作權收回。
(1)系統權限與角色的收回
數據庫管理員可以使用SQL的REVOKE語句回收系統權限,其語法格式為:
REVOKE<系統權限>|<角色>[,<系統權限>|<角色>]...
FROM<用户名>|<角色>|PUBLIC[,<用户名>|<角色>]...
(2)對象權限與角色的收回
所有授予出去的權限在一定的情況下都可以由數據庫管理員和授權者收回,收回對象權限仍然使用REVOKE語句,其語法格式為:
REVOKE<對象權限>|<角色>[,<對象權限>|<角色>]...
FROM<用户名>|<角色>|PUBLIC[,<用户名>|<角色>]... [1] 

數據控制拒絕訪問

拒絕訪問的一般格式為:
DENY ALL[PRIVILIGES]|<權限組>[ON<對象名>]TO<用户組>|PUBLIC;
其中,ON子句用於説明對象特權的對象名,對象名指的是表名、視圖名、視圖和表的列名或者過程名。 [1] 
參考資料
  • 1.    錢雪忠,王月海主編 .數據庫原理及應用.北京:北京郵電大學出版社,2015:74-76