數據庫安全性

一、計算機安全性概論

(一)核心概念
  • 數據庫安全性:保護數據庫免受非法使用導致的數據泄露、更改或破壞,是衡量數據庫系統的關鍵指標之一,與計算機系統安全性相互關聯。
  • 計算機系統安全性:通過各類安全保護措施,保障計算機硬件、軟件及數據安全,防止因偶然或惡意因素使系統受損、數據遭篡改或泄露。包含技術安全、管理安全和政策法律三個層面。
(二)安全標準
  1. TCSEC/TDI 標準

    (美國國防部)

    • 目的:為評估計算機系統敏感信息安全操作的可信度提供標準,為制造商設計滿足敏感應用安全要求的產品提供指導。
    • 安全級別(從低到高):D(最小保護)、C1(自主安全保護)、C2(受控存取保護)、B1(標記安全保護)、B2(結構化保護)、B3(安全域)、A1(驗證設計)。
    • 評估指標:安全策略(R1)、責任(R2)、保證(R3)、文檔(R4)。
  2. CC 標準

    (通用準則)

    • 結構:將信息產品安全要求分為安全功能要求(規范安全行為)和安全保證要求(解決功能實施問題),均采用 “類 - 子類 - 組件” 結構描述。
    • 評估保證級(EAL)與 TCSEC 對應關系:EAL2 對應 C1,EAL3 對應 C2,EAL4 對應 B1,EAL5 對應 B2,EAL6 對應 B3,EAL7 對應 A1。

二、數據庫安全控制措施

(一)用戶標識與鑒別
  • 作用:作為系統最外層安全保護,通過驗證用戶身份(如用戶名 / 口令)控制對系統的訪問。
(二)存取控制
  1. 核心機制
    • 定義用戶權限:明確用戶在哪些數據對象上可進行哪些操作(如查詢、插入、更新等),并登記到數據字典。
    • 合法權限檢查:DBMS 根據數據字典中的權限定義,對用戶操作請求進行合法性驗證,拒絕越權操作。
  2. 兩種控制方式
    • 自主存取控制(DAC)
      • 特點:用戶對不同數據對象有不同權限,可自主將權限授予其他用戶,靈活性高。
      • 實現方式:通過 SQL 的GRANT(授權)和REVOKE(收回權限)語句實現。
      • 權限要素:數據對象(如表、屬性列、視圖等)和操作類型(如SELECTINSERTUPDATE等)。
      • 示例
        • 授權:GRANT SELECT ON Student TO U1;(授予 U1 查詢 Student 表的權限)。
        • 收回權限:REVOKE UPDATE(Sno) ON Student FROM U4;(收回 U4 修改 Student 表中學號的權限)。
    • 強制存取控制(MAC)
      • 適用場景:對數據密級分類嚴格的場景(如軍事、金融),由系統自動控制,用戶無法直接干預。
      • 核心概念
        • 主體與客體:主體是活動實體(如用戶、進程),客體是被動實體(如數據對象)。
        • 敏感度標記:主體的標記為許可證級別,客體的標記為密級(如絕密、機密、公開等)。
      • 存取規則
        • 讀取規則:主體許可證級別≥客體密級,方可讀取客體。
        • 寫入規則:主體許可證級別 = 客體密級,方可寫入客體。
      • 與 DAC 的關系:二者結合構成 DBMS 安全機制,先進行 DAC 檢查,再進行 MAC 檢查。
(三)視圖機制
  • 作用:通過定義視圖限制用戶訪問范圍,DBA 為不同用戶創建特定視圖并授權,用戶只能操作視圖內的數據。

  • 示例

    CREATE VIEW CS_Student AS SELECT * FROM Student WHERE Sdept='CS'; -- 創建計算機系學生視圖
    GRANT SELECT ON CS_Student TO 王平; -- 授予王平查詢該視圖的權限
    
