文章目录
前言
这次课也主要介绍一些概念相关的东西,比如什么是数据库审计,DAM,审计类型的详细介绍,介绍完审计类型,最后介绍我们经常使用的MySQL中的数据库审计当中一些很重要的概念,包括数据库日志的一些内容。
一、重点概念
- 数据库审计(Database Auditing)涉及观察对数据库执行的操作,以了解数据库用户的行为。
- 数据库管理员和顾问通常为安全目的设置审计,例如,确保那些没有权限访问信息的人不能访问它。
- 数据库活动监控Database activity monitoring(DAM)是一种独立于数据库管理系统(DBMS)运行的数据库安全技术,用于监控和分析数据库活动。
- DAM不依赖于任何形式的本地(DBMS内置)审计或本地日志,例如跟踪或事务日志。
- 数据库活动监控(DAM)通常连续并实时进行。
- 审计跟踪,也称为审计日志,是数据库活动监控(DAM)的结果。
- 审计跟踪是一组安全相关的按时间排序的记录和/或记录的目标和来源,它提供了在给定时间段内对数据库执行的活动顺序的文件证据。
二、审计类别
-
对数据库系统的登录/登出操作进行审计
记录两个事件:一个用于登录和一个用于登出
保存登录名、时间戳、客户端的TCP/IP地址和用于发起连接的程序
记录登录失败的尝试
-
审计数据库使用的来源
包括用户连接到的网络节点(IP地址和主机名)
使用哪个应用程序访问数据库
• 审计正常操作时间外的数据库活动
- 在正常营业时间之外进行的活动通常会引起怀疑,并可能是未经授权的访问修改数据的结果。
- 正常营业时间外的活动审计记录包括登录/登出和所有SQL活动。
- 正常营业时间外的活动审计不需要包括始终安排在非工作时间运行的活动,例如数据提取、转换和加载(ETL)数据仓库活动。
• 审计DDL活动
- SQL的DDL语句可能是存在的最具破坏性的语句。
- 审计DDL活动也是为了消除开发人员和数据库管理员的错误。
- 可以通过以下方式进行审计数据库架构更改:
(1)使用数据库审计功能
(2)使用外部审计系统
(3)比较架构快照
(4)一些系统允许使用数据库触发器。
• 审计数据库错误
- 审计数据库错误非常重要,因为在许多情况下,黑客使用"试错"的技术来探查数据库的结构,而一个编写和测试良好的数据库应用程序不会返回错误。
- 登录失败是必须监控的错误的一个很好示例。
- 对数据库错误的审计也可能导致发现数据库应用程序中的弱点。
• 审计存储过程和触发器源代码的更改
- 对已经开发的软件源代码的更改可能意味着企图加入恶意代码。
- 审计可以通过将早期开发的源代码与现有代码进行比较来实施,例如使用diff程序。
- 第二个选项是使用外部数据库安全和审计系统,该系统在任何由数据库用户处理的CREATE或ALTER命令时发出警报。
- 第三个选项是使用内置数据库功能,例如系统可以追踪"重新编译"事件以跟踪对存储过程和触发器的更改。
• 审计权限、用户登录和其他安全属性的更改
- 审计用户、登录和角色的删除和添加
- 审计登录和用户/角色之间映射的更改
- 审计用户和角色的权限更改
- 审计密码更改
- 审计服务器、数据库、语句或对象级别的安全属性的更改
三、MySQL中的数据库审计
• MySQL企业审计(社区版系统中不可用的插件)
- 动态启用/禁用审计流
- 实施记录所有或选择的登录或查询活动的策略
- 基于文件大小自动轮换审计日志文件
- 将基于XML的审计日志流与MySQL、Oracle和其他第三方解决方案集成
• 使用存储过程
• 使用数据库触发器
• 使用外部审计插件库
• 分析数据库日志
重点!!!使用数据库日志
• MySQL服务器具有几个日志,包含有关用户活动的信息
• 错误日志:记录启动、运行或停止MySQL服务器时遇到的问题
• 通用查询日志:记录已建立的客户端连接和从客户端接收到的语句
• 二进制日志:记录修改数据的语句(也用于复制)
• Relay日志:记录从复制主服务器接收到的数据更改
• 慢查询日志:记录执行时间超过一定时间的查询
• DDL日志(元数据日志):记录由DDL语句执行的元数据操作
参考文献
• C. Coronel, S. Morris, A. Basta, M. Zgola, Data Management and Security, Chapter 12, Cengage Compose eBook, 2018, eBook: Data Management and Security, 1st Edition
• MySQL 5.7 Reference Manual, MySQL Server Administration, MySQL
Server logs