【Atlas】Atlas Hook 消费 Kafka 报错:GroupAuthorizationException

Atlas Hook 消费 Kafka 报错:GroupAuthorizationException

一、问题现象

Atlas 启动后,NotificationHookConsumer 线程持续报错,典型信息是:

  • GroupAuthorizationException: Not authorized to access group: atlas
  • 日志刷屏式重试,说明消费者在 加入/描述消费组阶段就被拒绝(还没进入稳定消费流程)
bash 复制代码
2026-01-24 18:12:22,523 [index-health-monitor] INFO [AtlasJanusGraphIndexClient.java:98] indexBackEnd=solr; isHealthy=true
2026-01-24 18:12:29,138 [NotificationHookConsumer thread-0] WARN [NotificationHookConsumer.java:635] Exception in NotificationHookConsumer
org.apache.kafka.common.errors.GroupAuthorizationException: Not authorized to access group: atlas
2026-01-24 18:12:40,642 [NotificationHookConsumer thread-0] WARN [NotificationHookConsumer.java:635] Exception in NotificationHookConsumer
org.apache.kafka.common.errors.GroupAuthorizationException: Not authorized to access group: atlas
2026-01-24 18:12:52,527 [index-health-monitor] INFO [AtlasJanusGraphIndexClient.java:98] indexBackEnd=solr; isHealthy=true
2026-01-24 18:12:52,646 [NotificationHookConsumer thread-0] WARN [NotificationHookConsumer.java:635] Exception in NotificationHookConsumer
org.apache.kafka.common.errors.GroupAuthorizationException: Not authorized to access group: atlas
2026-01-24 18:13:05,150 [NotificationHookConsumer thread-0] WARN [NotificationHookConsumer.java:635] Exception in NotificationHookConsumer
org.apache.kafka.common.errors.GroupAuthorizationException: Not authorized to access group: atlas
2026-01-24 18:13:18,153 [NotificationHookConsumer thread-0] WARN [NotificationHookConsumer.java:635] Exception in NotificationHookConsumer
org.apache.kafka.common.errors.GroupAuthorizationException: Not authorized to access group: atlas
2026-01-24 18:13:22,532 [index-health-monitor] INFO [AtlasJanusGraphIndexClient.java:98] indexBackEnd=solr; isHealthy=true
2026-01-24 18:13:31,656 [NotificationHookConsumer thread-0] WARN [NotificationHookConsumer.java:635] Exception in NotificationHookConsumer
org.apache.kafka.common.errors.GroupAuthorizationException: Not authorized to access group: atlas
2026-01-24 18:13:45,659 [NotificationHookConsumer thread-0] WARN [NotificationHookConsumer.java:635] Exception in NotificationHookConsumer
org.apache.kafka.common.errors.GroupAuthorizationException: Not authorized to access group: atlas
2026-01-24 18:13:52,536 [index-health-monitor] INFO [AtlasJanusGraphIndexClient.java:98] indexBackEnd=solr; isHealthy=true
2026-01-24 18:14:00,162 [NotificationHookConsumer thread-0] WARN [NotificationHookConsumer.java:635] Exception in Notifi

现象要点

  • 报错资源是 GROUP(consumer group),不是 TOPIC。
  • 只要 group 被拒绝,客户端会在 JoinGroup/DescribeGroup 等阶段失败,表现为线程持续重试、告警持续出现。
  • 这类错误在 Atlas 侧常见伴随现象是:Hook 侧"看似在跑",但事件消费链路不稳定或长期无有效消费。

二、先确认 Atlas 的 Kafka 配置入口

Atlas 的 Kafka 客户端配置统一在:

bash 复制代码
/etc/atlas/conf/atlas-application.properties

核对思路

这里不去"猜策略",先把基础事实确认清楚,后面每一步才不会跑偏:

  1. Kafka 访问路径:Atlas 连接 Kafka 的入口(broker/zk)是否与当前集群一致。
  2. 鉴权方式:是否启用 Kerberos(SASL/GSSAPI)以及 Atlas 客户端走的机制。
  3. 客户端身份:Atlas 进程实际使用的 principal 必须与授权主体一致,否则策略配得再全也不会命中。
    常见偏差点
  • Atlas 服务配置里写的是 atlas/_HOST@REALM,但实际运行时落地到某台机器(例如 dev2)后,真实身份会变成 atlas/dev2@REALM
  • Ranger 里选用户时,如果授权给的是短名 atlas,但插件侧按 Kerberos principal 解析出来的主体不一致,也会造成"策略看着对,实际不生效"。

