數據庫原理(十 五)- 數據庫安全性

前言

數據庫的特點之一是由數據庫管理系統提供統一的數據保護功能來保證數據的安全可靠和正確有效,數據庫的數據保護主要包括數據的安全性和完整性,本篇介紹一下數據庫的安全性,下一篇介紹數據庫的完整性

數據庫安全性概述

數據庫的安全是指保護數據庫以防止不合法使用所造成的數據泄露、更改或破壞。安全性問題不僅僅是數據庫系統所獨有的,計算機上的各項計算機系統都會存在不安全因素。

數據庫的不安全因素

  • 非授權用戶對數據庫的惡意存取和破壞
  • 數據庫中重要或敏感的數據泄露
  • 安全環境的脆弱性

安全標準簡介

計算機以及信息安全技術方面有一系列的安全標準,最有影響的當推TCSEC和CC這兩個標準

美國標準 TCSEC

TCSEC從安全策略、責任、保證和文檔4個方面來描述安全性級別劃分的指標,根據指標內容將系統劃分爲4組7個等級,依次是D、C(C1,C2)、B(B1,B2,B3)、A(A1),按系統可靠或可信程度逐漸增高

在這裏插入圖片描述

全球通用準則 CC

CC的文本由三部分組成,三個部分相互依存,缺一不可

  • 第一部分是簡介和一般模型,介紹CC中的有關術語、基本概念和一般模型以及與評估有關的一些框架
  • 第二部分是安全功能要求,列出了一系列類、子類和組件
  • 第三部分是安全保證要求,列出了一系列保證類、子類和組件

根據系統對安全保證要求的支持情況提出了評估保證級(EAL),從EAL1至WAL7共分爲7級,按保證程度逐漸增高

在這裏插入圖片描述

數據庫安全性控制

數據庫的安全性主要包括用戶身份鑑別、多層存取控制、審計、視圖和數據加密等多項安全技術共同來進行控制和保證

在這裏插入圖片描述

用戶身份鑑別

  • 靜態口令鑑別,如密碼
  • 動態口令鑑別,如手機令牌
  • 生物特徵鑑別,如人臉識別、指紋識別
  • 智能卡鑑別

存取控制

存取控制主要由用戶權限定義和合法權檢查機制一起組成,存取控制方法有自主存取控制和強制存取控制兩種方法

自主存取控制方法

通過 SQL 的GRANT 語句和REVOKE 語句實現

GRANT語句

GRANT用於對權限的授予,一般格式爲:

GRANT <權限>[,<權限>]...
ON<對象類型><對象名>[,<對象類型><對象名>]
TO <用戶>[,<用戶>]
[WITH GRANT OPTION]; //加上該語句後,被授權用戶可以轉授給例外的用戶

REVOKE語句

REVOKE用於對權限的收回, 一般格式爲:

REVOKE<權限>[,<權限>]...
ON<對象類型><對象名>[,<對象類型><對象名>]
FORM <用戶>[,<用戶>]
[CASCADE|RESTRICT]; //CASCADE可以當前用戶的權限收回,還可以將他授予該權限的其他用戶的該權限收回

GRANT語句和REVOKE語句示例

授予李明查詢student表的權限

GRANT select on table student to 李明

並允許李明將權限轉授給其他用戶

GRANT select on table student to 李明 WITH GRANT OPTION

將student的所有權限授予李明

GRANT ALL PRIVILEGES on table student to 李明 WITH GRANT OPTION

將student表的所有權限授予全部用戶

GRANT ALL PRIVILEGES on table student to PUBLIC

將查詢student表和修改name列的權限授給李明

GRANT select update(name) on table student to 李明 WITH GRANT OPTION

將李明查詢student表的權限收回

REVOKE select on table student form 李明 

將所有用戶對 student表 查詢的權限收回

REVOKE select on table student form PUBLIC 

將李明對student表中修改name列的權限收回

REVOKE update(name) to table student form 李明

將李明對查詢student表的權限收回,並收回他轉授該權限的用戶的查詢student的權限

REVOKE select on table student form 李明 CASCADE

創建數據庫模式的權限

對創建數據庫模式一類的數據庫對象的授權則由數據庫管理員在創建用戶時實現,一般格式:

CREATE USER <用戶名> [WITH][DBA|RESOURCE|CONNECT]

