Skip to content

大量 ACL 拒绝告警处理指南

大量 ACL 拒绝告警表示在部署中,客户端在短时间内访问主题时,未通过 ACL 权限校验而被拒绝。该告警在以下条件下触发:

  • 过去 30 分钟内授权总次数 ≥ 1800,且
  • 过去 30 分钟内授权失败比例 > 0.5

该情况通常意味着客户端访问行为存在异常,可能影响正常的业务接入。常见问题包括 ACL 规则配置错误、客户端访问了未授权的主题、大量非法访问尝试,或外部授权服务异常。

客户端访问未授权主题

问题描述

在部署中,如果某些客户端在订阅或发布消息时频繁触发 ACL 拒绝,且失败行为集中在固定的主题范围内,则可能是客户端访问了未被 ACL 规则允许的主题。

常见原因

  • ACL 规则未放行客户端实际使用的业务主题。
  • ACL 策略发生变更后,客户端侧未按要求同步修改配置。

处理方法

  • 检查 ACL 规则配置,确认合法客户端所需的订阅和发布主题已被正确放行。
  • 在发布或调整 ACL 策略前,先进行灰度发布或测试验证,避免策略变更对业务造成集中影响。

非法客户端访问尝试

问题描述

如果在短时间内出现大量 ACL 授权失败请求,且这些请求来自异常客户端或非业务来源,则可能存在非法客户端访问尝试。

在 ACL 授权失败日志中,若发现来源 IP 高度集中且不属于业务访问范围,或出现大量陌生 Client ID 尝试访问随机主题,则通常符合此类情况。

常见原因

  • 恶意客户端尝试接入 EMQX 部署。
  • 使用无权限的 Client ID 或凭证,频繁尝试订阅或发布主题。

处理方法

  • 查看部署日志,定位触发 ACL 拒绝的客户端 ID、来源 IP 和用户名等信息。
  • 基于 Client ID 或 IP 配置黑名单,阻断异常来源的客户端访问。
  • 结合实际安全需求,调整和加强认证机制(如用户名密码、JWT、TLS 双向认证),进一步提升整体安全性。

外部授权服务异常

问题描述

当使用 HTTP API、数据库或 LDAP 等外部 ACL 授权服务时,如果外部服务出现延迟或故障,可能导致原本合法的客户端授权失败,从而触发大量 ACL 拒绝告警。

在监控中,如果 ACL 授权失败率的上升与外部服务超时或错误率上升同步发生,则通常可以判断为外部授权服务异常。

常见原因

  • 外部 ACL 授权服务不可用或响应异常。
  • 外部服务负载过高,导致请求超时或失败。

处理方法

  • 检查外部 ACL 授权服务的运行状态和相关日志,确认是否存在异常。
  • 在 EMQX 中配置合理的超时与重试策略,降低瞬时波动对授权结果的影响。
  • 调整外部 ACL 服务的连接池大小,提高并发处理能力和整体吞吐性能。

排查步骤

  1. 登录 EMQX Cloud 控制台,进入部署日志页面,查看 ACL 相关日志,确认是哪些客户端、哪些主题触发了授权失败。

  2. 进入部署告警页面,确认 ACL 拒绝告警的触发时间范围及其影响范围。

  3. 使用 MQTTX 等客户端工具,模拟一个或多个客户端的订阅和发布行为,尝试复现 ACL 授权失败问题。

  4. 如果使用了外部 ACL 授权服务,检查该服务的运行日志和健康状态,确认是否存在延迟或异常。

告警影响说明

  • 大量 ACL 拒绝告警不会导致部署停止或产生计费变化。
  • 如果告警持续触发,说明客户端访问逻辑或 ACL 策略可能存在问题,可能影响正常业务消息的收发。
  • 建议在告警触发后及时排查并修复 ACL 配置或客户端接入逻辑,以保障业务的稳定性。