写点什么

Netflix:微服务架构中的应用程序 DDoS 防护

  • 2017-08-03
  • 本文字数:1188 字

    阅读完需:约 4 分钟

日前,Netflix 发布了一篇博文,阐述了在微服务架构中缓解应用程序 DDoS 攻击的策略。该博文概要阐述了如何识别触发这种攻击的请求,如何使用开源的 Repulsive Grizzly Cloud Kraken 框架进行测试,最后,还提供了保护系统的一些最佳实践。

Netflix 应用程序安全专家 Scott Behrens 与产品和应用程序安全主管 Bryan Payne 首先指出,微服务架构特别容易受到应用程序 DDoS 攻击,这是因为频繁的 API 调用会导致服务周围产生多个网络跳跃( network hops),很容易导致系统攻击自身:

“微服务架构中的单一请求可能会生成数以万计的复杂中间层和后端服务调用。”

这些应用程序 DDoS 攻击带来的第一个挑战是识别。有些看起来像是用户合法的 API 调用,当这种调用即将引发大量内部资源消耗时,如何及时检测出来?

他们列出的首要策略之一就是确定 API 调用需要多长时间。这里我们不会监控前端的请求时间,这有可能会带来误报,监控后端服务的请求时间更为有利。然后对这些请求进行逆向工程,以确定哪种原始 API 调用可能会触发它。

当开发人员找寻出这些 API 调用时,它是一个查看请求本身的过程,并找出可以使其更为耗时的方法。比如,我们可以扩大搜索请求中的范围参数,以获得更大的结果集。在确定是否找到了正确的请求时,可以使用错误指示器(indicator),比如速率限制和异常,或简单地增加延迟。

一旦开发人员确定了这些请求,我们建议使用 Repulsive Grizzly (一个应用层 DDoS 测试框架)来运行它们。它并非一个识别工具,它会针对被测系统触发这些请求,从而提供了一种简化测试过程的方法。

他们还引入了 Cloudly Kraken,这是一个开源的 AWS 测试工具,有助于在全球范围内协调测试运行。这是通过管理一组可扩展的跨区域 AWS 实例完成的,每个实例都运行 Repulsive Grizzly 测试套件。它还提供时间同步功能,确保测试并行运行。

一旦请求被识别并通过测试验证,我们会建议采取以下缓解策略:

  • 生成这样的一种架构,最大限度减小微服务之间的依赖关系。如果一个服务失败,理想状况下,它应该实现故障隔离,而不会影响其他服务。
  • 了解服务队列和服务请求。例如,限制批量大小或请求的对象。
  • 提供从后端服务到 Web 应用程序防火墙的反馈环路。这为它提供了在 API 调用时下游资源利用率的额外信息,在很多 Web 应用程序防火墙的部署中,它只会监控边缘(edge)服务器,无法得到请求对 API 网关的影响。
  • 监视缓存未命中,多数情况下可能是因为高速缓存未正确配置。
  • 利用客户端的各种弹性模式,如断路器和超时设定。

完整的博文可以点此处在线阅读,在文章中作者通过案例研究深入分析了该主题。

查看英文原文: Netflix: Application DDoS Protection in Microservice Architectures


感谢张卫滨对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

2017-08-03 19:002142
用户头像

发布了 375 篇内容, 共 191.0 次阅读, 收获喜欢 947 次。

关注

评论

发布
暂无评论
发现更多内容

在 IDEA 里下个五子棋不过分吧?

沉默王二

Java Netty IDEA idea插件 idea plugin

mysql进阶(八)排序问题方案探究

No Silver Bullet

MySQL 排序 中文编码 7月月更

java零基础入门-java8新特性(完结篇)

喵手

Java 7月月更

h5实现一个刮刮卡的动画效果

南极一块修炼千年的大冰块

7月月更

面对复杂问题时,系统思考助你理解问题本质

阿里技术

系统性思考 复杂事件处理 业务逻辑

【深度】新派LaaS协议Elephant:重振DeFi赛道发展的关键

股市老人

如何设计自动化测试case?

老张

自动化测试

Unity实战问题-WebGL问题集锦-下篇

芝麻粒儿

android Unity 7月月更

算法题每日一练---第2天:棋盘放麦子

知心宝贝

算法 前端 后端 7月月更

【LeetCode】数组能形成多少数对Java题解

Albert

LeetCode 7月月更

Qt播放音视频文件报错DirectShowPlayerService::doRender: Unresolved error code 0x80040266

小肉球

qt 7月月更

STM32+BH1750光敏传感器获取光照强度

DS小龙哥

7月月更

Qt | 通过创建一个简单项目了解Qt Creator

YOLO.

qt Qt Creator 7月月更

C# 基于MessageBox类的消息对话框讲解

IC00

C# 7月月更

拷贝构造函数剖析【C++】

攻城狮杰森

c++ 7月月更 拷贝构造函数

查找——B+树

乔乔

7月月更

直播短视频源码——直播短视频源码的开发步骤顺序五步走

开源直播系统源码

软件开发 直播系统源码 开源源码 短视频直播源码

Android root相关调研

沃德

android 程序员 7月月更

LeetCode-101. 对称二叉树(java)

bug菌

Leet Code 7月月更

C#入门系列(二十四) -- 密封类和静态类

陈言必行

7月月更

strcpy()

謓泽

7月月更

vivo官网APP全机型UI适配方案

vivo互联网技术

App UI

Qt|使用Http通讯下载页面实时显示

中国好公民st

qt 7月月更

OneFlow v0.8.0正式发布

OneFlow

版本更新

分享5个Vue开发小技巧

程序员海军

Vue 7月月更

DeFi 2.0的LaaS协议Elephant,重振DeFi赛道发展的关键

鳄鱼视界

产品思维助力研发管理工具建设

研发管理Jojo

产品思维 研发管理工具 用户旅程 协同共创

iOS 内存管理(基本概念及引用计数)

NewBoy

ios 前端 移动端 iOS 知识体系 7月月更

CSS动画篇之404动画

南城FE

CSS 前端 7月月更

【深度】新派LaaS协议Elephant:重振DeFi赛道发展的关键

西柚子

Netflix:微服务架构中的应用程序 DDoS 防护_架构_Andrew Morgan_InfoQ精选文章