Skip to content

KingBaseES 审计与合规

审计概述

审计的定义与目的

审计是指对数据库系统中的操作行为进行记录、分析和审查的过程。KingBaseES 审计的主要目的包括:

  • 安全监控:记录和监控数据库的访问和操作行为
  • 合规要求:满足法规和标准的审计要求
  • 故障追溯:在发生安全事件时,提供追溯依据
  • 责任认定:明确操作责任,防止滥用权限
  • 性能分析:通过审计日志分析系统性能问题

审计范围

KingBaseES 支持对以下操作进行审计:

  • 登录/退出:用户登录、退出数据库的行为
  • DML操作:INSERT、UPDATE、DELETE等数据操作
  • DDL操作:CREATE、ALTER、DROP等结构操作
  • DCL操作:GRANT、REVOKE等权限操作
  • 系统操作:数据库启动、关闭、备份等操作
  • 敏感数据访问:对敏感表或字段的访问操作

审计配置

审计参数设置

sql
-- 查看当前审计配置
SHOW audit_enabled;
SHOW audit_destination;
SHOW audit_directory;
SHOW audit_rotation_size;
SHOW audit_rotation_age;

-- 修改审计配置
ALTER SYSTEM SET audit_enabled = on;
ALTER SYSTEM SET audit_destination = 'file';
ALTER SYSTEM SET audit_directory = '/opt/kingbase/audit';
ALTER SYSTEM SET audit_rotation_size = 100MB;
ALTER SYSTEM SET audit_rotation_age = '1d';

-- 重启数据库使配置生效

审计目标配置

sql
-- 配置审计目标
ALTER SYSTEM SET audit_object = 'all'; -- 审计所有对象
ALTER SYSTEM SET audit_role = 'all'; -- 审计所有角色
ALTER SYSTEM SET audit_login = 'on'; -- 审计登录行为
ALTER SYSTEM SET audit_logout = 'on'; -- 审计退出行为

审计策略管理

创建审计策略

sql
-- 创建审计策略
CREATE AUDIT POLICY login_policy
    ACTIONS LOGIN;

CREATE AUDIT POLICY ddl_policy
    ACTIONS CREATE, ALTER, DROP
    ON ALL;

CREATE AUDIT POLICY sensitive_data_policy
    ACTIONS SELECT, INSERT, UPDATE, DELETE
    ON user_info, financial_transactions
    FILTERS username NOT IN ('sys', 'monitor');

启用/禁用审计策略

sql
-- 启用审计策略
ENABLE AUDIT POLICY login_policy;
ENABLE AUDIT POLICY ddl_policy;
ENABLE AUDIT POLICY sensitive_data_policy;

-- 禁用审计策略
DISABLE AUDIT POLICY login_policy;

-- 查看审计策略状态
SELECT policy_name, status FROM sys_audit_policies;

修改和删除审计策略

sql
-- 修改审计策略
ALTER AUDIT POLICY sensitive_data_policy
    ADD ACTIONS TRUNCATE;

-- 删除审计策略
DROP AUDIT POLICY login_policy;

审计日志管理

审计日志格式

KingBaseES 审计日志采用JSON格式,包含以下主要字段:

json
{
  "session_id": "12345",
  "event_time": "2023-05-20T14:30:00Z",
  "username": "test_user",
  "database": "test_db",
  "client_addr": "192.168.1.100",
  "action_type": "SELECT",
  "object_type": "TABLE",
  "object_name": "user_info",
  "statement": "SELECT * FROM user_info WHERE id = 1",
  "result": "SUCCESS"
}

审计日志查看

使用SQL查询审计日志

sql
-- 查询审计日志
SELECT * FROM sys_audit_log
WHERE event_time BETWEEN '2023-05-20' AND '2023-05-21'
  AND action_type = 'SELECT'
  AND object_name = 'user_info'
ORDER BY event_time DESC;

