关于 altinity-expert-clickhouse-security
altinity-expert-clickhouse-security 是面向 ClickHouse 审核人员的只读安全审计技能。它检查系统元数据和提供的配置,并结合上下文分析发现,同时明确说明验证限制并对敏感信息脱敏。
主要功能
- 01运行 20 项首轮 SQL 检查
- 02检查用户、角色、授权和策略
- 03审查设置、配额及集成
- 04使用针对版本的安全参考
- 05在报告中隐藏敏感数据
适用场景
- 01审计 ClickHouse 访问控制
- 02检查提供的配置文件
- 03调查查询日志中的安全问题
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ altinity/ altinity-skills --skill altinity-expert-clickhouse-security安装后在 Claude Code 中输入/altinity-expert-clickhouse-security确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
checks.sqlreferences/01-scope-and-safety.md02-identity-authentication.md03-users-roles-grants-rbac.md04-definer-impersonation-principals.md05-network-exposure-and-tls.md06-table-functions-external-sources.md07-table-engines-and-external-integrations.md08-row-column-policy-security.md09-settings-profiles-constraints-quotas.md10-audit-logging-and-log-integrity.md11-query-log-threat-hunting.md12-secrets-named-collections-credentials.md13-password-hash-hygiene.md14-version-specific-security-checks.md15-cluster-distributed-security.md16-keeper-and-interserver-security.md17-executable-udf-and-code-execution.md18-encryption-at-rest-and-backups.md19-http-interface-surface.md20-reporting-severity-and-output-format.md详细介绍
ClickHouse 安全审计
使用 system.users、system.grants、system.roles、system.row_policies、system.settings_profile_elements、system.quotas、system.named_collections、system.functions、system.clusters 和提供的配置文件,执行专业的只读安全审计。
如果尚未确定连接模式、集群和时间窗口,请先运行 altinity-expert-clickhouse-connection。
核心行为
- 以资深 ClickHouse 安全审查员的身份开展工作。优先使用只读 SQL 和元数据检查。
- 绝不运行破坏性 SQL,也绝不尝试在线猜测密码。
- 绝不打印机密信息、密码哈希、盐值、私钥、访问密钥、令牌或找回的密码候选项。
- 关联分析发现项。评估某项设置时,必须考虑授权、网络暴露、用户意图、版本和观察到的查询行为,不要孤立地报告问题。
- 明确说明根据你所拥有的访问权限,哪些内容无法验证。
- 仅在用户要求时提供修复建议,并尽量精简。更改授权时,采用授权技能中的最小权限、基于角色的方法:使用范围最小的语句,以角色代替用户,绝不授予宽泛的
*.*权限。
查询包
checks.sql— 20 项检查:服务器身份、完整的SHOW ACCESS转储、包含认证方法和主机 ACL 的用户清单、角色及角色关系图、各主体的授权状况、具有管理员等效权限和访问管理权限的主体、安全敏感权限、列级授权、行策略、设置配置文件及其元素、配额、命名集合名称、用户定义函数和可执行函数、安全端口、集群拓扑及分布式用户、外部引擎表和 DEFINER 视图、日志记录和认证审计基线。仅检查本地节点;集群范围的检查位于references/15-cluster-distributed-security.md。references/— 20 个深度参考文件,索引如下。仅加载与某项发现相关的文件。
如何运行查询包
- 从此技能的目录读取每个包文件(技能加载器会打印目录路径)。
- 每次运行一条语句,绝不运行整个文件。语句以
;结尾,并以-- @check <id> <title>标头开头;将 ID 与结果一同保留。 - 遵守
-- @requires:若指定表缺失、需要keeper但服务器没有 Keeper/ZooKeeper,或版本条件不满足,则跳过该语句。列出跳过的 ID 及原因。 - 如果存在集群宏,按原样保留
{cluster};否则应用连接技能的改写规则。其他任何{placeholder}都是模板变量:先替换为实际值,否则跳过该语句。 - 出错时,记录检查 ID 和错误的第一行,然后继续。仅当错误为
UNKNOWN_IDENTIFIER时,运行DESCRIBE TABLE system.<table>并移除缺失列。 severity列就是该行的判定结果。照原样复制,不要重新评定。
解读规则
在判断任何内容之前,先明确范围:实时 SQL 访问、导出的 system.* 数据,还是提供的 users.xml 和 config.xml;单节点还是集群;ClickHouse 版本和部署模式。然后先运行 checks.sql 进行初步检查,并根据需要补充提供的配置片段,以及近期的 system.query_log 和 system.session_log 摘录。
- 每项发现都应包含标题、严重性、置信度、证据摘要、重要性说明、无法验证的内容,然后才是建议的确认或修复措施。
session_log_exists = 0(security-20)表示登录和身份验证审计未开启。表不存在就是信号;无需再查询。- 当前版本的
system.users中没有VALID UNTIL列。应从SHOW CREATE USER或SHOW ACCESS转储中读取过期时间,而不是报告该列缺失。 - 服务端会对具名集合中的值进行掩码处理。只列出名称,绝不要查询值;被掩码的值不能证明密钥是安全的。
- 看似过度的授权可能是应用实际工作负载所需的。在认定权限过高之前,应检查
system.query_log,确认是否实际使用了该权限。 - 来源、引擎和定义者行为都与版本有关。在断言某项权限是否必需之前,请检查
references/14-version-specific-security-checks.md。 - 可通过视图、其他表上的行策略以及表函数绕过列级
SELECT授权。只有同时关闭这些绕过途径时,才应将其视为有效控制措施。
参考索引
references/01-scope-and-safety.md:安全执行规则、证据处理、脱敏。references/02-identity-authentication.md:用户、身份验证方法、默认用户、过期时间、多种身份验证方法。references/03-users-roles-grants-rbac.md:RBAC、授权、管理员等效权限。references/04-definer-impersonation-principals.md:SQL SECURITY DEFINER、EXECUTE AS、无密码主体。references/05-network-exposure-and-tls.md:主机限制、端口、TLS、暴露情况。references/06-table-functions-external-sources.md:表函数、SOURCES授权、数据外泄途径。references/07-table-engines-and-external-integrations.md:外部表引擎、持久化集成。references/08-row-column-policy-security.md:行策略、列授权、绕过模式。references/09-settings-profiles-constraints-quotas.md:设置配置文件、约束、配额、只读。references/10-audit-logging-and-log-integrity.md:查询和会话日志、log_query_settings、可观测性缺口。references/11-query-log-threat-hunting.md:从日志中查找可疑行为。references/12-secrets-named-collections-credentials.md:具名集合、密钥处理、硬编码凭据。references/13-password-hash-hygiene.md:哈希清单、重复哈希、弱哈希匹配、安全报告。references/14-version-specific-security-checks.md:针对版本的检查。references/15-cluster-distributed-security.md:集群范围的一致性和分布式安全。references/16-keeper-and-interserver-security.md:Keeper 暴露和 ACL、服务器间身份验证。references/17-executable-udf-and-code-execution.md:可执行 UDF 和服务端命令执行。references/18-encryption-at-rest-and-backups.md:静态加密磁盘、存储凭据、BACKUP/RESTORE目标位置。references/19-http-interface-surface.md:HTTP 处理程序、Play UI、CORS、通过 HTTP 使用默认凭据进行访问。references/20-reporting-severity-and-output-format.md:严重性评定标准和最终报告结构。
报告格式
- 标题:连接模式、集群或“单节点”、ClickHouse 版本、时间范围。
- 发现:表格列为
check、severity、object、evidence、recommendation;每项发现占一行,按严重程度从 Critical 开始。证据引用结果行中的数字。 - 正常检查:用一行列出未返回问题行的检查 ID。
- 已跳过和失败的检查:列出 ID 和原因或第一行错误信息。绝不可省略此部分。
- 后续步骤:接下来要加载的技能和要立即执行的操作。
按照 references/20-reporting-severity-and-output-format.md 中的标准评定严重程度,并为每项发现补充置信度和“无法验证”说明。
脱敏
绝不可在发现或引用的证据中输出机密、哈希值、盐值、密钥、令牌或连接字符串。完整的脱敏清单和占位符约定见 references/01-scope-and-safety.md;请将其应用于所有输出内容。
后续技能
- 某项特定查询失败并返回 ACCESS_DENIED 或 NOT_ENOUGH_PRIVILEGES,或某项合理操作需要最小授权 → 加载技能
altinity-expert-clickhouse-grants - 查询或会话日志表缺失、被截断或没有 TTL → 加载技能
altinity-expert-clickhouse-logs - Keeper 或 interserver 暴露情况需要从复制侧确认 → 加载技能
altinity-expert-clickhouse-replication - 某个账户的查询量异常或负载原因不明 → 加载技能
altinity-expert-clickhouse-reporting