查看數據庫審計日志
更新時間 2024-11-13 14:16:37
最近更新時間: 2024-11-13 14:16:37
分享文章
本章節主要介紹查看數據庫審計日志。
前提條件
- 審計功能總開關audit_enabled已開啟。(audit_enabled默認值為ON,若關閉請參考修改數據庫參數設置為ON)。
- 已配置需要審計的審計項。各審計項及其開啟辦法,請參考設置數據庫審計日志。
- 數據庫正常運行,并且對數據庫執行了一系列增、刪、改、查操作,保證在查詢時段內有審計結果產生。
- 數據庫各個節點審計日志單獨記錄。
- 只有擁有AUDITADMIN屬性的用戶才可以查看審計記錄。
查看數據庫審計日志方式
方式一:由于審計日志會占用一定磁盤空間,為了防止本地磁盤文件過大,DWS支持審計日志轉儲,用戶可以開啟“開啟審計日志轉儲”功能,將審計日志轉儲到OBS(用戶需創建用于存儲審計日志的OBS桶)中進行查看或下載,詳細內容請參考轉儲數據庫審計日志章節的 查看審計日志轉儲記錄。
方式二:通過依賴于云日志服務LTS的“集群日志管理”功能查看采集的審計數據庫日志或進行日志下載,詳細內容請參考集群日志管理-查看集群日志。
方式三:數據庫的審計日志默認存儲于數據庫中,連接集群后,使用pg_query_audit函數進行查看。詳細內容請參考下方 使用pg_query_audit函數查看數據庫審計日志。
使用pg_query_audit函數查看數據庫審計日志
- 使用SQL客戶端工具成功連接集群,連接方式請參考連接集群。
- 使用函數pg_query_audit查詢當前CN節點的審計日志,其語法為:
pg_query_audit(timestamptzstartime **,timestamptz ** endtime , audit_log )
參數startime和endtime分別表示審計記錄的開始時間和結束時間,audit_log表示所查看的審計日志信息所在的物理文件路徑,當不指定audit_log時,默認查看連接當前實例的審計日志信息。
例如,查看指定時間段當前CN節點審計記錄。
SELECT FRO Mpg_query_audit(' 2021-02-23 21:49:00 ',' 2021-02-2321:50:00');
查詢結果如下:
begintime | endtime | operation_type | audit_type |
result | username | database | client_conninfo | object_name | command_text |
detail_info | transaction_xid | query_id | node_name |
thread_id | local_port | remote_port
---------------------------+---------------------------+----------------+----------
--+--------+------------+----------+-----------------+-------------+---------------
--+------------------------------------------------------------------+-------------
----+----------+--------------+------------------------------+------------+--------
-----q
2021-02-23 21:49:57.76+08 | 2021-02-23 21:49:57.82+08 | login_logout | user_login
| ok | dbadmin | gaussdb | gsql@[local] | gaussdb | login db | login
db(gaussdb) successfully, the current user is: dbadmin | 0 | 0 |
coordinator1 | 140324035360512@667403397820909 | 27777 |
該條記錄表明,用戶dbadmin在2021-02-23 21:49:57.82+08登錄數據庫gaussdb。其中client_conninfo字段在log_hostname啟動且IP連接時,字符@后顯示反向DNS查找得到的主機名。
- 使用函數pgxc_query_audit可以查詢所有CN節點的審計日志,其語法為:
pgxc_query_audit(timestamptz startime,timestamptzendtime )
例如,查看指定時間段所有CN節點審計記錄。
ELECT * FROM pgxc_query_audit('2021-02-23 22:05:00','2021-02-23 22:07:00') where
audit_type = 'user_login' and username = 'user1';
查詢結果如下:
begintime | endtime | operation_type | audit_type |
result | username | database | client_conninfo | object_name | command_text |
detail_info | transaction_xid | query_id | node_name |
thread_id | local_port | remote_port
----------------------------+----------------------------+----------------+--------
----+--------+----------+----------+-----------------+-------------+---------------
--+-------------------------------------------------------------+-----------------
+----------+--------------+---------------------------------+------------+---------
----
2021-02-23 22:06:22.219+08 | 2021-02-23 22:06:22.271+08 | login_lgout |
user_login | ok | user1 | gaussdb | gsql@[local] | gaussdb | login db
2022-11-25 233
| login db(gaussdb) successfully, the current user is: user1 | 0 | 0
| coordinator2 | 140689577342720@667404382271356 | 27782 |
2021-02-23 22:05:51.697+08 | 2021-02-23 22:05:51.749+08 | login_lgout |
user_login | ok | user1 | gaussdb | gsql@[local] | gaussdb | login db
| login db(gaussdb successfully, the current user is: user1 | 0 | 0
| coordinator1 | 140525048424192@667404351749143 | 27777 |
查詢結果顯示,用戶user1在CN1和CN2的成功登錄記錄。