-- 查询失败的登录尝试
SELECT * FROM sys_audit_log
WHERE action_type = 'LOGIN'
  AND result = 'FAILURE'
ORDER BY event_time DESC;

使用命令行工具查看

bash
# 使用ksql查看审计日志
ksql -U sys -d test_db -c "SELECT * FROM sys_audit_log ORDER BY event_time DESC LIMIT 100" > audit_log.txt

# 直接查看审计日志文件
cat /opt/kingbase/audit/audit.log

审计日志归档与清理

sql
-- 手动归档审计日志
SELECT sys_audit_rotate();

-- 清理旧审计日志(保留30天)
DELETE FROM sys_audit_log
WHERE event_time < CURRENT_DATE - INTERVAL '30 days';

-- 配置自动清理
ALTER SYSTEM SET audit_retention_period = '30d';

审计日志分析

常用审计分析场景

安全事件分析

sql
-- 分析异常登录
SELECT username, client_addr, COUNT(*)
FROM sys_audit_log
WHERE action_type = 'LOGIN'
  AND result = 'FAILURE'
  AND event_time > CURRENT_TIMESTAMP - INTERVAL '1h'
GROUP BY username, client_addr
HAVING COUNT(*) > 5;

-- 分析敏感数据访问
SELECT username, action_type, COUNT(*)
FROM sys_audit_log
WHERE object_name = 'user_info'
  AND event_time > CURRENT_TIMESTAMP - INTERVAL '24h'
GROUP BY username, action_type
ORDER BY COUNT(*) DESC;

性能问题分析

sql
-- 分析耗时较长的查询
SELECT username, statement, execution_time
FROM sys_audit_log
WHERE action_type = 'SELECT'
  AND execution_time > 1000 -- 毫秒
  AND event_time > CURRENT_TIMESTAMP - INTERVAL '1h'
ORDER BY execution_time DESC;

合规性检查

sql
-- 检查权限变更
SELECT * FROM sys_audit_log
WHERE action_type IN ('GRANT', 'REVOKE')
  AND event_time > CURRENT_DATE - INTERVAL '7 days'
ORDER BY event_time DESC;

-- 检查DDL操作
SELECT * FROM sys_audit_log
WHERE action_type IN ('CREATE', 'ALTER', 'DROP')
  AND event_time > CURRENT_DATE - INTERVAL '7 days'
ORDER BY event_time DESC;

审计日志可视化

可以将 KingBaseES 审计日志集成到可视化工具中,如:

  • ELK Stack:Elasticsearch + Logstash + Kibana
  • Prometheus + Grafana:用于监控和可视化
  • KingBaseES Manager(KEM):提供审计日志可视化功能

合规要求与实践

主要合规标准

标准要求KingBaseES 支持
等保 2.0审计日志保存6个月以上,记录所有重要操作
GDPR数据访问审计,支持数据主体访问请求
PCI DSS所有访问卡数据的操作必须审计
HIPAA医疗数据访问审计,审计日志不可篡改
SOX财务数据操作审计,支持审计日志完整性

合规实践

  1. 制定审计策略

    • 根据合规要求制定审计策略
    • 重点审计敏感数据和关键操作
    • 定期审查和更新审计策略
  2. 审计日志管理

    • 确保审计日志的完整性和不可篡改性
    • 定期备份审计日志
    • 审计日志保存时间符合法规要求
  3. 定期审计分析

    • 定期分析审计日志
    • 识别异常行为和安全事件
    • 生成审计报告
  4. 审计日志保护

    • 限制审计日志的访问权限
    • 加密存储审计日志
    • 防止审计日志被篡改

版本差异

特性V8 R6V8 R7
审计策略基础支持增强,支持更复杂的过滤条件
审计日志格式文本格式支持JSON格式
审计日志查询基础查询支持更丰富的查询功能
审计性能一般优化,减少性能开销
审计可视化基础支持集成到KEM中,提供更好的可视化
审计日志加密不支持支持
审计日志完整性基础支持支持数字签名

最佳实践

