关于 configuring-audit-logging
Configuring Audit Logging 是用于 CockroachDB 集群 SQL 审计日志配置的技能,适合负责安全审计和合规的数据库管理员。它支持集群级管理操作审计、按角色定向审计,并说明验证、日志导出与性能影响。
主要功能
- 01启用管理员 SQL 操作审计
- 02按角色配置定向审计
- 03设置慢查询日志阈值
- 04检查审计设置与日志投递
- 05说明性能和存储影响
适用场景
- 01为合规要求配置审计日志
- 02审计特定角色对敏感数据的访问
- 03排查缺失审计记录问题
- 04核实集群审计日志是否正常导出
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ cockroachlabs/ cockroachdb-skills --skill configuring-audit-logging安装后在 Claude Code 中输入/configuring-audit-logging确认已加载。
附带文件references/sql-queries.md
详细介绍
配置审计日志记录
在 CockroachDB 集群上配置 SQL 审计日志记录,以捕获与安全相关的事件,例如身份验证尝试、权限更改、DDL 操作和敏感数据访问。支持集群范围的审计设置,以及针对特定对象的基于角色的审计策略。
适用场景
- 启用审计日志记录,以满足 SOC 2、HIPAA 或 PCI DSS 合规要求
- 为特定用户或角色设置基于角色的审计策略
- 验证审计日志记录是否已正确配置并正在捕获事件
- 响应有关缺少审计跟踪的安全审计发现
- 通过查看审计日志配置来调查安全事件
前提条件
- SQL 访问权限,且具有管理员角色(修改集群设置时必需)
- CockroachDB 版本: 22.2+(支持基于角色的审计日志记录)
- 已配置日志导出,以保留审计跟踪(CockroachDB Cloud 会将日志导出到你的云服务提供商)
- 存储规划: 审计日志记录会增加日志量;请为额外存储做好规划
检查你的访问权限:
-- Verify admin role
SELECT member FROM [SHOW GRANTS ON ROLE admin] WHERE member = current_user();
-- Check CockroachDB version
SELECT version();
步骤
1. 检查当前审计配置
-- User audit logging configuration
SHOW CLUSTER SETTING sql.log.user_audit;
-- Admin audit logging
SHOW CLUSTER SETTING sql.log.admin_audit.enabled;
-- All audit-related settings
SELECT variable, value
FROM [SHOW ALL CLUSTER SETTINGS]
WHERE variable LIKE '%audit%'
ORDER BY variable;
更多审计相关查询,请参阅 SQL 查询参考。
2. 启用管理员审计日志记录
管理员审计日志记录会捕获具有管理员角色的用户执行的所有 SQL 语句。
-- Enable admin audit logging
SET CLUSTER SETTING sql.log.admin_audit.enabled = true;
捕获内容:
- 管理员用户执行的所有 SQL 语句
- DDL 操作(CREATE、ALTER、DROP)
- 授予和撤销权限的操作
- 集群设置更改
3. 配置基于角色的审计日志记录
基于角色的审计日志记录可针对特定角色进行记录。与集群范围的日志记录相比,这种方式效率更高。
-- Enable audit logging for a specific role
-- Format: <role_name> <audit_mode>
-- Audit modes: ALL (all statements), READ (reads only), WRITE (writes only), NONE (disable)
SET CLUSTER SETTING sql.log.user_audit = 'sensitive_data_reader ALL';
多个角色:
-- Audit multiple roles (newline-separated)
SET CLUSTER SETTING sql.log.user_audit = 'sensitive_data_reader ALL
security_admin ALL
app_service_account READ';
创建用途专属的审计角色:
-- Create a role for users accessing sensitive data
CREATE ROLE sensitive_data_reader;
GRANT SELECT ON TABLE customers, payments, pii_table TO sensitive_data_reader;
-- Assign users to the audited role
GRANT sensitive_data_reader TO app_user;
-- Enable audit logging for this role
SET CLUSTER SETTING sql.log.user_audit = 'sensitive_data_reader ALL';
4. 配置慢查询日志记录(补充)
慢查询日志记录会捕获延迟超过阈值的查询,这可能表明存在未经授权的扫描或数据窃取企图。
-- Log queries taking longer than 1 second
SET CLUSTER SETTING sql.log.slow_query.latency_threshold = '1s';
-- Log all queries (high overhead — use only for investigation)
-- SET CLUSTER SETTING sql.log.slow_query.latency_threshold = '0';
5. 验证审计日志记录
-- Confirm settings are active
SHOW CLUSTER SETTING sql.log.user_audit;
SHOW CLUSTER SETTING sql.log.admin_audit.enabled;
-- Execute a test statement to generate an audit event
SELECT 1;
验证日志交付: 在 CockroachDB Cloud 上,审计日志会导出到你配置的日志接收端(云服务提供商的日志服务)。请检查日志导出目标,以验证事件是否正在被捕获。
# On CockroachDB Cloud, check log export configuration
ccloud cluster info <cluster-name> -o json
# Look for log_export_config section
安全注意事项
性能影响: 审计日志记录会增加 CPU 和 I/O 开销。影响取决于审计范围:
| 审计范围 | 性能影响 | 建议 |
|---|---|---|
| 仅管理员审计 | 极小 | 适用于所有环境 |
| 基于角色的审计(针对特定角色) | 低到中等 | 建议用于生产环境 |
| 集群范围的所有语句日志记录 | 高 | 仅在调查期间使用 |
| 慢查询日志记录(阈值 > 0) | 极小 | 适用于所有环境 |
| 慢查询日志记录(阈值 = 0) | 非常高 | 绝不可在生产环境中使用 |
存储影响: 审计日志会增加日志量。请做好以下规划:
- 管理员审计:日志量增加约 1-5%
- 基于角色的审计:日志量增幅与受审计角色的查询量成正比
- 所有语句日志记录:日志量增加 10 倍以上
建议:
- 从管理员审计日志记录开始(开销极小,价值很高)
- 为访问敏感数据的角色添加基于角色的审计
- 避免在生产环境中启用集群范围的所有语句日志记录
- 配置日志轮转和保留策略
回滚
-- Disable user audit logging
SET CLUSTER SETTING sql.log.user_audit = '';
-- Disable admin audit logging
SET CLUSTER SETTING sql.log.admin_audit.enabled = false;
-- Reset slow query threshold to default
RESET CLUSTER SETTING sql.log.slow_query.latency_threshold;
参考资料
技能参考:
相关技能:
CockroachDB 官方文档:
评论
支持 Markdown