(四)審計
  • 作用:記錄用戶對數據庫的所有操作(如ALTERUPDATE等),存入審計日志,用于安全追溯、合規檢查和監控潛在威脅。

  • 特點:需消耗較多時間和空間,通常作為可選功能。

  • 示例

    AUDIT ALTER,UPDATE ON SC; -- 開啟對SC表的ALTER和UPDATE操作審計
    NOAUDIT ALL ON SC; -- 關閉對SC表的所有審計
    
(五)數據加密
  • 基本思想:通過算法將明文轉換為密文,防止未授權用戶獲取數據內容。
  • 主要方法
    • 替換法:用密鑰將明文字符轉換為密文字符。
    • 置換法:重新排列明文字符順序。
    • DES 標準:結合替換法和置換法的官方加密標準。

三、其他安全要點

(一)數據庫角色管理
  • 角色定義:一組與數據庫操作相關的權限集合,可批量管理具有相同權限的用戶。

  • 操作示例

    CREATE ROLE R1; -- 創建角色R1
    GRANT SELECT, UPDATE, INSERT ON Student TO R1; -- 為R1授權
    GRANT R1 TO 王平, 張明, 趙玲; -- 將角色授予用戶
    
(二)統計數據庫安全性
  • 問題:用戶可能通過合法統計查詢間接獲取敏感個體數據(如通過兩次工資總額查詢推斷他人工資)。
  • 解決原則:確保破壞安全的代價遠高于所獲利益,如限制查詢集合大小、增加干擾數據等。

WITH ADMIN OPTION 是數據庫中用于 角色或權限管理 的關鍵字,主要作用是讓被授權者(用戶或角色)擁有再授權的能力,即可以將自己擁有的角色或權限進一步授予其他用戶或角色。以下是詳細說明:

(三)角色授權
  1. 角色授權場景
    當向某個用戶授予角色時使用 WITH ADMIN OPTION,該用戶不僅擁有該角色的所有權限,還能將這個角色 授予其他用戶或角色,甚至可以收回其他用戶的該角色權限。
    示例

    -- 創建角色 R1
    CREATE ROLE R1;
    -- 授予用戶 U1 角色 R1,并允許其再授權
    GRANT R1 TO U1 WITH ADMIN OPTION;
    
    • U1 獲得 R1 角色的所有權限。
    • U1 可以執行 GRANT R1 TO U2; 將 R1 授予 U2,或執行 REVOKE R1 FROM U2; 收回 U2 的 R1 角色。
  2. 權限授權場景
    在部分數據庫(如 Oracle)中,對 系統權限 授權時使用 WITH ADMIN OPTION,允許被授權者將權限再授予他人。
    示例(Oracle):

    -- 授予用戶 U1 創建表的權限,并允許其再授權
    GRANT CREATE TABLE TO U1 WITH ADMIN OPTION;
    
    • U1 可執行 GRANT CREATE TABLE TO U2; 將權限授予 U2。

與 WITH GRANT OPTION 的區別

關鍵字適用場景授權對象再授權范圍
WITH ADMIN OPTION角色授權或系統權限授權角色或系統權限可授予用戶或角色,可遞歸授權
WITH GRANT OPTION對象權限授權(如表、視圖)對象權限(如 SELECT、INSERT、UPDATA)只能授予其他用戶,不可授予角色

示例對比

  • 角色授權
    GRANT R1 TO U1 WITH ADMIN OPTION;(U1 可將 R1 授予 U2 或 R2)。
  • 對象權限授權
    GRANT SELECT ON Table1 TO U1 WITH GRANT OPTION;(U1 可將 Table1 的查詢權限授予 U2,但不能授予角色)。

習題:
在這里插入圖片描述
在這里插入圖片描述

解析:

第 1 題

數據庫的安全性是指保護數據庫以防止不合法的使用所造成的數據泄露、更改或破壞。確保只有授權用戶能訪問和操作數據庫中的數據,維護數據的保密性、完整性和可用性。

