SQL:資料庫的安全性

爾玉先生發表於2020-12-17

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片儲存下來直接上傳(img-hxi51cj0-1608206079937)(F:\JianShu_material\MySQL\圖片\資料庫的安全性\資料庫的安全性.png)]

1. 安全性概述

在一般計算機系統中,安全措施是一級一級層層設定的。

比如使用者要求進入計算機系統時,系統首先根據輸入的使用者標識進行使用者身份鑑定,只有合法的使用者才准許進入計算機系統;對已進入系統的使用者,資料庫管理系統還要進行存取控制,只允許使用者執行合法操作;作業系統也會有自己的保護措施;資料最後還可以以密碼形式儲存到資料庫中。

下面討論與資料庫有關的安全性,主要包括使用者身份鑑別、多層存取控制、審計、檢視等等,這裡主要將多層存取控制

2. 存取控制

資料庫安全最重要的一點就是確保只授權給有資格的使用者訪問資料庫的許可權,同時令所有未被授權的人員無法接近資料,這主要通過資料庫系統的存取控制機制實現。

存取控制機制主要包括定義使用者許可權和合法許可權檢查兩部分,這兩部分一起組成了資料庫管理系統的存取控制子系統

C2級的資料庫管理系統支援自主存取控制,B1級的資料庫管理系統支援強制存取控制

自主存取控制方法: 使用者對於不同的資料庫物件有不同的存取許可權,不同的使用者對同一物件也有不同的許可權,而且使用者還可將其擁有的存取許可權轉授給其他使用者。因此自主存取控制非常靈活。

強制存取控制方法:每一個資料庫物件被標以一定的密級,每一個使用者也被授予某一個級別的許可證。對於任意一個物件,只有具有合法許可證的使用者才可以存取。強制存取控制因此相對比較嚴格。

3. 自主存取控制方法

使用者許可權是由兩個要素組成的:資料庫物件和操作型別。定義一個使用者的存取許可權就是要定義這個使用者可以在哪些資料庫物件上進行哪些型別的操作。在資料庫系統中,定義存取許可權稱為授權

在關聯式資料庫系統中,存取控制的物件不僅有資料本身(基本表中的資料、屬性列上的資料),還有資料庫模式(包括資料庫、基本表、檢視和索引的建立等)

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片儲存下來直接上傳(img-EwzVAX9c-1608206079940)(F:\JianShu_material\MySQL\圖片\資料庫的安全性\001.png)]

在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;

相關文章