本文目錄一覽:
什麼是數據庫審計?
隨着信息泄露事件的頻發,數據庫安全產品逐漸進入大眾視野。在數據庫安全產品中,數據庫審計大概是用戶方最為熟悉的一款產品了。在不影響業務系統正常運轉的情況下,數據庫審計產品能夠對數據庫的操作訪問行為進行追蹤審計,這也是大多數用戶將其作為數據庫安全標配採購的重要原因。本文時代新威為您科普什麼是數據庫審計,數據庫審計的作用和原理有哪些,一起來看看吧!
什麼是數據庫審計?
數據庫審計是指對審計日誌和事務日誌進行審查,從而跟蹤數據和數據庫結構的變化。數據庫可以這樣進行設置:捕捉數據和元數據的改變,以及存儲這些資料的數據庫所做的修改。典型的審計報告應該包括以下內容:完成的數據庫操作、改變的數據值、執行該項操作的人,以及其他幾項屬性。這些審計功能被植入到所有的關係數據庫平台中,並確保生成的記錄文件具有較高的準確性和完整性,就好像在數據庫中存儲的數據一樣。此外,審計跟蹤還能把一系列的語句轉化為合理的事務,並提供業務流程取證(forensic)分析所需的業務環境。
不過,審計功能也存在限制,例如不能對數據訪問語句(通常稱之為SELECT語句)進行審計。另外,本地數據庫審計很難捕捉到用戶認可的原始查詢(query)和變量(variables),只能從綜合的角度對事件做出記錄,而日誌則可以捕捉到改變前後的數據值。這也使得審計跟蹤在檢測已改變的內容時,比檢測已訪問的內容更為有效。
對數據庫活動和狀態進行取證檢查時,審計可以準確的把握事件的本質。對SELECT語句(用戶查看數據時會使用)進行檢查時,因為本地平台缺乏對這些語句的收集能力,即便利用高級選項實現了這項操作,也會導致性能受到極大損失。既然有簡單的方法可以高效地對SELECT語句進行登記(cataloging)(例如,登入失敗、嘗試查看信用證信息),為什麼企業還要選擇在本地數據庫審計功能上增加其他的數據收集資源。不管怎樣,內置的數據庫審計功能可以生成事務認證和法規控制的核心信息。
數據庫審計作用:
數據庫審計通過旁路部署,能夠實時記錄網絡上的數據庫活動,對數據庫操作進行細粒度審計的合規性管理,對數據庫遭受到的風險行為進行告警。它通過對用戶訪問數據庫行為的記錄、分析和彙報,用來幫助用戶事後生成合規搜索報告、事後追根溯源,同時加強內外部數據庫網絡行為記錄,提高數據資產安全。
數據庫審計原理:
數據庫審計系統對來自應用系統客戶端和dba對數據庫的訪問行為進行全面審計,不僅審計sql語句,還對ftp、telnet等遠程訪問進行審計。系統詳細記錄查詢、刪除、增加、修改等行為及操作結果,對危險操作還可實時預警,及時阻止,從而達到保護數據庫的良好效果。
黑格爾曾說,“存在即合理”,用在數據安全領域,對數據庫審計的運用同樣適用。時代新威認為數據庫審計是當下最經濟、最貼身、最有效的數據保鏢,同時我國信息化建設想要長遠持續發展,數據庫審計是必然選擇。
mysql數據庫審計功能 是否可以跟蹤查詢
mysql服務器自身沒有提供審計功能,但是我們可以使用init-connect + binlog的方法進行mysql的操作審計。由於mysql binlog記錄了所有對數據庫長生實際修改的sql語句,及其執行時間,和connection_id但是卻沒有記錄connection_id對應的詳細用戶信息。在後期審計進行行為追蹤時,根據binlog記錄的行為及對應的connection-id 結合 之前連接日誌記錄 進行分析,得出最後的結論。
1. 設置init-connect
1.1 創建用於存放連接日誌的數據庫和表
create database accesslog;
CREATE TABLE accesslog.accesslog (`id` int(11) primary key auto_increment, `time` timestamp, `localname` varchar(30), `matchname` varchar(30))
1.2 創建用戶權限
可用現成的root用戶用於信息的讀取
grant select on accesslog.* to root;
如果存在具有to *.* 權限的用戶需要進行限制。
這裡還需要注意用戶必須對accesslog表具有insert權限
grant select on accesslog.* to user@’%’;
1.3 設置init-connect
在[mysqld]下添加以下設置:
init-connect=’insertinto accesslog.accesslog(id, time, localname, matchname)
values(connection_id(),now(),user(),current_user());’
——注意user()和current_user()的區別
log-bin=xxx
這裡必須開啟binlog
1.4 重啟數據庫生效
shell /etc/init.d/mysql restart
2. 記錄追蹤
2.1 thread_id確認
可以用以下語句定位語句執行人
Tencent:~ # mysqlbinlog –start-datetime=’2011-01-26 16:00:00′
–stop-datetime=’2011-01-26 17:00:00′ /var/lib/mysql/mysql-bin.000010
| grep -B 5 ‘wsj’
COMMIT/*!*/;
# at 767
#110126 16:16:43 server id 1 end_log_pos 872 Query thread_id=19 exec_time=0 error_code=0
use test/*!*/;
SET TIMESTAMP=1296029803/*!*/;
create table wsj(id int unsigned not null)
—
BEGIN
/*!*/;
# at 940
#110126 16:16:57 server id 1 end_log_pos 1033 Query thread_id=19 exec_time=0 error_code=0
SET TIMESTAMP=1296029817/*!*/;
insert into wsj(id) values (1)
—
BEGIN
/*!*/;
# at 1128
#110126 16:16:58 server id 1 end_log_pos 1221 Query thread_id=19 exec_time=0 error_code=0
SET TIMESTAMP=1296029818/*!*/;
insert into wsj(id) values (2)
2.2 用戶確認
thread_id 確認以後,找到元兇就只是一條sql語句的問題了。
mysql select * from accesslog where id=19;
+—-+———————+———————+———–+
| id | time | localname | matchname |
+—-+———————+———————+———–+
| 19 | 2011-01-26 16:15:54 | test@10.163.164.216 | test@% |
+—-+———————+———————+———–+
1 row in set (0.00 sec)
數據庫審計 支持審計數據庫包括哪些
安華金和數據庫審計產品支持市面上30多種數據庫類型,關係型數據庫類型包含Oracle、MySQL、SQLServer、DB2、Postgres、Sybase、DM、Gbase8A、Kingbase、Informix、Oscar神通、CacheDB、Gbase8T、MariaDB、Percona、Greenplum、Teradata、Hana、SG-RDB_MySQL、SG-RDB_PostgreSQL
等等,非關係型數據庫包含HBase、MongoDB、Hive、Impala、Sentry、Redis、HDFS、ElasticSearch、Spark SQL等等,去年做交流的時候聊過,還特意留了一張支持數據庫的表格,現在是不是又有新的數據庫也可以支持,你跟安華了解下,他們是業界支持數據庫類型最多的一家廠商。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/160532.html