詳解開源數據庫審計平臺Yearning

基本概念

數據庫審計(簡稱DBAudit)能夠實時記錄網絡上的數據庫活動,對數據庫操作進行細粒度審計的合規性管理,對數據庫遭受到的風險行為進行告警,對攻擊行為進行阻斷。它通過對用戶訪問數據庫行為的記錄、分析和匯報,用來幫助用戶事后生成合規報告、事故追根溯源,同時加強內外部數據庫網絡行為記錄,提高數據資產安全。

數據庫審計是數據庫安全技術之一,數據庫安全技術主要包括:

  • 數據庫漏掃

  • 數據庫加密

  • 數據庫防火墻

  • 數據脫敏

  • 數據庫安全審計系統

概括起來主要表現在以下三個層面:

  1. **管理風險:**主要表現為人員的職責、流程有待完善,內部員工的日常操作有待規范,第三方維護人員的操作監控失效等等,離職員工的后門,致使安全事件發生時,無法追溯并定位真實的操作者。SQL審核是保證數據庫DDL 和 DML 安全使用、SQL變更可追溯、降低線上數據事故概率的重要手段。

  2. **技術風險:**Oracle, SQL Server是一個龐大而復雜的系統,安全漏洞如溢出, 注入層出不窮,每一次的CPU(Critical Patch Update)都疲于奔命, 而企業和政府處于穩定性考慮,往往對補丁的跟進非常延后,更何況通過應用層的注入攻擊使得數據庫處于一個無辜受害的狀態。

  3. **審計層面:**現有的依賴于數據庫日志文件的審計方法,存在諸多的弊端,比如:數據庫審計功能的開啟會影響數據庫本身的性能、數據庫日志文件本身存在被篡改的風險,難于體現審計信息的有效性和公正性。此外,對于審計數據的挖掘和迅速定位也是任何審計系統必須面對和解決的一個核心問題之一。

行業產品現狀

  1. 企業產品

就國內而言,做數據庫審計產品的公司越來越多,比如:安華金和、天融信、安恒、綠盟、Themis宜信公司等等。

  1. 云平臺數據庫審計

阿里云、AWS等都有自己的數據庫審計平臺。

  1. 開源類

本文即將介紹的Yearning。

開源數據庫審計平臺Yearning

簡介

Yearning是一個輕量級的Web端的MySQL SQL語句審核平臺,提供查詢審計,SQL審核,SQL回滾,自定義工作流等多種功能。Yearning的前端是基于Vue.js構建的,它還提供SQL語法高亮、自動補全和智能提示、可視化等。

Yearning自身包含了一套通常適用的審核規范,基本上能滿足日常需要,同時規范了日常開發需求所涉及到的SQL變動,在Yearning平臺的輔助下,日常的SQL變動也更加貼近SQL使用的規范化、標準化的要求,同時100%基于GO語言研發的Yearning也可以通過自定義二次開發(遵循AGPL協議)增加一些符合自己審核策略。

Yearning的安裝十分簡單,它只依賴一個mysql數據庫用于存儲工單的數據。官方提供了安裝手冊用于在linux上安裝Yearning。除此之外,Yearning還支持容器化部署,安裝包內置了Dockerfile,方便快捷。同時Yearning還支持二次開發,二次開發的同學可以自己構建發布。

主要功能Feature

  • SQL查詢

  • 查詢工單

  • 導出

  • 自動補全,智能提示

  • 查詢語句審計

  • SQL審核

  • 流程化工單

  • SQL語句檢測與執行

  • SQL回滾

  • 歷史審核記錄

  • 推送

  • E-mail工單推送

  • 釘釘webhook機器人工單推送

  • 用戶權限及管理

  • 角色劃分

  • 基于用戶的細粒度權限

  • 注冊

  • 其他

  • todoList

  • LDAP登錄

  • 動態審核規則配置

  • AutoTask自動執行

兼容性與依賴

  1. Yearning 不依賴于任何第三方SQL審核工具作為審核引擎,內部已自己實現審核/回滾相關邏輯。
  • 僅依賴Mysql數據庫。mysql版本必須5.7及以上版本

  • Yearning日志僅輸出error級別,沒有日志即可認為無運行錯誤!

  • Yearning 的前端管理界面基于1080p分辨率開發僅支持1080p及以上顯示器訪問

  1. Yearning目前只支持MySQL。

  2. Yearning SQL審核平臺目前兼容99%的Mysql 標準SQL語法。已知不支持的語句類型有:

  • 復雜的查詢語句(多表,多函數,非必現。并不是所有復雜語句不支持)

  • create table like 語句

  • 視圖語句

  • 外鍵相關語句

