安華金和數據庫審計產品支持市面上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
創新互聯公司長期為成百上千家客戶提供的網站建設服務,團隊從業經驗10年,關注不同地域、不同群體,并針對不同對象提供差異化的產品和服務;打造開放共贏平臺,與合作伙伴共同營造健康的互聯網生態環境。為雨城企業提供專業的網站設計、網站建設,雨城網站改版等技術服務。擁有十載豐富建站經驗和眾多成功案例,為您定制開發。
等等,非關系型數據庫包含HBase、MongoDB、Hive、Impala、Sentry、Redis、HDFS、ElasticSearch、Spark SQL等等,去年做交流的時候聊過,還特意留了一張支持數據庫的表格,現在是不是又有新的數據庫也可以支持,你跟安華了解下,他們是業界支持數據庫類型最多的一家廠商,還不明白自己百度下。
數據庫審計是對數據庫訪問行為進行監管的系統,一般采用旁路部署的方式,通過鏡像或探針的方式采集所有數據庫的訪問流量,并基于SQL語法、語義的解析技術,記錄下數據庫的所有訪問和操作行為,例如訪問數據的用戶(IP、賬號、時間),操作(增、刪、改、查)、對象(表、字段)等。數據庫審計系統的主要價值有兩點,一是:在發生數據庫安全事件(例如數據篡改、泄露)后為事件的追責定責提供依據;二是,針對數據庫操作的風險行為進行時時告警。
二、數據庫審計怎么審?
1、數據庫訪問流量采集
流量采集是數據庫審計系統的基礎,只有做到數據庫訪問流量的全采集,才能保證數據庫審計的可用性和價值,目前主要的流量采集方式主要有兩種:
鏡像方式:采用旁路部署通過鏡像方式獲取數據庫的所有訪問流量。一般適用于傳統IT架構,通過鏡像方式將所有訪問數據庫的流量轉發到數據庫審計系統,來實現數據庫訪問流量的獲取。
探針方式:為了適應“云環境”“虛擬化”及“一體機”數據庫審計需求,基于“探針”方式捕獲數據庫訪問流量。適用于復雜的網絡環境,在應用端或數據庫服務器部署Rmagent組件(產品提供),通過虛擬環境分配的審計管理網口進行數據傳輸,完成數據庫流量采集。
探針式數據采集,還可以進行數據庫本地行為審計,包括數據庫和應用系統同機審計和遠程登錄后的客戶端行為。
2、語法、語義解析
SQL語法、語義的解析技術,是實現數據庫審計系統可用、易用的必要條件。準確的數據庫協議解析,能夠保障數據庫審計的全面性與易用性。全面的審計結果應該包括:訪問數據庫的應用層信息、客戶端信息、數據庫信息、對象信息、響應信息、登錄時間、操作時間、SQL響應時長等;高易用性的數據庫審計產品的審計結果和報告,應該能夠使用業務化的語言呈現出對數據庫的訪問行為,例如將數據庫中的要素客戶端IP、數據庫用戶、SQL 操作類型、數據庫表名稱、列名稱、過濾條件變成業務人員熟悉的要素:辦公地點、工作人員名稱、業務操作、業務對象、業務元素、某種類別的業務信息。這樣的是審計結果呈現即便是非專業的DBA或運維人員的管理者或業務人員也能夠看懂。
三、數據庫審計的價值?
1、數據庫相關安全事件的追溯與定責
數據庫審計的核心價值是在發生數據庫安全事件后,為追責、定責提供依據,與此同時也可以對數據庫的攻擊和非法操作等行為起到震懾的作用。數據庫自身攜帶的審計功能,不僅會拖慢數據庫的性能,同時也有其自身的弊端,比如高權限用戶可以刪除審計日志,日志查看需要專業知識,日志分析復雜度高等。獨立的數據庫審計產品,可以有效避免以上弊端。三權分立原則可以避免針對審計日志的刪除和篡改,SQL語句解析技術,可以將審計結果翻譯成通俗易懂的業務化語言,使得一般的業務人員和管理者也能看懂。
2、數據庫風險行為發現與告警
數據庫審計系統還可以對于針對數據庫的攻擊和風險操作等進行實時告警,以便管理人員及時作出應對措施,從而避免數據被破壞或者竊取。這一功能的實現主要基于sql的語句準確解析技術,利用對SQL語句的特征分析,快速實現對語句的策略判定,從而發現數據庫入侵行為、數據庫異常行為、數據庫違規訪問行為,并通過短信、郵件、Syslog等多種方式實時告警。
3、滿足合規需求
滿足國家《網絡安全法》、等保規定以及各行業規定中對于數據庫審計的合規性需求。并可根據需求形成不同的審計報表,例如:綜合報表、合規性報表、專項報表、自定義報表等。
SQLSERVER2008新增的審核功能
在sqlserver2008新增了審核功能,可以對服務器級別和數據庫級別的操作進行審核/審計,事實上,事件通知、更改跟蹤、變更數據捕獲(CDC)
都不是用來做審計的,只是某些人亂用這些功能,也正因為亂用這些功能導致踩坑
事件通知:性能跟蹤
更改跟蹤:用Sync Services來構建偶爾連接的系統
變更數據捕獲(CDC):數據倉庫的ETL 中的數據抽?。ū澈笫褂胠ogreader)
而審核是SQLSERVER專門針對數據庫安全的進行的審核,記住,他是專門的!
我們看一下審核的使用方法
審核對象
步驟一:創建審核對象,審核對象是跟保存路徑關聯的,所以如果你需要把審核操作日志保存到不同的路徑就需要創建不同的審核對象
我們把審核操作日志保存在文件系統里,在創建之前我們還要在相關路徑先創建好保存的文件夾,我們在D盤先創建sqlaudits文件夾,然后執行下面語句
--創建審核對象之前需要切換到master數據庫
USE [master]
GO
CREATE SERVER AUDIT MyFileAudit TO FILE(FILEPATH='D:\sqlaudits') --這里指定文件夾不能指定文件,生成文件都會保存在這個文件夾
GO
實際上,我們在創建審核對象的同時可以指定審核選項,下面是相關腳本
把日志放在磁盤的好處是可以使用新增的TVF:sys.[fn_get_audit_file] 來過濾和排序審核數據,如果把審核數據保存在Windows 事件日志里查詢起來非常麻煩
USE [master]
GO
CREATE SERVER AUDIT MyFileAudit TO FILE(
FILEPATH='D:\sqlaudits',
MAXSIZE=4GB,
MAX_ROLLOVER_FILES=6)
WITH (
ON_FAILURE=CONTINUE,
QUEUE_DELAY=1000);
ALTER SERVER AUDIT MyFileAudit WITH(STATE =ON)
MAXSIZE:指明每個審核日志文件的最大大小是4GB
MAX_ROLLOVER_FILES:指明滾動文件數目,類似于SQL ERRORLOG,達到多少個文件之后刪除前面的歷史文件,這里是6個文件
ON_FAILURE:指明當審核數據發生錯誤時的操作,這里是繼續進行審核,如果指定shutdown,那么將會shutdown整個實例
queue_delay:指明審核數據寫入的延遲時間,這里是1秒,最小值也是1秒,如果指定0表示是實時寫入,當然性能也有一些影響
STATE:指明啟動審核功能,STATE這個選項不能跟其他選項共用,所以只能單獨一句
在修改審核選項的時候,需要先禁用審核,再開啟審核
ALTER SERVER AUDIT MyFileAudit WITH(STATE =OFF)
ALTER SERVER AUDIT MyFileAudit WITH(QUEUE_DELAY =1000)
ALTER SERVER AUDIT MyFileAudit WITH(STATE =ON)
審核規范
在SQLSERVER審核里面有審核規范的概念,一個審核對象只能綁定一個審核規范,而一個審核規范可以綁定到多個審核對象
我們來看一下腳本
CREATE SERVER AUDIT SPECIFICATION CaptureLoginsToFile
FOR SERVER AUDIT MyFileAudit
ADD (failed_login_group),
ADD (successful_login_group)
WITH (STATE=ON)
GO
CREATE SERVER AUDIT MyAppAudit TO APPLICATION_LOG
GO
ALTER SERVER AUDIT MyAppAudit WITH(STATE =ON)
ALTER SERVER AUDIT SPECIFICATION CaptureLoginsToFile WITH (STATE=OFF)
GO
ALTER SERVER AUDIT SPECIFICATION CaptureLoginsToFile
FOR SERVER AUDIT MyAppAudit
ADD (failed_login_group),
ADD (successful_login_group)
WITH (STATE=ON)
GO
我們創建一個服務器級別的審核規范CaptureLoginsToFile,然后再創建多一個審核對象MyAppAudit ,這個審核對象會把審核日志保存到Windows事件日志的應用程序日志里
我們禁用審核規范CaptureLoginsToFile,修改審核規范CaptureLoginsToFile屬于審核對象MyAppAudit ,修改成功
而如果要把多個審核規范綁定到同一個審核對象則會報錯
CREATE SERVER AUDIT SPECIFICATION CaptureLoginsToFileA
FOR SERVER AUDIT MyFileAudit
ADD (failed_login_group),
ADD (successful_login_group)
WITH (STATE=ON)
GO
CREATE SERVER AUDIT SPECIFICATION CaptureLoginsToFileB
FOR SERVER AUDIT MyFileAudit
ADD (failed_login_group),
ADD (successful_login_group)
WITH (STATE=ON)
GO
--消息 33230,級別 16,狀態 1,第 86 行
--審核 'MyFileAudit' 的審核規范已經存在。
這里要說一下 :審核對象和審核規范的修改 ,無論是審核對象還是審核規范,在修改他們的相關參數之前,他必須要先禁用,后修改,再啟用
--禁用審核對象
ALTER SERVER AUDIT MyFileAudit WITH(STATE =OFF)
--禁用服務器級審核規范
ALTER SERVER AUDIT SPECIFICATION CaptureLoginsToFile WITH (STATE=OFF)
GO
--禁用數據庫級審核規范
ALTER DATABASE AUDIT SPECIFICATION CaptureDBLoginsToFile WITH (STATE=OFF)
GO
--相關修改選項操作
--啟用審核對象
ALTER SERVER AUDIT MyFileAudit WITH(STATE =ON)
--啟用服務器級審核規范
ALTER SERVER AUDIT SPECIFICATION CaptureLoginsToFile WITH (STATE=ON)
GO
--啟用數據庫級審核規范
ALTER DATABASE AUDIT SPECIFICATION CaptureDBLoginsToFile WITH (STATE=ON)
GO
審核服務器級別事件
審核服務級別事件,我們一般用得最多的就是審核登錄失敗的事件,下面的腳本就是審核登錄成功事件和登錄失敗事件
CREATE SERVER AUDIT SPECIFICATION CaptureLoginsToFile
FOR SERVER AUDIT MyFileAudit
ADD (failed_login_group),
ADD (successful_login_group)
WITH (STATE=ON)
GO
修改審核規范
--跟審核對象一樣,更改審核規范時必須將其禁用
ALTER SERVER AUDIT SPECIFICATION CaptureLoginsToFile WITH (STATE =OFF)
ALTER SERVER AUDIT SPECIFICATION CaptureLoginsToFile
ADD (login_change_password_gourp),
DROP (successful_login_group)
ALTER SERVER AUDIT SPECIFICATION CaptureLoginsToFile WITH (STATE =ON)
GO
審核操作組
每個審核操作組對應一種操作,在SQLSERVER2008里一共有35個操作組,包括備份和還原操作,數據庫所有權的更改,從服務器和數據庫角色中添加或刪除登錄用戶
添加審核操作組的只需在審核規范里使用ADD,下面語句添加了登錄用戶修改密碼操作的操作組
ADD (login_change_password_gourp)
這里說一下服務器審核的內部實際上使用的是SQL2008新增的擴展事件里面的其中一個package:SecAudit package,當然他內部也是使用擴展事件來收集服務器信息
審核數據庫級別事件
數據庫審核規范存在于他們的數據庫中,不能審核tempdb中的數據庫操作
CREATE DATABASE AUDIT SPECIFICATION和ALTER DATABASE AUDIT SPECIFICATION
工作方式跟服務器審核規范一樣
在SQLSERVER2008里一共有15個數據庫級別的操作組
7個數據庫級別的審核操作是:select ,insert,update,delete,execute,receive,references
相關腳本如下:
--創建審核對象
USE [master]
GO
CREATE SERVER AUDIT MyDBFileAudit TO FILE(FILEPATH='D:\sqldbaudits')
GO
ALTER SERVER AUDIT MyDBFileAudit WITH (STATE=ON)
GO
--創建數據庫級別審核規范
USE [sss]
GO
CREATE DATABASE AUDIT SPECIFICATION CaptureDBActionToEventLog
FOR SERVER AUDIT MyDBFileAudit
ADD (database_object_change_group),
ADD (SELECT ,INSERT,UPDATE,DELETE ON schema::dbo BY PUBLIC)
WITH (STATE =ON)
我們先在D盤創建sqldbaudits文件夾
第一個操作組對數據庫中所有對象的DDL語句create,alter,drop等進行記錄
第二個語句監視由任何public用戶(也就是所有用戶)對dbo架構的任何對象所做的DML操作
創建完畢之后可以在SSMS里看到相關的審核
查看安全性選項卡。
把SQLSERVER身份驗證方式改成SQLSERVER和Windows,然后新建立一個用戶。
授權相應的數據庫及權限,再登錄時填建立的用戶名和密碼登錄即可。