第 2 題

  • 人為因素:如惡意的黑客攻擊,通過 SQL 注入漏洞獲取或篡改數據庫數據;內部人員越權訪問,比如普通員工非法查看敏感財務數據。
  • 自然因素:如服務器所在機房遭遇火災、洪水等自然災害,可能導致數據庫存儲設備損壞,數據丟失。
  • 系統漏洞:數據庫管理系統本身存在安全漏洞,未及時打補丁,被攻擊者利用來突破安全防線。

第 3 題

  • 用戶身份鑒別:通過用戶名 - 密碼、生物識別(指紋、面部識別等)等方式確認用戶身份。
  • 存取控制:包括自主存取控制(DAC),用戶可根據自己意愿對數據進行授權;強制存取控制(MAC),由系統根據密級等因素統一控制用戶對數據的訪問。
  • 視圖機制:為不同用戶定義不同視圖,限制用戶只能看到視圖中的數據,間接實現數據安全。
  • 審計:對數據庫的操作進行記錄,便于事后追蹤分析,發現非法操作。
  • 數據加密:對數據庫中的數據加密存儲,防止數據在存儲或傳輸過程中被竊取。

第 4 題

  • 自主存取控制(DAC):用戶對自己擁有的對象(表、視圖等)有一定的自主控制權,可根據需要將自己的權限授予其他用戶。例如,數據庫管理員創建用戶 A 后,用戶 A 可將自己對某張表的查詢權限授予用戶 B。這種方式靈活,但安全性相對弱,可能因為用戶誤操作或被欺騙而導致權限擴散。
  • 強制存取控制(MAC):系統為主體(用戶、進程等)和客體(數據對象)都定義敏感度標記(如絕密、機密、秘密等)。只有當主體的敏感度標記不低于客體的敏感度標記時,主體才能讀取客體;主體的敏感度標記不高于客體的敏感度標記時,主體才能寫入客體。這種方式更嚴格,常用于對安全性要求極高的場景,如軍事、金融等領域。

第 5 題

GRANT ALL PRIVILEGES ON 學生, 班級
TO U1
WITH GRANT OPTION;

解釋:ALL PRIVILEGES 表示所有權限,ON 后跟要授權的表名,TO 指定被授權用戶,WITH GRANT OPTION 使 U1 可將權限再授予其他用戶。

GRANT SELECT, UPDATE(家庭住址) ON 學生
TO U2;

解釋:授予 U2 對 “學生” 表的 SELECT(查看)權限,以及對 “家庭住址” 字段的 UPDATE(更新)權限 。

GRANT SELECT ON 班級
TO PUBLIC;

解釋:PUBLIC 代表所有用戶,此語句將 “班級” 表的 SELECT(查看)權限授予所有用戶。

GRANT SELECT, UPDATE ON 學生
TO R1;

解釋:將 “學生” 表的 SELECT(查詢)和 UPDATE(更新)權限授予角色 R1。

GRANT R1 TO U1
WITH ADMIN OPTION;

解釋:將角色 R1 授予 U1,WITH ADMIN OPTION 使 U1 可將角色 R1 再授予其他角色。

第 6 題

GRANT SELECT ON 職工, 部門
TO 王明;
GRANT INSERT, DELETE ON 職工, 部門
TO 李勇;
-- 先創建視圖
CREATE VIEW EmpSelfView AS
SELECT * FROM 職工
WHERE 職工號 = CURRENT_USER; GRANT SELECT ON EmpSelfView
TO ALL;

解釋:先創建視圖 EmpSelfView,視圖中只包含當前用戶(職工)自己的記錄,然后將該視圖的 SELECT 權限授予所有職工(可理解為每個職工自己 )。

GRANT SELECT, UPDATE(工資) ON 職工
TO 劉星;
GRANT ALTER ON 職工, 部門
TO 張新;