部分功能展示

1. 登陸界面

2. 用戶模塊

2.1 Dashboard

dashboard主要展示Yearning各項數據包括用戶數/數據源數/工單數/查詢數以及其他圖表。個人信息欄內用戶可以修改密碼/郵箱/真實姓名,同時可以查看該用戶權限以及申請權限

2.2 我的工單

展示用戶提交的工單信息,對于執行失敗/駁回的工單點擊詳細信息后可以重新修改sql并提交,對于執行成功的工單可以查看回滾語句并且快速提交SQL。

2.3 提交****工單(DDL&DML審核)

提交DDL/DML相關SQL語句的執行審核,需要指定SQL語句內容(DDL或DML語句)、SQL執行的數據庫,執行時間/頻率、工單審核人等信息。此處的SQL編輯器支持語法高亮、自動補全等。等審核人審核通過后,該DDL/DML語句才可按配置定時執行。

2.4 查詢數據庫

當用戶需要查詢/導出數據時,需要提交查詢審核申請單,填寫好查詢說明、查詢條件預估所需的查詢時間等信息,待審核人審核通過后,用戶方可進入查詢頁面進行查詢。

在查詢頁面期間,用戶所提交的查詢語句均會進行審計記錄,且僅支持查詢語句,不可使用非查詢語句。

3. 審核模塊

3.1 工單審核

管理員審核用戶提交的工單(DDL/DML語句執行申請),管理員可以通過或者駁回用戶的工單請求,如果審核通過,由執行人(Yearning中的角色種類之一)來點擊執行按鈕。

3.2 查詢審核

管理員審核用戶查詢請求。

3.3 權限審核

管理員用戶的權限審核

4. 管理模塊

4.1 用戶管理

創建/修改/刪除用戶。創建用戶時需要指定用戶角色(操作人/執行人/管理員等)以及部門等其他信息。

4.2 數據庫管理

添加/修改/刪除數據源。可以通過數據庫地址(本地或公網訪問地址)、端口號以及數據庫的賬號密碼來關聯不同的數據庫,包括:本地的MySQL數據庫;部署在公網服務器的MySQL數據庫;阿里云、AWS等云平臺的MySQL數據庫等,都可以添加到Yearning的數據源之中。

關聯之后,可以使用Yearning來對他們進行統一的管理。

4.3 權限管理

創建/修改權限組。Yearning中通過權限組的方式來進行權限控制,將不同的用戶加入到不同的權限組之中,來賦予不同用戶不同的權限。具體參見本文后續的Yearning中的權限設計章節

5. 通知模塊

Yearning還支持進行消息推送。在設置中配置消息推送渠道,支持釘釘機器人/郵件;還支持OpenLDAP平臺。

6. 內置SQL審核規則

Yearning內置了多種常見場景的SQL審核規則,管理員開啟對應的規則后,用戶提交的工單(SQL語句)會先經過內置審核規則的過濾,內置規則判定通過后,才會到達人工審核的流程。以此方式可以大大減少人工審核的工作量。

除了使用Yearning提供的內置審核規則之外,100%基于GO語言研發的Yearning也可以通過自定義二次開發(遵循AGPL協議)增加一些符合自己審核策略。

下表展示了Yearning中原生支持的內置的審核規則

規則類型

規則描述

規則類型

規則描述

DDL

強制表必須擁有表注釋

DML

Insert最大插入行數上限

DDL

強制表字段必須擁有列注釋

DML

允許update/insert?語句使用limit關鍵字

DDL

強制非timestamp類型字段必須為NOT?NULL

DML

不允許隱式轉換

DDL

強制非text,blob,json,timestamp類型字段必須擁有默認值

DML

檢查Insert語句中插入的字段名是否存在

DDL

強制float/double類型變更為decimal類型

DML

強制DML語句必須擁有where條件

DDL

強制自增列初始值為1

DML

禁止DML語句使用Order?by子句

DDL

強制主鍵名稱為ID

DML

禁止DML語句使用Select子句

DDL

強制主鍵為自增列

DML

DML最大影響行數

DDL

強制主鍵必須使用無符號標志unsigned

Pt-osc

開啟Pt-poc

DDL

