先來一張本章節內容的思維導圖
數據庫安全性概述
概述
數據庫安全性是指保護數據庫以防止不合法的使用所造成的數據泄露、更改或破壞。
數據庫不安全因素
- 非授權的用戶對數據庫惡意存取和破壞
- 數據庫中重要或敏感信息泄露
- 安全環境的脆弱性:數據庫的安全性與計算機系統的安全性是緊密相關的。包括計算機硬件,操作系統,網絡系統的安全性。
數據庫安全性控制
- 用戶身份鑑別
- 存取控制:主要包括定義用戶權限和對用戶的合法權限的檢查
授權:授予與收回
GRANT
grant <權限> [,權限] ...
on <對象類型> <對象名> [,<對象類型>,<對象名>] ...
to <用戶> [,<用戶>] ...
[with grant option]
授權時給用戶指定了with grant option權限,那麼該用戶就可以將他的權限授予其他用戶。
例:grant select,update on table table_name,view view_name to user1,user2
REVOKE
revoke <權限> [,權限] ...
on <對象類型> <對象名> [,<對象類型>,<對象名>] ...
from <用戶> [,<用戶>] ...
例:revoke update,select on table table_name from user1
創建數據庫模式的權限
grant和revoke語句向用戶授予或收回對數據的操作權限,對創建數據庫模式則需要在創建數據庫用戶時實現。
創建數據庫用戶:
create user <用戶名> [WITH] [DBA | RESOURCE | CONNECT]
只有系統的超級用戶才能創建一個數據庫用戶。
- CONNECT:連接數據庫的權限,智能登錄數據庫,不能創建模式,表,視圖等。
- RESOURCE:可以創建基本表和視圖,成爲所創建對象的屬主,不能創建模式和新用戶。
- DBA:數據庫管理員,是系統的超級用戶,可以創建用戶,基本表,視圖等。DBA擁有對所以數據庫對象的存取權限,還可以將這些權限授予其他用戶。
數據庫角色
數據庫角色是一組被命名的數據庫操作相關的權限,角色是權限的集合。
- 創建角色
create role <角色名>
- 給角色授權
grant <權限> [,<權限>]...
on <對象類型> 對象名
to <角色名> [,<角色名>]...
- 將一個角色權限授予用以角色或用戶
grant <角色1> [,<角色2>] ...
to <角色3> [,<用戶>] ...
[with admin option]
- 角色權限收回
revoke <權限> [,<權限>] ...
on <對象類型> <對象名>
from <角色> [,<角色>]
視圖機制
通過視圖機制可以把要保密的數據對無權存取的用戶隱藏起來,從而自動對數據提供一定程度的保護。
例:
1、創建視圖:
create view allow_data as select * from table_name where table_name.allow = 1
2、用戶授權
grant select on view allow_data to user_1
還可以將所有權限授予某個用戶:
grant all privileges on allow_data to user_1
審計
審計功能時把用戶對數據庫的所以操作自動記錄下來放入審計日誌,審計員利用審計日期監控數據庫中的各種行爲,重現導致數據庫出現狀況的一系列事件。
數據加密
存儲加密
傳輸加密