解釋:ALTER 權限用于修改表結構,將此權限授予張新。

GRANT ALL PRIVILEGES ON 職工, 部門
TO 周平
WITH GRANT OPTION;
-- 創建視圖
CREATE VIEW DeptSalaryStatsView AS
SELECT 部門號, MAX(工資) AS max_salary, MIN(工資) AS min_salary, AVG(工資) AS avg_salary
FROM 職工
GROUP BY 部門號; GRANT SELECT ON DeptSalaryStatsView
TO 楊蘭;

解釋:先創建視圖 DeptSalaryStatsView 計算每個部門的最高、最低和平均工資,然后將該視圖的 SELECT 權限授予楊蘭,這樣她看不到具體個人工資。

第 7 題

REVOKE SELECT ON 職工, 部門
FROM 王明;
REVOKE INSERT, DELETE ON 職工, 部門
FROM 李勇;
REVOKE SELECT ON EmpSelfView
FROM ALL;
DROP VIEW EmpSelfView;
REVOKE SELECT, UPDATE(工資) ON 職工
FROM 劉星;
REVOKE ALTER ON 職工, 部門
FROM 張新;
REVOKE ALL PRIVILEGES ON 職工, 部門
FROM 周平;
REVOKE SELECT ON DeptSalaryStatsView
FROM 楊蘭;
DROP VIEW DeptSalaryStatsView;

第 8 題

  • 主體:是指請求訪問客體的活動實體,如用戶、進程等。主體發起對數據庫中數據的訪問操作請求。
  • 客體:是指被訪問的對象,即數據庫中的數據,如表、視圖、記錄等。
  • 敏感度標記:對主體和客體都賦予的一種安全屬性。用于標識主體的訪問權限級別和客體的敏感程度。例如,將數據分為絕密、機密、秘密、公開等不同級別,主體只有具備相應級別或更高級別權限才能訪問對應級別的客體。

第 9 題

例如,在一個軍事數據庫中,定義主體(用戶)分為士兵(敏感度標記為 “秘密”)、軍官(敏感度標記為 “機密”)、將軍(敏感度標記為 “絕密”);客體(數據)中部隊人員名單為 “秘密”,作戰計劃為 “機密”,戰略部署為 “絕密”。

  • 士兵只能訪問部隊人員名單(因為其敏感度標記 “秘密” 等于客體 “部隊人員名單” 的敏感度標記 ),不能訪問作戰計劃和戰略部署。
  • 軍官可以訪問部隊人員名單和作戰計劃(軍官的 “機密” 敏感度標記不低于 “秘密” 和 “機密” 級別的客體 ),但不能訪問戰略部署。
  • 將軍可以訪問所有數據(將軍的 “絕密” 敏感度標記不低于其他所有客體的敏感度標記 )。

第 10 題

  • 數據庫審計功能:是指對數據庫的操作進行記錄和跟蹤,包括操作時間、操作用戶、操作類型(如 SELECTINSERTUPDATEDELETE 等)、操作對象(表、視圖等)等信息。這些記錄存儲在審計日志中。
  • 提供審計功能的原因:
    • 安全追溯:當數據庫出現安全問題(如數據被非法篡改、泄露)時,可通過審計日志追溯操作源頭,找到違規操作的用戶或進程。
    • 合規要求:許多行業(如金融、醫療)有嚴格的數據安全合規規定,審計功能可幫助企業滿足監管要求,證明對數據操作的合規性。
    • 安全監控:實時或定期查看審計日志,可發現潛在的安全威脅,如異常頻繁的訪問、未授權的操作嘗試等,以便及時采取措施防范。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/82223.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/82223.shtml
英文地址,請注明出處:http://en.pswp.cn/web/82223.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【Linux網絡編程】網絡層IP協議

