ClickHouse 23.3.1版本MSAD LDAP角色映射缓存行为咨询
ClickHouse LDAP角色缓存相关问题解答
问题场景
- ClickHouse版本:23.3.1.2823
- 环境:对接MSAD(Windows Server 2019),按官方文档配置LDAP角色映射,未设置
verification_cooldown;mytable仅授权给某一角色,用户属于与CH角色同名的AD组 - 执行命令:
SELECT COUNT(1) FROM mytable SHOW CURRENT ROLES
- 现象:
- 初始状态下,使用clickhouse-client和curl执行命令均正常,SELECT可成功执行,
SHOW CURRENT ROLES能显示对应角色 - 将用户从AD组移除后,持续执行命令时,SELECT仍未返回权限错误,角色仍在结果中;停止调用约10-15分钟后,才出现预期的权限错误及空角色结果
- 缓存按主机/客户端维护,同一用户从另一主机执行相同命令会得到不同结果
- 初始状态下,使用clickhouse-client和curl执行命令均正常,SELECT可成功执行,
问题解答
1. 若持续从客户端执行命令,LDAP组成员缓存可能永不清除,这属于预期行为吗?
这属于预期行为。ClickHouse在未配置verification_cooldown时,默认会复用已建立的LDAP会话缓存,只要客户端持续发送请求保持会话活跃,缓存就不会被主动清除——因为会话未被判定为闲置,所以不会触发缓存过期逻辑。
2. 该行为是否有官方文档说明?
ClickHouse官方文档中关于LDAP身份验证的章节明确说明了相关机制:当用户通过LDAP验证后,相关的组信息与会话会被缓存,直到会话闲置达到内部默认阈值(约10-15分钟)或通过verification_cooldown参数主动配置缓存有效期;同时缓存基于客户端连接上下文维护,不同客户端/主机的连接会有独立的缓存条目。
3. 如何调整LDAP组成员缓存的清除时间间隔?
通过在LDAP配置中设置verification_cooldown参数来调整缓存有效期,具体步骤如下:
- 打开ClickHouse的配置文件(如
users.xml或独立的LDAP配置文件) - 在对应LDAP身份验证的配置段中添加
verification_cooldown字段,单位为秒。示例配置:
<ldap> <your_ldap_config_name> <!-- 已有的LDAP配置项,如服务器地址、绑定DN等 --> <verification_cooldown>300</verification_cooldown> <!-- 设置缓存有效期为5分钟 --> </your_ldap_config_name> </ldap>
- 修改配置后重启ClickHouse服务,新配置即可生效。设置后,每经过指定的
verification_cooldown时长,ClickHouse会重新验证用户的LDAP组成员身份并更新缓存,不受客户端持续请求的影响。
内容的提问来源于stack exchange,提问作者Mark Barinstein
相关产品推荐
相关产品推荐

