SQL:資料庫的安全性
1. 安全性概述
在一般計算機系統中,安全措施是一級一級層層設定的。
比如使用者要求進入計算機系統時,系統首先根據輸入的使用者標識進行使用者身份鑑定,只有合法的使用者才准許進入計算機系統;對已進入系統的使用者,資料庫管理系統還要進行存取控制,只允許使用者執行合法操作;作業系統也會有自己的保護措施;資料最後還可以以密碼形式儲存到資料庫中。
下面討論與資料庫有關的安全性,主要包括使用者身份鑑別、多層存取控制、審計、檢視等等,這裡主要將多層存取控制
2. 存取控制
資料庫安全最重要的一點就是確保只授權給有資格的使用者訪問資料庫的許可權,同時令所有未被授權的人員無法接近資料,這主要通過資料庫系統的存取控制機制實現。
存取控制機制主要包括定義使用者許可權和合法許可權檢查兩部分,這兩部分一起組成了資料庫管理系統的存取控制子系統
C2級的資料庫管理系統支援自主存取控制,B1級的資料庫管理系統支援強制存取控制
自主存取控制方法: 使用者對於不同的資料庫物件有不同的存取許可權,不同的使用者對同一物件也有不同的許可權,而且使用者還可將其擁有的存取許可權轉授給其他使用者。因此自主存取控制非常靈活。
強制存取控制方法:每一個資料庫物件被標以一定的密級,每一個使用者也被授予某一個級別的許可證。對於任意一個物件,只有具有合法許可證的使用者才可以存取。強制存取控制因此相對比較嚴格。
3. 自主存取控制方法
使用者許可權是由兩個要素組成的:資料庫物件和操作型別。定義一個使用者的存取許可權就是要定義這個使用者可以在哪些資料庫物件上進行哪些型別的操作。在資料庫系統中,定義存取許可權稱為授權
在關聯式資料庫系統中,存取控制的物件不僅有資料本身(基本表中的資料、屬性列上的資料),還有資料庫模式(包括資料庫、基本表、檢視和索引的建立等)
在SQL中首先用CREATE ROLE語句建立角色,然後用 GRANT 語句給角色授權,用REVOKE語句收回授予角色的許可權
3.1 建立角色
建立角色的SQL語句格式為:
CREATE ROLE<角色名>
剛剛建立的角色是空的,沒有任何內容。可以用GRANT為角色授權。
3.2 授予許可權
授予許可權用GRANT語句,其格式為:
GRANT <許可權> [,<許可權>]……
ON <物件型別><物件名> [,<物件型別><物件名>]……
TO <使用者> [,<使用者>]……
[WITH GRANT OPTION];
其語義為:將對指定操作物件的指定操作許可權授予指定的使用者。發出該GRANT語句的可以是資料庫管理員,也可以是該資料庫物件建立者(即屬主owner),還可以是已經擁有該許可權的使用者。接受許可權的使用者可以是一個或多個具體使用者,也可以是PUBLIC,即全體使用者。
如果指定了WITH GRANT OPTION子句,則獲得某種許可權的使用者還可以把這種許可權再授予其他的使用者。如果沒有指定WITH GRANT OPTION子句,則獲得某種許可權的使用者只能使用該許可權,不能傳播該許可權。
#案例:把查詢Student表的許可權授給使用者U1
GRANT SELECT
ON TABLE Student
TO U1;
#案例:把對Student表和Course表的全部操作許可權授予使用者U2和U3
GRANT ALL PRIVILEGES
ON TABLE Student,Course
TO U2,U3;
#案例:把對錶SC的查詢許可權授予所有使用者
GRANT SELECT
ON TABLE SC
TO PUBLIC;
#案例:把查詢Student表和修改學生學號的許可權授予使用者U4
GRANT UPDATE(Sno),SELECT
ON TABLE SC
TO U4;
3.3 收回許可權
收回許可權用REVOKE語句,其格式為:
REVOKE <許可權> [,<許可權>]……
ON <物件型別><物件名> [,<物件型別><物件名>]……
FROM <使用者> [,<使用者>]……[CASCADE|RESTRICT];
#案例:把使用者U4修改學生學號的許可權收回
REVOKE UPDATE(Sno)
FROM U4;
#案例:收回所有使用者對錶SC的查詢許可權
REVOKE SELECT
ON TABLE SC
FROM PUBLIC;
#案例:把使用者U5對錶SC表的INSERT許可權收回
REVOKE INSERT
ON TABLE SC
FROM U5 CASCADE;
相關文章
- SQL SERVE 的資料庫安全性研究SQL資料庫
- 資料庫安全性資料庫
- 資料庫實驗五 資料庫的安全性資料庫
- SQL語言與資料庫完整性和安全性SQL資料庫
- 提高資料庫安全性的辦法資料庫
- 資料庫安全性操作——操作原則及SQL隱碼攻擊資料庫SQL
- Oracle資料庫系統的安全性(轉)Oracle資料庫
- SQL資料庫SQL資料庫
- 隔牆有耳之資料庫的安全性資料庫
- 資料庫——慢sql的原因資料庫SQL
- 資料庫常用的sql語句大全--sql資料庫SQL
- SQL:清空資料庫所有資料SQL資料庫
- SQL資料庫中Truncate的用法SQL資料庫
- Sql連結資料庫的用法SQL資料庫
- 監控資料庫效能的SQL資料庫SQL
- 常用的檢視資料庫的SQL資料庫SQL
- Sql Server 資料庫學習-常用資料庫 物件SQLServer資料庫物件
- SQL Server資料庫安全SQLServer資料庫
- 資料庫-SQL 語法資料庫SQL
- 資料庫優化SQL資料庫優化SQL
- 【資料庫】SQL語句資料庫SQL
- 資料庫效能 常用SQL資料庫SQL
- SQL Azure雲資料庫SQL資料庫
- SQL Server 資料庫映象SQLServer資料庫
- SQL Server 資料庫索引SQLServer資料庫索引
- 資料庫雲--sql雲資料庫SQL
- 資料庫映象 (SQL Server)資料庫SQLServer
- 資料庫_SQL-MongoDB資料庫SQLMongoDB
- 資料庫_SQL-PostgreSQL資料庫SQL
- 【資料庫資料恢復】Sql Server資料庫資料恢復案例資料庫資料恢復SQLServer
- 【SQL】18 SQL NULL 函式、SQL 通用資料型別、SQL 用於各種資料庫的資料型別SQLNull函式資料型別資料庫
- Sql Server資料庫資料匯入到SQLite資料庫中Server資料庫SQLite
- 【資料庫資料恢復】sql server資料庫連線失效的資料恢復案例資料庫資料恢復SQLServer
- 講解Oracle資料庫提供的多種安全性措施 (2)Oracle資料庫
- 講解Oracle資料庫提供的多種安全性措施 (1)Oracle資料庫
- 詳解使用Role來保護Oracle資料庫的安全性Oracle資料庫
- sql.bsq與資料庫的建立SQL資料庫
- 在登入資料庫的使用!sql資料庫SQL