數據庫安全性控制及控制流程和常用方法

在這裏插入圖片描述

Hi,我是無丶味,這篇博客是我對數據庫安全性的一些總結以及記錄一下我的學習。
記得養好好習慣:先贊後看

數據庫安全性控制

非法使用數據庫的情況

①編寫合法程序繞過數據庫管理系統及其授權機制
②直接或編寫應用程序執行非授權操作
③通過多次合法查詢數據庫從中推導出一些保密數據

計算機系統的安全模型

在這裏插入圖片描述
系統根據用戶標識鑑定用戶身份,合法用戶才准許進入計算機系統
數據庫管理系統還要進行存取控制,只允許用戶執行合法操作
操作系統有自己的保護措施
數據以密碼形式存儲到數據庫中

數據庫管理系統安全性控制模型

在這裏插入圖片描述

數據庫安全性控制流程及常用方法:

①用戶標識和鑑定

用戶身份鑑別方法:
1.靜態口令鑑別
2.動態口令鑑別
3.生物特徵鑑別
4.智能卡鑑別

②存取控制

常用存取控制方法:

自主存取控制

通過 SQL 的GRANT 語句和REVOKE 語句實現
用戶權限組成:數據對象、操作類型
定義用戶存取權限:定義用戶可以在哪些數據庫對象上進行哪些類型的操作
定義存取權限稱爲授權

關係數據庫系統中的存取權限
在這裏插入圖片描述

強制存取控制

強制存取控制規則
(1)僅當主體的許可證級別大於或等於客體的密級時,該主體才能讀取相應的客體
例如銀行的高管可以看到別人的帳戶餘額,而不能修改餘額
(2)僅當主體的許可證級別小於或等於客體的密級時,該主體才能寫相應的客體
例如銀行的員工可以修改餘額,但不能看到餘額

強制存取控制(MAC)是對數據本身進行密級標記,無論數據如何複製,標記與數據是一個不可分的整體,只有符合密級標記要求的用戶纔可以操縱數據。
實現強制存取控制時要首先實現自主存取控制
原因:較高安全性級別提供的安全保護要包含較低級別的所有保護
自主存取控制與強制存取控制共同構成數據庫管理系統的安全機制
在這裏插入圖片描述
先進行自主存取控制檢查,通過自主存取控制檢查的數據對象再由系統進行強制存取控制檢查,只有通過強制存取控制檢查的數據對象方可存取。

③視圖

④審計

⑤數據加密

防止數據庫中數據在存儲和傳輸中失密的有效手段

加密的基本思想
根據一定的算法將原始數據—明文(Plain text)變換爲不可直接識別的格式­—密文(Cipher text)

加密方法:
1.存儲加密
2.傳輸加密

存儲加密:
①透明存儲加密
內核級加密保護方式,對用戶完全透明
將數據在寫到磁盤時對數據進行加密,授權用戶讀取數據時再對其進行解密
數據庫的應用程序不需要做任何修改,只需在創建表語句中說明需加密的字段即可
內核級加密方法: 性能較好,安全完備性較高
②非透明存儲加密
通過多個加密函數實現

傳輸加密

鏈路加密:
在鏈路層進行加密
傳輸信息由報頭和報文兩部分組成
報文和報頭均加密

端到端加密:
在發送端加密,接收端解密
只加密報文不加密報頭
所需密碼設備數量相對較少,容易被非法監聽者發現並從中獲取敏感信息

其他安全性保護
推理控制:
處理強制存取控制未解決的問題
避免用戶利用能夠訪問的數據推知更高密級的數據

常用方法:
基於函數依賴的推理控制
基於敏感關聯的推理控制

隱蔽信道:
處理強制存取控制未解決的問題

數據隱私保護:
描述個人控制其不願他人知道或他人不便知道的個人數據的能力
範圍很廣:數據收集、數據存儲、數據處理和數據發佈等各個階段

授權:授予與回收

1.GRANT
GRANT語句的一般格式:

 GRANT <權限>[,<權限>]... 
       ON <對象類型> <對象名>[,<對象類型> <對象名>]TO <用戶>[,<用戶>]...
       [WITH GRANT OPTION];

語義:將對指定操作對象的指定操作權限授予指定的用戶

誰可以發出GRANT
1.數據庫管理員
2.數據庫對象創建者(即屬主Owner)
3.擁有該權限的用戶

接受權限的用戶 :
1.一個或多個具體用戶
2.PUBLIC(即全體用戶)

WITH GRANT OPTION子句:
指定:可以再授予
沒有指定:不能傳播

不允許循環授權
在這裏插入圖片描述

把查詢Student表權限授給用戶U1

      GRANT   SELECT 
      ON   TABLE   Student 
      TO   U1;
把對Student表和Course表的全部權限授予用戶U2和U3

      GRANT ALL PRIVILIGES 
      ON TABLE Student,Course 
      TO U2,U3;
把查詢Student表和修改學生學號的權限授給用戶U4
  
	  	GRANT UPDATE(Sno), SELECT 
		ON TABLE Student 
		TO U4;

2.REVOKE
授予的權限可以由數據庫管理員或其他授權者用REVOKE語句收回
REVOKE語句的一般格式爲:

    REVOKE <權限>[,<權限>]... 
    ON <對象類型> <對象名>[,<對象類型><對象名>]FROM <用戶>[,<用戶>]...[CASCADE | RESTRICT];

把用戶U4修改學生學號的權限收回

		REVOKE UPDATE(Sno)
		ON TABLE Student 
		FROM U4;

數據庫管理員:
擁有所有對象的所有權限
根據實際情況不同的權限授予不同的用戶

用戶:
擁有自己建立的對象的全部的操作權限
可以使用GRANT,把權限授予其他用戶

被授權的用戶:
如果具有“繼續授權”的許可,可以把獲得的權限再授予其他用戶
所有授予出去的權力在必要時又都可用REVOKE語句收回

數據庫角色

數據庫角色:被命名的一組與數據庫操作相關的權限
角色是權限的集合
可以爲一組具有相同權限的用戶創建一個角色
簡化授權的過程
1.角色的創建

CREATE  ROLE  <角色名> 

例:

創建一個角色 R1:
 CREATE  ROLE  R1;

2.給角色授權

 GRANT  <權限>[,<權限>]ON <對象類型>對象名  
 TO <角色>[,<角色>]
使用GRANT語句,使角色R1擁有Student表的	SELECTUPDATEINSERT權限
       GRANT SELECT, UPDATE, INSERT 
    	 ON TABLE Student 
    	 TO R1;

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

GRANT  <角色1>[,<角色2>]TO  <角色3>[,<用戶1>][WITH ADMIN OPTION]

將這個角色授予王平,張明,趙玲。使他們具有角色R1所包含的全部權限
    	 GRANT  R1 
    	 TO 王平,張明,趙玲;

該語句把角色授予某用戶,或授予另一個角色

授予者是角色的創建者或擁有在這個角色上的ADMIN OPTION

指定了WITH ADMIN OPTION則獲得某種權限的角色或用戶還可以把這種權限授予其他角色

一個角色的權限:直接授予這個角色的全部權限加上其他角色
授予這個角色的全部權限

4.角色權限的收回

REVOKE <權限>[,<權限>]ON <對象類型> <對象名>
FROM <角色>[,<角色>]
可以一次性通過R1來回收王平的這3個權限
     	  REVOKE  R1 
     	  FROM 王平;

用戶可以回收角色的權限,從而修改角色擁有的權限
REVOKE執行者是
角色的創建者
擁有在這個(些)角色上的ADMIN OPTION

在這裏插入圖片描述

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