三、第一步尝试:用 kafka-acls.sh 直接补 Group ACL

当日志直接提示 Not authorized to access group: atlas,优先补齐 consumer group=atlas 的 ACL,用来验证 Kafka

原生鉴权维度本身是否缺失。

这里给 atlas/dev2@TTBIGDATA.COM 添加 group=atlas 的 READDESCRIBE

bash 复制代码
/usr/bigtop/current/kafka-broker/bin/kafka-acls.sh \
  --authorizer-properties zookeeper.connect=dev1:2181,dev2:2181,dev3:2181 \
  --add \
  --allow-principal "User:atlas/dev2@TTBIGDATA.COM" \
  --group atlas \
  --operation Read \
  --operation Describe
  
  
  
  ##  结果是
  [root@dev1 bin]# /usr/bigtop/current/kafka-broker/bin/kafka-acls.sh \
>   --authorizer-properties zookeeper.connect=dev1:2181,dev2:2181,dev3:2181 \
>   --add \
>   --allow-principal "User:atlas/dev2@TTBIGDATA.COM" \
>   --group atlas \
>   --operation Read \
>   --operation Describe
Adding ACLs for resource `ResourcePattern(resourceType=GROUP, name=atlas, patternType=LITERAL)`: 
        (principal=User:atlas/dev2@TTBIGDATA.COM, host=*, operation=READ, permissionType=ALLOW)
        (principal=User:atlas/dev2@TTBIGDATA.COM, host=*, operation=DESCRIBE, permissionType=ALLOW) 

Current ACLs for resource `ResourcePattern(resourceType=GROUP, name=atlas, patternType=LITERAL)`: 
        (principal=User:atlas/dev2@TTBIGDATA.COM, host=*, operation=READ, permissionType=ALLOW)
        (principal=User:atlas/dev2@TTBIGDATA.COM, host=*, operation=DESCRIBE, permissionType=ALLOW) 

::: danger 处理办法可参考

22208:解决办法
:::

2、策略生效与现象回归

修改完策略后,重启 atlas-server,报错消失;同时 Ranger 拒绝记录不再出现。

结果确认

  • Atlas 侧 NotificationHookConsumer 不再刷 GroupAuthorizationException
  • Ranger 审计中与 consumer group=atlas 相关的 deny 记录停止新增
  • Hook 消费链路恢复后,Atlas 的 Kafka 消费线程进入稳定状态
相关推荐
YaBingSec1 小时前
玄机网络安全靶场:Hadoop YARN ResourceManager 未授权 RCE WP
大数据·数据库·hadoop·redis·笔记·分布式·web安全
空中海2 小时前
第六篇:可靠性篇 — Sentinel 熔断限流与 Seata 分布式事务
分布式·sentinel
rustfs2 小时前
MinIO 国产平替,RustFS 发布 Beta 版本啦
分布式·docker·云原生·rust·开源
Mr_sst4 小时前
文件上传并发控制:为什么选Redisson可过期信号量?(避坑指南)
网络·数据库·redis·分布式·安全架构
深念Y4 小时前
当加密遇见分布式:Web3、去中心化与元宇宙的底层逻辑
分布式·web3·去中心化·区块链·元宇宙·加密·价值
运维老司机4 小时前
Kafka 单节点部署(Docker Compose + 数据持久化)
分布式·docker·kafka
byoass4 小时前
企业云盘全文检索实战:Elasticsearch集成与分布式搜索
网络·分布式·安全·elasticsearch·云计算·全文检索
JAVA面经实录9175 小时前
如何选择适合项目的「限流 / 熔断 / 降级」方案
java·spring·kafka·sentinel·guava
Volunteer Technology6 小时前
Elasticsearch分布式原理
大数据·分布式·elasticsearch
Java开发的小李13 小时前
SpringBoot + Redis 实现分布式 Session 共享(解决多实例登录状态丢失问题)
spring boot·redis·分布式