目錄 IP協議的協議頭格式 網段劃分 特殊的IP地址 IP地址的數量限制 私有IP地址和公網IP地址 路由 IP協議的協議頭格式 4位版本號 :指定IP協議的版本,對于IPv4,版本號就是4。 4位首部長度:表名IP協議報頭的長度,單…

“候選對話鏈”(Candidate Dialogue Chain)概念

目錄 一、定義與形式 二、生成過程詳解 1. 語言模型生成(LLM-Based Generation) 2. 知識圖譜支持(KG-Augmented Generation) 3. 策略調控(Policy-Driven Planning) 三、候選對話鏈的屬性 四、候選對…

Unity中的JsonManager

1.具體代碼 先貼代碼 using LitJson; using System.IO; using UnityEngine;/// <summary> /// 序列化和反序列化Json時 使用的是哪種方案 有兩種 JsonUtility 不能直接序列化字典 ligJson可以序列化字典 /// </summary> public enum JsonType {JsonUtilit…

50天50個小項目 (Vue3 + Tailwindcss V4) ? | Split Landing Page(拆分展示頁)

&#x1f4c5; 我們繼續 50 個小項目挑戰&#xff01;—— SplitLandingPage 組件 倉庫地址&#xff1a;https://github.com/SunACong/50-vue-projects 項目預覽地址&#xff1a;https://50-vue-projects.vercel.app/ 在這篇文章中&#xff0c;我們將實現一個交互式的左右面板…

機器學習-ROC曲線?? 和 ??AUC指標

1. 什么是ROC曲線&#xff1f;?? ROC&#xff08;Receiver Operating Characteristic&#xff0c;受試者工作特征曲線&#xff09;是用來評估??分類模型性能??的一種方法&#xff0c;特別是針對??二分類問題??&#xff08;比如“患病”或“健康”&#xff09;。 ?…

Docker容器創建Redis主從集群

利用虛擬機中的三個Docker容器創建主從集群&#xff0c;容器信息&#xff1a; 容器名角色IP映射端口r1master192.168.150.1017001r2slave192.168.150.1017002r3slave192.168.150.1017003 啟動多個redis實例 新建一個docker-compose文件來構建主從集群&#xff1a; 文件內容&…

手寫ArrayList和LinkedList

項目倉庫&#xff1a;https://gitee.com/bossDuy/hand-tear-collection-series 基于b站up生生大佬&#xff1a;https://www.bilibili.com/video/BV1Kp5tzGEc5/?spm_id_from333.788.videopod.sections&vd_source4cda4baec795c32b16ddd661bb9ce865 LinkedList package com…

每日c/c++題 備戰藍橋杯(Cantor 表)

Cantor 表的探究與實現 在數學中&#xff0c;有理數的可枚舉性是一個令人驚嘆的結論。今天&#xff0c;就讓我們一起深入探討這個經典問題&#xff0c;并分享一段精心編寫的代碼&#xff0c;揭開這一數學奧秘的神秘面紗。 問題背景 在 19 世紀末&#xff0c;偉大的數學家康托…

解決idea與springboot版本問題

遇到以下問題&#xff1a; 1、springboot3.2.0與jdk1.8 提示這個包org.springframework.web.bind.annotation不存在&#xff0c;但是pom已經引入了spring-boot-starter-web 2、Error:Cannot determine path to tools.jar library for 17 (D:/jdk17) 3、Error:(3, 28) java: …

Notepad++找回自動暫存的文件

場景&#xff1a; 當你沒有保存就退出Notepad&#xff0c;下次進來Notepad會自動把你上次編輯的內容顯示出來&#xff0c;以便你繼續編輯。除非你手動關掉當前頁面&#xff0c;這樣Notepad就會刪除掉自動保存的內容。 問題&#xff1a; Notepad會將自動保存的文件地址,打開Note…

yolov12畢設前置知識準備 1

