投产前检查清单(Go-Live-Checklist)

在实施了API管理平台(APIM)以后,即将进入生产环境的时候,通常我们需要做一些检查和准备,因为生产环境的可能遇到更多的问题与挑战。

问题与挑战

首先我们来了解生产APIM平台面对的问题与挑战:

  • 匿名访问。大多数的APIM都是对互联网开放的,互联网通常会有很多匿名访问,其中最常见的是网络爬虫。互联网流行的说法是“整个网络上大概40%的流量是机器人流量”。爬虫一方面有可能获取系统信息,一方面有些爬虫的行为是在扫描目标系统,为进一步的非授权行为(包括攻击)做准备
  • 窃取数据。因为APIM的开放性,未经授权的数据获取是一个常见问题。大概可以分为几个类别:开放数据的非授权获取,比如API本身是开放的,但是大量的获取数据用于经营或者非法目的; 授权数据的非法获取,包括盗用其他用户的身份信息后伪装成其他用户获取; 权限问题导致的非法获取,比如权限设置错误,导致用户可以访问本不应该访问的数据
  • 暴力破解。有些API本身没有采用任何的保护措施(比如token/用户密码等); 或者保护非常弱,比如输入快递单号和收件人电话就可以查询运单信息
  • 流量的增长。大多数APIM平台在投产后,都会发现流量增长是超过预期的,如何应对增长,是一个重要的话题
  • DDoS。因为竞争对手的原因,或者勒索等,犯罪集团会尝试用海量请求来瘫痪目标系统,APIM通常都会成为这类目标
  • 注入攻击。主要是跨站脚本和SQL注入
  • 中间人攻击。主要是链路中的设备尝试拦截数据,造成数据泄漏
  • 参数篡改和重放攻击。在一个有效的请求基础上,通过修改参数,构建非法的访问请求,也是一种常见的信息窃取手段

防范与应对

防范和应对分为技术手段和管理手段。

管理手段一般包括:

  • 特定的团队,通常叫做“安全应急相应团队”。名正才能言顺,安排特定的人员,并且赋予特定的权力,提供必要的工具,是恰当应对信息安全的基础
  • 流程。一定的流程,包括正常工作流程和意外发生时的应对流程,包括汇报、断网、封号等
  • 必要的SLA。安全团队需要向管理团队承诺一些必要的SLA,并基于此获得相应的资源

技术手段主要包括:

  • 避免匿名访问。所有的请求都要求验证一些基本的访问控制信息,比如token
  • 权限的设定。确保用户所拥有的权限是最小范围的
  • 限速。通常我们需要为所有的API设定某种限速策略,一方面避免DDoS攻击,一方面在发生意外时候,可以获得处理时间
  • 入侵检测。因为APIM通常承载巨大的商业价值,所以成为入侵目标是不可避免的。入侵检测是系统工程,通常由安全团队主导; APIM平台需要作为安全事件源提供数据
  • 非法访问处理。应该记录所有的非法访问以及试图非法访问,用于防护策略的更新以及升级安全级别
  • 设定保护目标与策略。除了通用的防范和保护手段,需要针对特定的目标,设置特定的包括策略
  • 构建“零信任(Zero Trust)”体系

检查清单

针对这些常见的问题,一般我们用如下的检查清单来准备工作:

  • 是否存在可以匿名访问的API

Tips: 尽可能的不要提供完全没有访问控制的API; 即使希望开放访问的,也建议采用简单的认证方式,比如Token认证

  • 是否可以通过设置来源IP、用户代理等特征信息做基本的访问控制

Tips: 如果API需要用特定的SDK访问,那么可以在访问控制中用UA做限定,这样可以屏蔽多数爬虫;但是需要知道,这种办法不能防止恶意构造的请求,因为UA是可以设定的。 Tips: 如果API是从有限的来源地址请求的,比如从特定的合作伙伴数据中心,那么可以通过设置IP限制来屏蔽多数“不请自来”的匿名访问

  • 对于给定的API,是否有访问量上的估算

Tips: 对于API的访问量进行预估,然后设置一个限速; 然后监控访问量的上升趋势,来调节这个速率。没有速率限制的API很容易为攻击提供便利

  • API采用了什么样的身份验证机制和授权机制

Tips: 尝试所有的API都要求某种身份验证机制,即使是最简单的。同时在授权方面,构建“最小化权限”的访问控制模型,只对必要的用户提供必要的访问权限

  • API是否采用了某种加密机制

Tips: 除了链路加密以外(HTTPS),可以对特定信息进行加密,比如涉及用户隐私信息的字段

  • 是否监控了API流量的增长速度

Tips:监控流量增长速度,并且根据已知的流量构建流量管理策略

  • 是否监控了错误访问记录

Tips: 建议对所有的错误请求进行监控,进而进行分析。比如如果有某些客户端频繁访问不存在的URI,比如/login.jsp不存在,但是有用户频繁尝试访问,这些都可以认为是暴力破解和恶意侵入的特征,需要对这些请求进行限制

  • 是否构建了和“安全相应中心”协调的机制

Tips: 建议API平台和安全响应中心联动,通过综合分析安全事件,来动态调节访问控制策略。比如某个IP尝试用不同的令牌访问系统,这是典型的暴力破解,需要把这些信息和安全中心联动,限制该IP或者用户(封IP或者封帐号)

  • 是否对成功访问请求进行了“异常分析”

Tips: 定期对成功访问请求进行分析,比如分析是否存在超常的response size,是否存在超常的response time,是否有特定的用户的访问频次远高于其他用户。这些分析可以发现“授权用户”的“非授权访问”。比如某个用户利用权限大量爬取数据(类似拖库)

进阶安全建议

在APIM体系中,入口的安全策略并不能总是满足安全需求,越来越多的企业开始构建Zero Trust的体系,把信息安全和保护拓展到整个数据传输链路。Google用7年时间构建了该类体系,可以作为参考。