Skip to content

委托令牌

RobustMQ Kafka 实现了委托令牌(Delegation Token,KIP-48)的元数据管理接口:CreateDelegationToken / RenewDelegationToken / ExpireDelegationToken / DescribeDelegationToken

现状(务必留意):这是纯元数据管理。令牌的 HMAC 不参与认证 —— Broker(以及其它任何路径)都不会在认证时校验令牌 HMAC。SASL 目前只支持 SCRAM,不存在基于委托令牌的认证机制。因此这些接口用于协议兼容的令牌生命周期管理,但令牌本身当前不能用来登录。

行为要点

方面说明
签名密钥Broker 自动生成 32 字节随机密钥,存入 meta-service 资源配置并跨节点共享
HMACHmacSha256(secret, token_id) 计算,仅作为 Renew/Expire 的查找键与响应回显
归属请求者固定为占位主体 User:ANONYMOUS(无 principal 鉴权);未显式指定 owner 时归属回落到请求者
校验Renew/Expire 仅按提交的 HMAC 定位令牌,不校验调用者是否为 owner/renewer
过期回收后台回收器每 60 秒清理超过 max_timestamp_ms 的令牌

CLI 示例

在 secure(SASL 开启)模式下,kafka-delegation-tokens.sh 需要 --command-config 指定 SASL 配置:

bash
# 创建令牌
kafka-delegation-tokens.sh --bootstrap-server localhost:9092 \
  --command-config client-sasl.properties \
  --create --max-life-time-period -1

# 查询
kafka-delegation-tokens.sh --bootstrap-server localhost:9092 \
  --command-config client-sasl.properties --describe

# 续期 / 过期
kafka-delegation-tokens.sh --bootstrap-server localhost:9092 \
  --command-config client-sasl.properties \
  --renew --renew-time-period -1 --hmac <HMAC>

令牌元数据同样经 Raft 持久化并广播到各 Broker 缓存(见 安全总览)。

限制小结

限制说明
不参与认证令牌 HMAC 不用于登录,无 SASL/SCRAM 委托令牌重认证流程
无归属鉴权归属固定 User:ANONYMOUS;续期/过期不校验调用者身份
纯元数据仅提供令牌的创建/续期/过期/查询与自动回收
🎉 既然都登录了 GitHub,不如顺手给我们点个 Star 吧!⭐ 你的支持是我们最大的动力 🚀