1 什么是目標檢測呢&#xff1f; 目標檢測&#xff08;Object Detection&#xff09;主要用于識別圖像或視頻中特定類型物體的位置&#xff0c;并標注其類別。 簡單來說&#xff0c;就是讓計算機像人類一樣 “看懂” 圖像內容&#xff0c;不僅能識別出物體&#xff08;如人、…

unix/linux source 命令,其內部結構機制

要理解 source (或 .) 命令的內部結構機制,我們需要戴上“操作系統”和“解釋器設計”的眼鏡,深入到 Shell 如何管理其狀態以及如何執行命令的層面。 雖然我們無法直接看到 Shell 內部的 C 代碼(除非我們去閱讀 Bash 或 Zsh 的源碼),但我們可以基于其行為和操作系統的原理…

計算機網絡學習20250528

地址解析協議ARP 實現IP地址和Mac地址的轉換 ARP工作原理&#xff1a; 每臺主機或路由器都有一個ARP表&#xff0c;表項&#xff1a;<IP地址&#xff0c;Mac地址&#xff0c;TTL>&#xff08;TTL一般為20分鐘&#xff09; 主機產生ARP查詢分組&#xff0c;包含源目的IP地…

【Rust】Rust獲取命令行參數以及IO操作

?? 歡迎大家來到景天科技苑?? &#x1f388;&#x1f388; 養成好習慣&#xff0c;先贊后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者簡介&#xff1a;景天科技苑 &#x1f3c6;《頭銜》&#xff1a;大廠架構師&#xff0c;華為云開發者社區專家博主&#xff0c;…

微服務中引入公共攔截器

本文使用的微服務版本為springcloudAlbaba :2021.0.4.0 微服務工程&#xff0c;一般公共的東西都放入一個工程&#xff0c;別的微服務都會引入這個工程&#xff0c;比如common-service,那么就可以在這個工程編寫一個攔截器&#xff1a;&#xff0c;比如&#xff1a; public cla…

Linux SLES 系統的/var/log/下的常見文件及其作用

在 SUSE Linux Enterprise Server&#xff08;SLES&#xff09; 系統中&#xff0c;/var/log/ 目錄是系統日志的集中地&#xff0c;存儲了各種服務、內核、系統消息的日志。以下是一些在 /var/log/ 下常見的日志文件及其功能&#xff1a; &#x1f4c2; 常見日志文件及功能 文…

oracle goldengate同步SQL server到SQL server的實時數據同步

參考文檔 https://docs.oracle.com/en/middleware/goldengate/core/19.1/oggmp/oracle-goldengate-classic-sql-server.html#GUID-948C5BEE-E7A0-4CE2-BE09-F83145677D18 https://docs.oracle.com/en/middleware/goldengate/core/21.3/ggcab/other-programs-and-settings-sql-…

語音轉文字工具

平時工作和學習比較忙&#xff0c;可能沒時間聽講座&#xff0c;只能看回放&#xff0c;回訪也很長&#xff0c;這時&#xff0c;我們可以借助語言轉文字&#xff0c;通過閱讀文字快速了解講座的重點&#xff0c;今天給大家分享一個本人經常用的語言轉文字工具&#xff0c;改工…

硬件實時時鐘(RTC)

硬件實時時鐘&#xff08;RTC&#xff09;詳解 硬件實時時鐘&#xff08;Real-Time Clock&#xff0c;RTC&#xff09;是計算機主板上的一個獨立計時芯片&#xff0c;用于在系統關機后持續記錄時間。它不依賴操作系統&#xff0c;由紐扣電池&#xff08;如CR2032&#xff09;供…

pycharm debug的時候無法debug到指定的位置就停住不動了

報錯大致是這樣的&#xff0c;但是直接run沒有問題&#xff0c;debug就停住不動了 Traceback (most recent call last): File "/home/mapengsen/.pycharm_helpers/pydev/_pydevd_bundle/pydevd_comm.py", line 467, in start_client s.connect((host, port)) Timeou…