数据库管理系统中的审计跟踪
随着公司业务的不断发展,数据库大大小小不断涌现,对数据的安全性和完整性提出了更高的要求。数据审计作为一种安全措施,通过对数据库操作的追踪和记录,以及对是否存在异常行为进行监管,从而增强数据的安全性。审计跟踪也是合规性要求的重要一环,在合规性方面,如 SOX,HIPPA和PCI DSS等规定,要求企业必须对它们的数据进行审计跟踪。本文将对数据库管理系统中的审计跟踪进行详细介绍。
阅读更多:MySQL 教程
数据库审计内容
数据库系统的审计措施是为了确保数据库的安全、完整性、连续性、可用性和可靠性,以及验证数据库是否符合各项法规和企业备忘录规定以及用户合同。
数据库审计跟踪的内容通常包括以下三方面:
- 数据库的访问和授权操作
对于数据库的访问和授权操作需要进行记录,包括用于连接到数据库的账户和其他属性,如时间、IP地址和端口。
-
数据库对象的操作
对于数据库对象的操作也是必须要进行记录的。如数据库的增、删、改、查操作等。
-
数据库服务器的管理操作
对于数据库服务器管理操作的记录也是必须的,如备份和恢复数据库、移动数据库等操作。
SQL Server 审计跟踪
SQL Server 中的审计跟踪分为两种:服务器级别和数据库级别。服务器级别的审计跟踪对整个 SQL Server 实例的操作进行记录,而数据库级别的审计跟踪则针对单个数据库进行记录。
- 服务器级别跟踪
服务器级别审计跟踪可以跟踪整个 SQL Server 实例的操作,包括登录、登出、授权等操作。 在 SQL Server 中,可以使用 SQL Server Profiler 工具进行服务器级别的审计跟踪,也可以使用自定义跟踪来完成。
SQL Server Profiler 工具如下所示:
SELECT * FROM sys.dm_exec_requests r CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) s WHERE r.session_id > 50 AND r.status = 'running';
自定义跟踪如下所示:
CREATE TRIGGER audit_db_logon_trigger ON ALL SERVER FOR LOGON AS BEGIN INSERT INTO audit_db_logon (logon_time, host_name, program_name, login_name, database_name) VALUES (getdate(), host_name(), program_name(), suser_name(), db_name()) END;
- 数据库级别跟踪
数据库级别审计跟踪是以单个数据库为单位的跟踪,可以跟踪与单个数据库相关的所有操作,包括读写数据库的数据、创建表、删除表或存在的数据。在 SQL Server 中,可以使用 SQL Server Audit 来实现数据库级别的审计跟踪。SQL Server Audit 使用的是扩展事件,可以确保在数据库文件中最小化写入所观察的情况,这意味着它减少了在审计时对数据库的负载。
SQL Server Audit 的示例代码如下:
“`sql
CREATE DATABASE AUDIT SPECIFICATION test_audit_specification
FOR SERVER AUDIT audit_to_file,
ADD (SELECT, INSERT, UPDATE, DELETE ON OBJECT :: test_audit_db TO test_audit_group),
ADD (EXECUTE ON DATABASE::test_audit_db TO test_audit_group)ALTER DATABASE AUDIT SPECIFICATION test_audit_specification WITH (STATE=ON)
MySQL 审计跟踪
MySQL 中的审计跟踪可以使用 MySQL Enterprise Audit 提供的功能来实现。MySQL Enterprise Audit 通过通过配置过滤条件,可以收集特定事件相关的信息并存储在审计日志中。其支持针对一个或多个 MySQL 服务器实例进行配置,并且支持一个或多个过滤器进行解析及实现过滤规则。
目前 MySQL Enterprise Audit 5.7版提供了 log_output
、input_parsers
、log_filters
以及 audit_log_handlers
四种配置选项,可以根据需求进行单独配置调整。下面的示例代码展示了如何完成 MySQL 的审计跟踪。
[mysqld]
plugin-load=audit_log.so
audit_log_format=JSON
audit_log_file=/var/log/mysql/audit.log
Oracle 审计跟踪
Oracle 审计跟踪支持 DBA 维护特权、安全管理员、系统管理员等角色。DBA 维护特权可以创建用户、删除用户、收回其权限等,安全管理员用于审计操作,而系统管理员拥有整个数据库的控制权。
Oracle 中的审计跟踪可以通过设置审计参数参数及审计配置来实现。例如,修改 audit_trail
参数可以指定审计保存的位置,再通过创建审计策略即可实现审计跟踪的功能。示例代码如下:
SQL> ALTER SYSTEM SET audit_trail=DB SCOPE=SPFILE;
SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP;
SQL> CREATE AUDIT POLICY oracle_audit_log
ACTIONS SELECT, UPDATE, INSERT ON TABLE
AUDIT ADMIN RESTRICT;
SQL> AUDIT POLICY oracle_audit_log;
结论
数据库管理系统中的审计跟踪是保障数据安全和合规性难以被替代的一种措施。本文对 SQL Server、MySQL 和 Oracle 三种数据库进行了相应的审计跟踪介绍,以期能够更好地实现对企业数据库的监管和安全保护。