mcpField
C
configuring-audit-logging

configuring-audit-logging

github.com/cockroachlabs安全23121 次安装14 周前更新
代码仓库

关于 configuring-audit-logging

Configuring Audit Logging 是用于 CockroachDB 集群 SQL 审计日志配置的技能,适合负责安全审计和合规的数据库管理员。它支持集群级管理操作审计、按角色定向审计,并说明验证、日志导出与性能影响。

主要功能

  1. 01启用管理员 SQL 操作审计
  2. 02按角色配置定向审计
  3. 03设置慢查询日志阈值
  4. 04检查审计设置与日志投递
  5. 05说明性能和存储影响

适用场景

  1. 01为合规要求配置审计日志
  2. 02审计特定角色对敏感数据的访问
  3. 03排查缺失审计记录问题
  4. 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