告警配置通知过程中,使用了企微的群消息通知,获得webhookUrl之后,取其中的key或者整个链接进行了配置。想到,好像一直没有仔细了解过这个机制,为什么单独一个webhook URL就能直接实现web应用-->APP应用内群消息的推送呢?

webhook的定义和来源

Webhook 是一种事件驱动的轻量级通信,可通过 HTTP 在应用之间自动发送数据。Webhook 由特定事件触发,可自动实现 应用编程接口(API)之间的通信,并可用于激活工作流,例如在 GitOps 环境中。

Webhook 可以将事件源连接到自动化解决方案,因此,它可以用来启动事件驱动型自动化以便在发生特定事件时执行各种 IT 操作。

几个要点

最重要的理解

更底层的理解

  1. webhook的设计,目的是,成为某种基础设施
  2. 能够媲美UNIX中简单命令+管道组合实现复杂功能的能力;web场景下,各种web资源是简单命令,管道是API+webhook
  3. 不同点在于,UNIX中,是线性的命令组合;web场景是无状态的网状结构。

企微的webhook实现和安全风险探讨

看到仅使用固定URL进行webhook通信,并进行群内通知,产生两个疑问:

  1. 如何实现的群内通知
  2. 安全性怎么保证

简单AI调用和官方文档,大致了解了一下:

实现群内通知

  1. 验证key有效性
  2. key拦截校验
  3. 解析消息体
  4. key和企业、群的映射
  5. 消息推送

应该是非常常规的流程了,没有什么花活吧,也许。

安全性分析

  1. 主要风险
  1. 企业微信官方的安全警告

    企业微信官方文档特别强调:"特别特别要注意:一定要保护好消息推送的webhook地址,避免泄漏!不要分享到github、博客等可被公开查阅的地方,否则坏人就可以用你的消息推送来发垃圾消息了。"

所以就是,使用方(其实是作为服务端的用户们)自己负责,出现安全问题,也是用户受到影响;企微自己是不会有事的。

参考