說明:

  • 只有系統的超級用戶纔有權創建一個新的數據庫用戶
  • 新創建的數據庫用戶有三種權限:CONNECT、RESOURCE和DBA
  • CREATE USER命令中如果沒有指定創建的新用戶的權限,默認該用戶擁有 CONNECT權限
  • 擁有RESOURCE權限的用戶能創建基本表和視圖,稱爲所創建對象的屬主,但不能創建模式,不能創建用戶
  • 擁有DBA權限的用戶是系統中的超級用戶,可以創建新的用戶、創建模式、創建基本表和視圖等;DBA擁有對所有數據庫對象的存取權限,還可以把這些權限授予給一般用戶

在這裏插入圖片描述
強制存取控制方法

在強制存取控制中,數據庫管理系統所管理的全部實體被分爲主體和客體兩大類

  • 主體是系統中的活動實體,既包括數據庫管理系統所管理的實際用戶,也包括代表用戶的各進程
  • 客體是系統中的被動實體,是受主體操縱的,包括文件、基本表、索引、視圖等

對於主體和客體,數據庫管理系統爲它們每個實例(值)指派一個敏感度標記

  • 絕密(TS)
  • 機密(S)
  • 可信(C)
  • 公開(P)

密級的次序是TS>=S>=C>=P

主體的敏感度標記稱爲許可證級別,客體的敏感度標記稱爲密級

強制存取控制機制就是通過對比主體的敏感度標記和客體的敏感度標記,最終確定主體是否可以存取客體,存取規則:

  1. 僅當主體的許可證級別大於或等於客體的密級時,該主體才能讀取相應的客體
  2. 僅當主體的許可證級別小於或等於客體的密級時,該主體才能寫相應的客體

ps:如果違反了規則2,就有可能把數據的密級從高流向低,造成數據的泄漏

強制存取控制是對數據本身進行密級標記,無論數據如何複製,標記與數據是不可分的整體,只有符合密級標記要求的用戶纔可以操縱數據,從而提供了更高級別的安全性

數據庫角色

數據庫角色是被命名的一組與數據庫操作相關的權限,角色是權限的集合。因此以爲一組具有相同權限的用戶創建一個角色,使用角色來管理數據庫權限可以簡化授權的過程

角色的創建

CREATE ROLE <角色名>

給角色授權

GRANR <權限>[,權限]...
ON <對象類型> 對象名
TO <角色>[,<角色>]...

將一個角色授予其他角色或其他用戶

GRANT <角色1>[,<角色2>]...
TO<角色3>[,<角色4>]...
[WITH GRANT OPTION]

角色權限的收回

REVOKE <權限>[,<權限>]...
ON <對象類型><對象名>
FORM <角色>[,<角色>]

視圖機制

爲不同的用戶定義不同的視圖,把數據庫對象限制在一定的範圍內。也就是說,通過視圖機制把要保密的數據對無權存取的用戶隱藏起來,從而自動對數據提供一定程度的安全保護
比如,我們可以授予某個用戶名這個視圖的查詢權限

grant select on xx_view to 被授權用戶名

或者授予這個用戶全部權限

grant all privileges on xx_view to 被授權用戶名

審計

審計功能把用戶對數據庫的所有操作自動記錄下來放入審計日誌中,審計員可以利用審計日誌監控數據庫中的各種行爲,重現導致數據庫現有狀況的一系列事件,找出非法存取數據的人、時間和內容等

審計事件

  • 服務器事件
  • 系統權限
  • 語句事件
  • 模式及對象事件

審計功能

  • 基本功能,提供多種審計查閱方式:基本的、可選的、有限的,等等
  • 提供多套審計規則
  • 提供審計分析和報表功能
  • 審計日誌管理功能
  • 系統提供的查詢審計設置及審計記錄信息的專門視圖

AUDIT和NOAUDIT語句

對修改某張表結構或修改表數據的操作進行審計

audit alter update on table_name

取消關於該表上的審計

noaudit alter update on table_name

數據加密

對於高度敏感性數據,還可以採用數據加密技術,加密的基本思想是根據一定的算法將原始數據 —— 明文 變換爲不可直接識別的格式 —— 密文,從而使得不知道解密算法的人無法獲知數據的內容

存儲加密

  • 透明存儲加密
  • 非透明存儲加密

傳輸加密

  • 鏈路加密,報文和報頭均加密,路由選擇信息
  • 端到端加密,僅加密報文,發送端加密,接收端解密,傳送的數據信息

其他安全性保護

爲了滿足較高安全等級數據庫管理系統的安全性保護要求,在自主存取控制和強制存取控制之外,還有推理控制以及數據庫應用中的隱蔽信道數據隱私保護等技術

借鑑

王珊,薩師煊.數據庫系統概論(第五版)[M].北京:高等教育出版社,2014:133-154.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章