审计策略设计

  1. 分层审计策略

    • 基础审计:登录/退出、系统操作
    • 核心审计:DDL、DCL操作
    • 敏感审计:敏感数据访问、权限变更
  2. 最小化原则

    • 只审计必要的操作,避免过度审计
    • 根据业务需求和合规要求调整审计范围
    • 定期审查审计策略,移除不必要的审计项
  3. 重点保护

    • 对敏感数据和关键表实施严格审计
    • 对管理员操作实施全面审计
    • 对权限变更实施详细审计

审计日志管理

  1. 存储管理

    • 单独存储审计日志,避免与数据文件混存
    • 配置合适的日志轮换策略
    • 定期归档和清理审计日志
  2. 访问控制

    • 限制审计日志的访问权限
    • 只有授权人员可以查看和分析审计日志
    • 对审计日志的访问进行审计
  3. 完整性保护

    • 启用审计日志加密
    • 配置审计日志数字签名
    • 定期验证审计日志的完整性

审计分析与响应

  1. 定期分析

    • 建立定期审计分析机制
    • 使用自动化工具进行审计日志分析
    • 生成审计报告,提交给管理层
  2. 异常响应

    • 建立审计异常响应流程
    • 对异常行为及时告警
    • 对安全事件进行深入调查和处理
  3. 持续改进

    • 根据审计分析结果,改进安全策略
    • 定期更新审计策略,适应业务变化
    • 培训员工,提高安全意识

常见问题(FAQ)

Q: 审计会影响数据库性能吗?

A: 审计会带来一定的性能开销,主要取决于审计范围和审计频率。建议只审计必要的操作,避免过度审计。KingBaseES V8 R7 对审计性能进行了优化,性能开销比 V8 R6 更低。

Q: 如何确保审计日志的安全性?

A: 可以通过以下措施确保审计日志的安全性:

  • 单独存储审计日志
  • 配置适当的文件权限
  • 启用审计日志加密
  • 配置审计日志数字签名
  • 限制审计日志的访问权限

Q: 审计日志应该保存多长时间?

A: 审计日志的保存时间应根据法规要求和业务需求确定。一般来说,等保 2.0 要求审计日志保存6个月以上,GDPR 要求保存必要的时间,通常为1-3年。

Q: 如何备份审计日志?

A: 可以使用以下方法备份审计日志:

  • 使用 KingBaseES 提供的备份工具
  • 直接复制审计日志文件
  • 配置自动归档策略
  • 集成到日志管理系统中

Q: 如何分析大量的审计日志?

A: 可以使用以下方法分析大量的审计日志:

  • 使用 SQL 查询进行过滤和统计
  • 使用 KingBaseES Manager(KEM)进行可视化分析
  • 集成到 ELK Stack 等日志分析平台
  • 开发自定义的审计分析工具

Q: 如何禁用不必要的审计?

A: 可以通过以下方法禁用不必要的审计:

  • 禁用不需要的审计策略
  • 修改审计配置参数
  • 调整审计范围
  • 删除不必要的审计策略

Q: 审计日志可以导出吗?

A: 是的,KingBaseES 支持将审计日志导出为文本文件或其他格式。可以使用 SQL 查询导出,也可以直接复制审计日志文件。

Q: 如何验证审计日志的完整性?

A: KingBaseES V8 R7 支持审计日志数字签名,可以通过验证签名来确保审计日志的完整性。对于 V8 R6,可以通过定期备份和哈希校验来验证审计日志的完整性。

总结

审计与合规是数据库运维中的重要组成部分,KingBaseES 提供了丰富的审计功能,包括审计配置、审计策略管理、审计日志分析等。DBA 应根据业务需求和合规要求,制定适合的审计策略,确保审计日志的安全性和完整性,并定期进行审计分析,及时发现和处理安全事件。通过合理配置和管理审计功能,可以提高数据库系统的安全性,满足法规和标准的合规要求,为企业的业务发展提供保障。