用戶標識
口令
系統覈對口令以鑑別用戶身份
用戶名和口令易被竊取
每個用戶預先約定好一個計算過程或者函數
存取控制機制
組成
定義用戶權限
合法權限檢查
用戶權限定義和合法權檢查機制一起組成了DBMS的安全子系統
常用存取控制方法
自主存取控制(Discretionary Access Control ,簡稱DAC) C2級 靈活
強制存取控制(Mandatory Access Control,簡稱 MAC) B1級 嚴格
自主存取(DAC)
通過 SQL 的 GRANT 語句和 REVOKE 語句實現
授權 GRANT
語義:(有該操作權限的用戶/DBA)將對指定操作對象的指定操作權限授予指定的用戶
GRANT <權限>[,<權限>]...
[ON <對象類型> <對象名>]
TO <用戶>[,<用戶>]...
[WITH GRANT OPTION]; //有這句話,表示可以把權限授予下一級用戶,不能循環
對象類型 |
對象 |
操 作 類 型 |
數據庫 |
模式 |
CREATE SCHEMA |
|
基本表 |
CREATE TABLE,ALTER TABLE |
模式 |
視圖 |
CREATE VIEW |
|
索引 |
CREATE INDEX |
數據 |
基本表和視圖 |
SELECT,INSERT,UPDATE,DELETE,REFERENCES, ALL PRIVILEGES |
數據 |
屬性列 |
SELECT,INSERT,UPDATE, REFERENCES(對列授權,須指出列名) |
|
|
ALL PRIVILEGES |
收回 REVOKE
REVOKE <權限>[,<權限>]...
[ON <對象類型> <對象名>]
FROM <用戶>[,<用戶>]...;
舉例
grant
[例1] 把查詢Student表權限授給用戶U1
grant select on table student to u1;
[例2] 把對Student表和Course表的全部權限授予用戶U2和U3
grant all privileges on table student , course to u2,u3;
[例3] 把對錶SC的查詢權限授予所有用戶
grant select on table sc to public;
[例4] 把查詢Student表和修改學生學號的權限授給用戶U4(對列授權,須指出列名)
grant select,update(sno) on table student to u4;
[例5] 把對錶SC的插入權限授予U5用戶,並允許他再將此權限授予其他用戶
grant insert on table sc to u5 with grant option;
執行例5後,U5不僅擁有了對錶SC的INSERT權限,還可以傳播此權限:
[例6]
GRANT INSERT ON TABLE SC TO U6
WITH GRANT OPTION;
同樣,U6還可以將此權限授予U7:
[例7]
GRANT INSERT ON TABLE SC TO U7;
但U7不能再傳播此權限。
revoke
[例8] 把用戶U4修改學生學號的權限收回
revoke update(sno) on table student from u4;
[例9] 收回所有用戶對錶SC的查詢權限
revoke select on table sc from public;
[例10] 把用戶U5對SC表的插入權限收回
revoke insert on table from u5 cascade;
將用戶U5的INSERT權限收回的時候必須級聯(CASCADE)
收回 系統只收回直接或間接從U5處獲得的權限
數據庫角色
角色是權限的集合
可以爲一組具有相同權限的用戶創建一個角色
簡化授權的過程
1創建用戶(DBA)
CREATE USER語句格式
CREATE USER <username>
[WITH][DBA | RESOURCE | CONNECT]
擁有的權限 |
可否執行的操作 |
|||
CREATE USER |
CREATE SCHEMA |
CREATE TABLE |
登錄數據庫 執行數據查詢和操縱 |
|
DBA |
可以 |
可以 |
可以 |
可以 |
RESOURCE |
不可以 |
不可以 |
不可以 |
不可以 |
CONNECT |
不可以 |
不可以 |
不可以 |
可以,但必須擁有相應權限 |
2創建角色
CREATE ROLE 角色名
3給角色授權
GRANT <權限>[,<權限>]…
ON <對象類型>對象名
TO <角色>[,<角色>]…
4將一個角色授予其他角色或用戶
GRANT <角色1>[,<角色2>]…
TO <角色3>[,<用戶1>]… [
WITH ADMIN OPTION]
5角色權限的收回
REVOKE <權限>[,<權限>]…
ON <對象類型> <對象名>
FROM <角色>[,<角色>]…
強制存取控制(MAC)
保證更高程度的安全性
用戶能不能直接感知或進行控制
適用於對數據有嚴格而固定密級分類的部門 :軍事部門 政府部門
權限:
敏感度標記(Label) :絕密(Top Secret) 機密(Secret) 可信(Confidential) 公開(Public)
主體就是使用客體的DBA、進程,客體就是基本表、視圖等。
主體的敏感度標記,稱爲許可證級別
客體的敏感度標記,稱爲密級
強制存取控制規則
(1)主體>=客體時,主體才能讀客體
(2)主體==客體時,主體才能寫客體
修正規則:主體<=客體,主體能寫客體///?爲什麼這裏變成了<=才能寫?
DAC與MAC共同構成DBMS的安全機制:實現MAC時要首先實現DAC
視圖技術
(建一個視圖,然後把視圖的查詢權限給用戶。其他數據用戶就找不到了)
保密的數據對無權存取這些數據的用戶隱藏
主要功能:提供數據獨立性, 間接實現:支持存取謂詞的用戶權限定義
審計技術
審計日誌(Audit Log):將用戶對數據庫的所有操作記錄在上面
DBA利用審計日誌 :找出非法存取數據的人、時間和內容
C2以上安全級別的DBMS必須具有
分類
用戶級審計
針對自己創建的數據庫表或視圖
記錄所有用戶對這些表、視圖的一切訪問要求以及SQL操作
系統級審計
DBA設置
監測成功或失敗的登錄要求
監測GRANT和REVOKE操作以及其他數據庫級權限下的操作
設置審計功能:audit
取消審計功能:noaudit
[例15]對修改SC表結構或修改SC表數據的操作進行審計 audit alter,update on sc;
[例16]取消對SC表的一切審計 noaudit alter,update on sc