開啟索引名稱規范(索引名必須以idx_為開頭

Pt-osc

pt-osc可執行文件路徑,精確到文件本身。?如:?/usr/bin/pt-online-schema-change

DDL

開啟mysql關鍵詞檢查

Pt-osc

當表體積大于該值且開啟pt-osc時,該表DDL語句將使用pt-osc進行變更?單位:M

DDL

允許跨庫表遷移

Pt-osc

--chunk-time?當需要復制的塊大于設置的chunk_size時則不復制

DDL

允許刪除表

Pt-osc

--no-drop-new-table?如果復制原始表失敗,則刪除新表

DDL

允許刪除庫

Pt-osc

--no-drop-old-table?重命名后刪除原始表。在原表被成功重命名以讓新表取而代之之后,如果沒有錯誤,pt-osc將在默認情況下刪除原表。如果有任何錯誤,pt-osc將保留原始表

DDL

允許主鍵類型為非int/bigint

Pt-osc

--no-check-replication-filters?如果在任何服務器上設置了replication?filter?則中止。pt-osc將查找replication?filter的服務器選項,如binlog_ignore_db和replicate_do_db。如果它找到任何這樣的filter,它將終止并產生一個錯誤。

DDL

允許索引名為空

Pt-osc

--no-check-alter?解析指定的——alter并嘗試警告可能的意外行為。

DDL

允許單個工單提交多條DDL語句

Pt-osc

--no-check-unique-key-change?不檢查唯一索引

DDL

允許字段進行類型轉換(不同字段之間的轉換或長度從長變短。如:int?->?bigint,int(50)?->?int(20))

Pt-osc

--print?打印OSC執行的SQL語句。

DDL

允許使用after/first

Pt-osc

--alter-foreign-keys-method?當pt-osc重命名原始表以讓新表取而代之時,外鍵“跟隨”已重命名的表,并且必須更改外鍵以引用新表。

DDL

允許創建視圖

Pt-osc

--set-vars?lock_wait_timeout=?鎖定等待時間?單位:秒

DDL

允許創建分區表

Pt-osc

--chunk-time?動態調整塊的??避免每個數據副本花費很長時間執行。

DDL

允許添加bit,enum,set類型字段

Pt-osc

--sleep

DDL

create/alter?表或字段時允許的Collate范圍。多個請使用逗號進行分割

Pt-osc

--max-lag?復制最大延遲時間.單位:秒

DDL

create/alter?表或字段時允許的Charset范圍。多個請使用逗號進行分割

Pt-osc

--check-interval?檢查間隔時間。

DDL

建表必須擁有的字段,多個字段請用逗號分隔

Pt-osc

--max-load?Threads_connected:?最大線程連接數

DDL

單個索引指定字段上限

Pt-osc

--max-load?Threads_running:?最大線程運行數

DDL

單個表最多允許幾個索引

Pt-osc

--critical-load?Threads_connected?關鍵線程連接數

DDL

DDL最大影響行數

Pt-osc

--critical-load?Threads_running:?關鍵線程運行數

DDL

char字段最大長度

Pt-osc

--recursion-method?發現副本的首選遞歸方法。

DDL

表名最大長度限制

7. AutoTask自動執行任務

用戶可通過該功能設置自動執行任務,在任務配置中設置任務SQL語句的類型(Insert/Update/Delete)、任務的目標數據庫、表格以及最大影響行數等條件。當提交的DML語句符合配置的任務條件時,將會自動執行,無需審核人審核。該功能僅限DML語句使用,需要慎重使用!

Yearning中的權限設計

1. 理念

Yearning自2.1.7版本之后采用權限組的方式進行權限授權,權限最低下放至數據源。

Yearning中用戶先以角色的形式分為三大類,分別為 提交人/操作人/超級管理員。其中超級管理員角色為可見管理頁面角色, 提交人/操作人為非可見管理頁面角色。通過角色Yearning在細粒度權限劃分之前先將用戶分類。使管理類權限不會出現在使用者細粒度權限劃分中

可根據每個用戶的實際需求配置相應ddl/dml/查詢數據源。每一類權限相互獨立互不干擾。

2. 權限種類

在Yearning中權限共分為2大類

  1. 角色權限

  2. 細粒度權限

角色權限: 提交人/操作人/超級管理員 該權限主要用來劃定各用戶權限邊界并規定功能入口

細粒度權限: DML/DDL/查詢的數據源訪問權限,查詢上級審核人

3. 如何分配權限

**角色權限:**超級管理員在新建用戶時可自行設置對應角色。LDAP用戶登錄默認第一次登錄均為提交人角色。可在登錄后由超級管理員修改角色(必須在賦權之前確定好用戶的角色)

細粒度權限: 超級管理員建立權限組并將單個或多個權限組賦予用戶,使用戶繼承權限組的細粒度權限。

總結

Yearning是一款比較流行且成熟的開源MySQL SQL審計平臺,它的定位是面向中小型企業/組織/個人的輕量級平臺。它可以幫助開發者快速的完成SQL語句的語法的審核、檢測、執行和回滾等操作。

Yearning自身包含了一套通常適用的審核規范,基本上能滿足日常需要,同時規范了日常開發需求所涉及到的SQL變動,在Yearning平臺的輔助下,日常的SQL變動也更加貼近SQL使用的規范化、標準化的要求,同時100%基于GO語言研發的Yearning也可以通過自定義二次開發(遵循AGPL協議)增加一些符合自己審核策略,但是它的審核引擎Juno不是開源的。同時基于Vue.js開發的前端平臺,提供了SQL語法高亮、自動補全和智能提示、可視化等用戶體驗較好的交互形式,也為它增色不少。

審核規則這一塊的邏輯全部都是在JS中傳遞和處理的,使得它在面對大規模數據場景時,性能會遇到瓶頸。除此之外,只支持MySQL的限制,也讓人覺得多少有點美中不足。

參考鏈接

https://github.com/cookieY/Yearning

https://guide.yearning.io/

轉至:https://developer.aliyun.com/article/790865

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

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

相關文章

無人智能貨柜:提升購物體驗

無人智能貨柜:提升購物體驗 隨著移動支付的普及,人們日常生活中的主要場景已經滲透了這一支付方式。同時,無人智能貨柜作為購物的重要渠道,正在嶄露頭角。通過人工智能、圖像識別和物聯網技術的應用,無人智能貨柜將使購…

什么是復費率電表?

隨著科技的不斷進步和人們對能源管理的日益重視,復費率電表逐漸成為我國電力系統中不可或缺的一員。復費率電表是一種能夠實現電能計量、峰谷電價劃分以及負荷控制等多功能的智能電表,它采用先進的通信技術和計算機算法,對用戶的用電行為進行…

nginx.conf 配置文件 詳細解釋

文章目錄 nginx.conf 是 Nginx 的主要配置文件,其中可以配置許多模塊來定義服務器行為。以下是一些常見的 Nginx 模塊以及它們的作用:1. **http 模塊**:2. **server 模塊**:3. **location 模塊**:4. **events 模塊**&a…

軟件系統測試有哪些測試流程?系統測試報告編寫注意事項

在軟件開發的過程中,系統測試是至關重要的一環,它的目的是驗證和評估軟件產品是否符合預期的質量標準,以確保系統的穩定性、可靠性和安全性。 一、軟件系統測試的測試流程 1、需求分析與測試計劃制定:根據需求分析確定測試目標、…

軟件開發及交付的項目管理角色

在軟件開發及交付過程中,通常會涉及不同的角色和職責,包括業務角色、技術角色和管理角色。這些角色在項目管理中發揮著不同的作用,以確保項目的成功和交付高質量的產品。 業務角色:包括產品經理、業務分析師和業務運營人員等職位…

外貿電商網站用什么服務器好?

外貿電商網站用什么服務器好? 電商網站選好域名后,接著就是為網站選擇一個好的網站服務器,截止2015年初,國內站長中約有三百多萬的網站存放在美國服務器,美國服務器為什么會有如此之多的用戶選擇使用呢,站…

張弛聲音變現課,青春劇配音實用攻略

在為青春劇添聲時,配音藝術家須要捕獲并傳達劇中年輕角色的活潑精神、成長道路上的激情,以及他們在面對友情、愛情和理想時的情緒起伏。青春劇特別關注年輕人的成長故事,著重描繪他們在成長中的經歷和變化。下面是一些為青春劇配音的建議&…

TP5制作圖片壓縮包

目標:將多張圖片制成在一個壓縮包內,供調取使用 public function test() {//引入壓縮包類$zip new \ZipArchive();//新定義一個zip包$zipname ROOT_PATH./public/zip/.date("YmdHis").rand(111,999)..zip;if ($zip->open($zipname, \ZipArchive::CREATE) true…

2023年跨界融合創新應用合作發展大會-核心PPT資料下載

一、峰會簡介 本次大會主題為“創新地理信息價值 服務數字中國建設”。1天主論壇和6場專題論壇的報告,圍繞主題深入探討地理信息產業與相關重要應用領域的跨界融合和深化合作。 本屆大會將搭建地理信息產業與旅游、林業、環保、氣象、住建、水利、農業農村、電力等…

數據報文去哪兒了

背景 今天遇到一個詭異的現象,當接口附加一個IP時,主IP業務正常,附加IP死活不行,tcpdump抓包確可以正常抓到到業務的報文,但是在PREROUTING raw添加規則確沒有命中,說明報文沒有到netfilter框架內&#xff…

RTL8762D SDK

0 Preface/Foreword SDK: Software Development kit 1、硬件介紹 1.1 General Description A624RO基本信息: ultra-low-powerBluetooth 5.1 low energy applicationsa leading RF transceiverlow-power ARM Cortex-M4FIR transceiver 1.1.1 MCU platform MCU…

openssl加解密-干貨分享

0.需要包含的頭文件和預定義常量 #include <openssl/rand.h>#include <fstream>#include <openssl/aes.h>#include <openssl/rand.h>// 加密密鑰和初始化向量&#xff08;IV&#xff09;長度#define AES_KEY_LENGTH 32#define AES_IV_LENGTH 16 1.密…

競賽選題 題目:垃圾郵件(短信)分類 算法實現 機器學習 深度學習 開題

文章目錄 1 前言2 垃圾短信/郵件 分類算法 原理2.1 常用的分類器 - 貝葉斯分類器 3 數據集介紹4 數據預處理5 特征提取6 訓練分類器7 綜合測試結果8 其他模型方法9 最后 1 前言 &#x1f525; 優質競賽項目系列&#xff0c;今天要分享的是 基于機器學習的垃圾郵件分類 該項目…

3分鐘使用 WebSocket 搭建屬于自己的聊天室(WebSocket 原理、應用解析)

文章目錄 WebSocket 的由來WebSocket 是什么WebSocket 優缺點優點缺點 WebSocket 適用場景主流瀏覽器對 WebSocket 的兼容性WebSocket 通信過程以及原理建立連接具體過程示例Sec-WebSocket-KeySec-WebSocket-Extensions 數據通信數據幀幀頭&#xff08;Frame Header&#xff09…

組合數學學習

指數生成函數可以與排列結合在一起&#xff0c;而冪級數和 組合結合在一起 如果要進行計算的值不是一個具體的值&#xff0c;那么就要考慮生成函數

Windows如何使用key登錄Linux服務器

場景&#xff1a;因為需要回收root管理員權限&#xff0c;禁止root用戶遠程登錄&#xff0c;辦公環境只允許普通用戶遠程登錄&#xff0c;且不允許使用密碼登錄。 一、生成與配置ssh-key 1.使用root管理員權限登錄到目標系統。 2.創建一個新的普通用戶&#xff0c;和設置密碼用…

Java,File類與IO流,File類與IO流的概述

File的概述&#xff1a; File定義在java.io包下。 一個File對象代表硬盤或網絡中可能存在的一個文件或者文件目錄&#xff08;俗稱文件夾&#xff09;&#xff0c;與平臺無關。 File能新建、刪除、重命名文件和目錄&#xff0c;但File不能訪問文件內容本身。如果需要訪問文件…

用uniapp在微信小程序實現畫板(電子簽名)功能

目錄 一、效果展示 二、插件推薦與引入 三、代碼具體應用 四、h5端將base64轉換為url 一、效果展示 二、插件推薦與引入 手寫板、簽字板&#xff1b;<zwp-draw-pad /> - DCloud 插件市場 這個在微信小程序引入時內容簡單&#xff0c;且涉及的方法很多&#xff0c;…

【C/C++】排序算法代碼實現

這里&#xff0c;匯總了常見的排序算法具體代碼實現。使用C語言編寫。 排序算法實現 插入排序冒泡排序選擇排序快速排序希爾排序歸并排序 插入排序 #include <stdio.h> #include <stdlib.h>void InsertSort(int arr[],int n){int i,j,temp;for(i 1;i < n;i){ …

Pinia狀態持久化——插件pinia-plugin-persistedstate

pinia-plugin-persistedstate 旨在通過一致的 API 為 Pinia Store 提供持久化存儲。如果希望保存一個完整的 Store&#xff0c;或者需要細粒化配置 storage 和序列化的方式&#xff0c;該插件都提供了相應的功能&#xff0c;并且可以在想要持久化的 Store 上使用相同的配置。 …