Kafka 未授权访问是什么样
Kafka 早期部署常默认不开启认证:只要能连上代理端口,就可以列出主题、查看分区、消费消息甚至投递数据。它承载的多是业务事件流,包含订单、行为与同步数据。检查的核心是三件事:监听配置暴露给了谁、是否启用认证机制、是否用授权列表限制主题级访问。
基本信息
| 服务端口 | 客户端默认 9092,含 TLS 与 SASL 的部署端口不同 |
|---|---|
| 监听配置 | 监听地址与对外广播地址决定暴露范围 |
| 认证方式 | 常用 SASL 机制,集群内部通信需单独配置 |
| 授权 | 主题级授权列表,用于限制读写范围 |
| 判定信号 | 无凭据即可获取主题元数据 |
典型使用场景
- 内网数据流盘点:确认哪些集群未启用认证
- 数据面评估:结合主题内容判断泄露影响范围
- 迁移核查:集群迁移过程中是否短暂放宽了访问控制
- 自查复核:验证开发声称已启用认证的集群现状
- 报告取证:只保留元数据层面的证据,不消费业务消息
只读检查示例
只读检查示例
# 能列出主题即说明未授权可访问元数据
kafka-topics.sh --bootstrap-server 10.0.20.9:9092 --list 2>&1 | head
# 记录主题数量与命名,不消费任何消息
# 集群有多个节点时逐个确认,避免只测一个入口
# 启用认证的集群会返回认证失败,这本身就是可用的对照结论检查项与判定
| 检查项 | 正常情况 | 异常信号 |
|---|---|---|
| 监听与广播地址 | 仅业务网段可达 | 对外或办公网可达 |
| 客户端认证 | 启用认证机制 | 无凭据即可获取元数据 |
| 主题授权 | 按业务划分读写范围 | 任意账号可读写全部主题 |
| 集群内部通信 | 单独配置并隔离 | 与客户端端口混用且暴露 |
| 运维工具端口 | 不对业务网段开放 | 管理类接口可被业务网段访问 |
消息内容常包含业务事件与个人数据:定级时要结合主题内容与数据流影响面,而不是只看能否连接。
不要消费真实业务消息作为证据:元数据层面的未授权访问已经足以说明问题,消费消息会触碰数据红线。